From 3e1a8e4a9e5abcfc73e8424cc96e9bd3113660a7 Mon Sep 17 00:00:00 2001
From: Elmar Ludwig <elmar.ludwig@uni-osnabrueck.de>
Date: Thu, 14 Jul 2022 14:46:39 +0000
Subject: [PATCH] avoid use of `tfoot` in nested tables in MVV, fixes #90

Closes #90

Merge request studip/studip!812
---
 app/views/fachabschluss/kategorien/details.php              | 4 ++--
 app/views/fachabschluss/kategorien/index.php                | 2 +-
 app/views/module/module/details.php                         | 2 +-
 app/views/module/module/modulteil_lvg.php                   | 6 +++---
 app/views/studiengaenge/informationen/degree.php            | 2 +-
 app/views/studiengaenge/informationen/index.php             | 2 +-
 app/views/studiengaenge/stgteilbezeichnungen/index.php      | 2 +-
 .../studiengaenge/studiengaenge/stgteil_bezeichnungen.php   | 4 ++--
 app/views/studiengaenge/studiengaenge/studiengangteile.php  | 6 +++---
 app/views/studiengaenge/versionen/abschnitte.php            | 6 +++---
 app/views/studiengaenge/versionen/details_abschnitt.php     | 6 +++---
 resources/assets/stylesheets/less/mvv.less                  | 6 +++---
 resources/assets/stylesheets/less/tables.less               | 3 ---
 13 files changed, 24 insertions(+), 27 deletions(-)

diff --git a/app/views/fachabschluss/kategorien/details.php b/app/views/fachabschluss/kategorien/details.php
index 5bcb95429f0..87e6d97beb6 100644
--- a/app/views/fachabschluss/kategorien/details.php
+++ b/app/views/fachabschluss/kategorien/details.php
@@ -4,7 +4,7 @@
             <? if (count($perm_institutes) === 0
                 || array_intersect($perm_institutes, array_keys($abschluss->getAssignedInstitutes()))) : ?>
                 <tbody id="<?= $kategorie->id . '_' . $abschluss->id ?>"<?= MvvPerm::haveFieldPermPosition('AbschlussZuord', MvvPerm::PERM_WRITE) ? ' class="sort_items"' : '' ?>>
-                    <tr class="header-row">
+                    <tr class="header-row sort_item">
                         <td>
                             <?= htmlReady($abschluss->name) ?>
                         </td>
@@ -13,4 +13,4 @@
             <? endif; ?>
         <? endforeach; ?>
     </table>
-</td>
\ No newline at end of file
+</td>
diff --git a/app/views/fachabschluss/kategorien/index.php b/app/views/fachabschluss/kategorien/index.php
index 893f3ca6de2..effd06695f3 100644
--- a/app/views/fachabschluss/kategorien/index.php
+++ b/app/views/fachabschluss/kategorien/index.php
@@ -22,7 +22,7 @@
                 <? $abschluesse = $kategorie->abschluesse; ?>
                 <tbody id="<?= $kategorie->id ?>"
                        class="<?= count($abschluesse) ? '' : 'empty' ?> collapsed<?= $perm->haveFieldPerm('position') ? ' sort_items' : '' ?>">
-                    <tr class="header-row">
+                    <tr class="header-row sort_item">
                         <td class="toggle-indicator">
                             <? if (count($abschluesse) < 1): ?>
                                 <?= htmlReady($kategorie->name) ?>
diff --git a/app/views/module/module/details.php b/app/views/module/module/details.php
index e5ab93c4e49..5ae025a034c 100644
--- a/app/views/module/module/details.php
+++ b/app/views/module/module/details.php
@@ -8,7 +8,7 @@
             <? $perm = MvvPerm::get($modulteil) ?>
             <tbody class="<?= ($modulteil_id === $modulteil->getId() ? 'not-collapsed' : 'collapsed') ?><?= $perm->haveFieldPerm('position') ? ' sort_items' : '' ?>"
                    id="<?= $modulteil->getId() ?>">
-                <tr class="header-row">
+                <tr class="header-row sort_item">
                     <td class="toggle-indicator">
                         <? if (count($modulteil->lvgruppen) || $perm->haveFieldPermLvgruppen(MvvPerm::PERM_CREATE)) : ?>
                             <a class="mvv-load-in-new-row"
diff --git a/app/views/module/module/modulteil_lvg.php b/app/views/module/module/modulteil_lvg.php
index 238009c87f1..6c6d0718280 100644
--- a/app/views/module/module/modulteil_lvg.php
+++ b/app/views/module/module/modulteil_lvg.php
@@ -7,7 +7,7 @@
         <? foreach ($modulteil->lvgruppen as $lvgruppe) : ?>
             <? $lvgruppe_modulteil = LvgruppeModulteil::get([$lvgruppe->getId(), $modulteil->getId()]) ?>
             <tbody id="<?= $modulteil_id . '_' . $lvgruppe->getId() ?>"<?= MvvPerm::haveFieldPermPosition($lvgruppe_modulteil) ? 'class="sort_items"' : '' ?>>
-                <tr class="header-row">
+                <tr class="sort_item">
                     <td><?= htmlReady($lvgruppe->getDisplayName()) ?></td>
                     <td class="actions">
                         <form method="post">
@@ -46,7 +46,7 @@
             </tbody>
         <? endforeach; ?>
         <? if (MvvPerm::haveFieldPermLvgruppen($modulteil, MvvPerm::PERM_CREATE)) : ?>
-            <tfoot>
+            <tbody>
                 <tr>
                     <td colspan="2">
                         <form action="<?= $controller->url_for('/add_lvgruppe/' . $modulteil->id) ?>" method="post">
@@ -60,7 +60,7 @@
                         </form>
                     </td>
                 </tr>
-            </tfoot>
+            </tbody>
         <? endif; ?>
     </table>
 </td>
diff --git a/app/views/studiengaenge/informationen/degree.php b/app/views/studiengaenge/informationen/degree.php
index c42da60f97d..2fe86a826e9 100644
--- a/app/views/studiengaenge/informationen/degree.php
+++ b/app/views/studiengaenge/informationen/degree.php
@@ -1,4 +1,4 @@
-<table class="default nohover collapsable">
+<table class="default collapsable">
     <colgroup>
         <col width="70%">
         <col width="29%">
diff --git a/app/views/studiengaenge/informationen/index.php b/app/views/studiengaenge/informationen/index.php
index 0914cf1d5fd..ada88c7c05b 100644
--- a/app/views/studiengaenge/informationen/index.php
+++ b/app/views/studiengaenge/informationen/index.php
@@ -1,4 +1,4 @@
-<table class="default nohover collapsable">
+<table class="default collapsable">
     <colgroup>
         <col style="width: 70%">
         <col style="width: 29%">
diff --git a/app/views/studiengaenge/stgteilbezeichnungen/index.php b/app/views/studiengaenge/stgteilbezeichnungen/index.php
index 27cb5708c62..f1618b02593 100644
--- a/app/views/studiengaenge/stgteilbezeichnungen/index.php
+++ b/app/views/studiengaenge/stgteilbezeichnungen/index.php
@@ -19,7 +19,7 @@
                 <? $perm = MvvPerm::get($stgteilbezeichnung) ?>
                 <tbody id="<?= $stgteilbezeichnung->id ?>"
                        class="collapsed <?php if ($perm->haveFieldPerm('position')) echo 'sort_items'; ?>">
-                    <tr class="header-row">
+                    <tr class="header-row sort_item">
                         <td class="toggle-indicator">
                             <a class="mvv-load-in-new-row"
                                href="<?= $controller->url_for('/details/' . $stgteilbezeichnung->id) ?>">
diff --git a/app/views/studiengaenge/studiengaenge/stgteil_bezeichnungen.php b/app/views/studiengaenge/studiengaenge/stgteil_bezeichnungen.php
index 59551829643..4208227aaf0 100644
--- a/app/views/studiengaenge/studiengaenge/stgteil_bezeichnungen.php
+++ b/app/views/studiengaenge/studiengaenge/stgteil_bezeichnungen.php
@@ -28,7 +28,7 @@
             </tbody>
         <? endforeach; ?>
         <? if ($studiengang->typ === 'mehrfach' && MvvPerm::haveFieldPermStudiengangteil($studiengang, MvvPerm::PERM_CREATE)) : ?>
-            <tfoot>
+            <tbody>
                 <tr>
                     <td colspan="3">
                         <form style="width: 100%;"
@@ -63,7 +63,7 @@
                         </form>
                     </td>
                 </tr>
-            </tfoot>
+            </tbody>
         <? endif; ?>
     </table>
 </td>
diff --git a/app/views/studiengaenge/studiengaenge/studiengangteile.php b/app/views/studiengaenge/studiengaenge/studiengangteile.php
index 1e044b6392a..1b055cc46bc 100644
--- a/app/views/studiengaenge/studiengaenge/studiengangteile.php
+++ b/app/views/studiengaenge/studiengaenge/studiengangteile.php
@@ -6,7 +6,7 @@
         </colgroup>
         <? foreach ($stgteile as $stgteil) : ?>
             <tbody id="<?= $stg_stgbez_id . '_' . $stgteil->id ?>"<?= MvvPerm::haveFieldPermStudiengangteil($studiengang, MvvPerm::PERM_WRITE) ? 'class="sort_items"' : '' ?>>
-                <tr class="header-row">
+                <tr class="sort_item">
                     <td width="90%"><?= htmlReady($stgteil->getDisplayName()) ?></td>
                     <td class="actions">
                         <? if (MvvPerm::haveFieldPermStudiengangteil($studiengang, MvvPerm::PERM_CREATE)) : ?>
@@ -48,7 +48,7 @@
             </tbody>
         <? endforeach; ?>
         <? if (MvvPerm::haveFieldPermStudiengangteil($studiengang, MvvPerm::PERM_CREATE)) : ?>
-            <tfoot>
+            <tbody>
                 <tr>
                     <td colspan="2">
                         <form style="width: 100%;"
@@ -80,7 +80,7 @@
                         </form>
                     </td>
                 </tr>
-            </tfoot>
+            </tbody>
         <? endif; ?>
     </table>
 </td>
diff --git a/app/views/studiengaenge/versionen/abschnitte.php b/app/views/studiengaenge/versionen/abschnitte.php
index dfa5ba4a36c..83b90c221b3 100644
--- a/app/views/studiengaenge/versionen/abschnitte.php
+++ b/app/views/studiengaenge/versionen/abschnitte.php
@@ -7,7 +7,7 @@
         <? foreach ($abschnitte as $abschnitt) : ?>
             <tbody id="<?= $abschnitt->id ?>"
                    class="<?= ($abschnitt_id === $abschnitt->id ? 'not-collapsed' : 'collapsed') ?><?= MvvPerm::haveFieldPermPosition($abschnitt, MvvPerm::PERM_WRITE) ? ' sort_items' : '' ?>">
-                <tr class="header-row" id="abschnittt_<?= $abschnitt->id ?>">
+                <tr class="header-row sort_item" id="abschnittt_<?= $abschnitt->id ?>">
                     <td class="toggle-indicator">
                         <a class="mvv-load-in-new-row"
                            href="<?= $controller->url_for('/details_abschnitt/' . $abschnitt->id) ?>">
@@ -53,7 +53,7 @@
         TextHelper::reset_cycle(); ?>
         <? if (count($version->abschnitte) > 0 && MvvPerm::haveFieldPermModul_zuordnungen('StgteilAbschnitt', MvvPerm::PERM_CREATE)
         ) : ?>
-            <tfoot>
+            <tbody>
                 <tr>
                     <td colspan="3">
                         <form class="mvv-qsform" action="<?= $controller->link_for('/add_modul/' . $version->id) ?>"
@@ -83,7 +83,7 @@
                         </form>
                     </td>
                 </tr>
-            </tfoot>
+            </tbody>
         <? endif; ?>
     </table>
 </td>
diff --git a/app/views/studiengaenge/versionen/details_abschnitt.php b/app/views/studiengaenge/versionen/details_abschnitt.php
index 539a74e3805..da2e6f31f33 100644
--- a/app/views/studiengaenge/versionen/details_abschnitt.php
+++ b/app/views/studiengaenge/versionen/details_abschnitt.php
@@ -8,7 +8,7 @@
             </colgroup>
         <? foreach ($assignments as $assignment) : ?>
             <tbody class="<?= count($assignment->modul->modulteile) ? '' : 'empty' ?> <?= ($modul_id == $assignment->modul->id ? 'not-collapsed' : 'collapsed') ?><?= MvvPerm::haveFieldPermPosition($assignment, MvvPerm::PERM_WRITE) ? ' sort_items' : '' ?>" id="<?= $assignment->id ?>">
-                <tr id="modul_<?= $assignment->modul->id ?>" class="header-row">
+                <tr id="modul_<?= $assignment->modul->id ?>" class="header-row sort_item">
                     <td class="toggle-indicator">
                         <? if (count($assignment->modul->modulteile)) : ?>
                         <a class="mvv-load-in-new-row" href="<?= $controller->url_for('/modulteile', $assignment->id) ?>"><?= htmlReady($assignment->getDisplayName()) ?></a>
@@ -50,7 +50,7 @@
             </tbody>
         <? endforeach; TextHelper::reset_cycle(); ?>
         <? if (MvvPerm::haveFieldPermModul_zuordnungen($abschnitt, MvvPerm::PERM_CREATE)) : ?>
-            <tfoot>
+            <tbody>
                 <tr>
                     <td colspan="2">
                         <?= _('Modul hinzufügen') ?>
@@ -68,7 +68,7 @@
                             ); ?>
                     </td>
                 </tr>
-            </tfoot>
+            </tbody>
         <? endif; ?>
         </table>
     </form>
diff --git a/resources/assets/stylesheets/less/mvv.less b/resources/assets/stylesheets/less/mvv.less
index 62fac4b6970..fc26996d650 100644
--- a/resources/assets/stylesheets/less/mvv.less
+++ b/resources/assets/stylesheets/less/mvv.less
@@ -116,13 +116,13 @@ table {
         }
 
         > tbody.sort_items {
-            > tr.header-row > td:first-child {
+            > tr.sort_item > td:first-child {
                 background: #fff url("@{image-path}/anfasser_24.png") no-repeat left center;
                 cursor: move;
                 padding-left: 10px;
             }
-            &.empty > tr.header-row > td:first-child {
-                &:extend(& > tr.header-row > td:first-child);
+            &.empty > tr.sort_item > td:first-child {
+                &:extend(& > tr.sort_item > td:first-child);
                 padding-left: 30px;
             }
         }
diff --git a/resources/assets/stylesheets/less/tables.less b/resources/assets/stylesheets/less/tables.less
index 0f2f778059c..3018062f1b2 100644
--- a/resources/assets/stylesheets/less/tables.less
+++ b/resources/assets/stylesheets/less/tables.less
@@ -463,9 +463,6 @@ table.default {
         }
     }
     > tbody:last-of-type > tr:last-child > td {
-        > table > tbody > tr > td {
-            border-bottom: 1px solid @table-header-color;
-        }
         border-bottom: 1px solid @brand-color-darker;
     }
     // Hover effect
-- 
GitLab