From cfc8ecf834beaacda8e52d67907fdf027996b465 Mon Sep 17 00:00:00 2001
From: David Siegfried <david.siegfried@uni-vechta.de>
Date: Sat, 15 Jul 2023 11:44:08 +0000
Subject: [PATCH] fixes #2863

Closes #2863

Merge request studip/studip!1940
---
 app/views/course/lvgselector/index.php        | 167 +++++++++---------
 app/views/course/study_areas/show.php         |  21 +--
 .../course/wizard/steps/studyareas/index.php  |  94 +++++-----
 3 files changed, 140 insertions(+), 142 deletions(-)

diff --git a/app/views/course/lvgselector/index.php b/app/views/course/lvgselector/index.php
index 925c1c4844e..6946f26cd59 100644
--- a/app/views/course/lvgselector/index.php
+++ b/app/views/course/lvgselector/index.php
@@ -1,98 +1,99 @@
 <? if (!$locked) : ?>
-    <form action="<?= $controller->link_for('course/lvgselector/index/' . $course_id, $url_params ?? []) ?>"
-          <?= Request::isDialog() ? 'data-dialog' : '' ?>
-          method="post">
-<? endif ?>
-<h1><?= _('Lehrveranstaltungsgruppen') ?></h1>
-<div id="assigned" data-ajax-url="<?= $ajax_url ?>" data-forward-url="<?= $no_js_url ?>">
-    <h2>
+<form action="<?= $controller->link_for('course/lvgselector/index/' . $course_id, $url_params ?? []) ?>"
+    <?= Request::isDialog() ? 'data-dialog' : '' ?>
+      method="post" class="default">
+    <? endif ?>
+    <fieldset>
+        <legend><?= _('Lehrveranstaltungsgruppen') ?></legend>
+        <div id="assigned" data-ajax-url="<?= $ajax_url ?>" data-forward-url="<?= $no_js_url ?>">
+            <h2>
         <span class="required">
             <?= _('Bereits zugewiesen') ?>
         </span>
-    </h2>
-    <ul class="css-tree">
-        <li class="lvgroup-tree-assigned-root keep-node" data-id="root">
-            <ul id="lvgroup-tree-assigned-selected">
-              <? foreach ($selection->getAreas() as $area) : ?>
-            	<?= $this->render_partial('course/wizard/steps/lvgroups/lvgroup_entry', compact('area')) ?>
-              <? endforeach ?>
+            </h2>
+            <ul class="css-tree">
+                <li class="lvgroup-tree-assigned-root keep-node" data-id="root">
+                    <ul id="lvgroup-tree-assigned-selected">
+                        <? foreach ($selection->getAreas() as $area) : ?>
+                            <?= $this->render_partial('course/wizard/steps/lvgroups/lvgroup_entry', compact('area')) ?>
+                        <? endforeach ?>
+                    </ul>
+                </li>
             </ul>
-        </li>
-    </ul>
-    <? if (!$locked) : ?>
-    <div data-dialog-button class="hidden-no-js">
-        <?= Studip\Button::createAccept(_('Speichern'), 'save') ?>
-    </div>
-    <? endif ?>
-</div>
-<? if (!$locked) : ?>
-    <div id="lvgroup-tree-open-nodes">
-    <? foreach ($open_lvg_nodes as $opennode): ?>
-            <input type="hidden" name="open_lvg_nodes[]" value="<?= htmlReady($opennode) ?>">
-    <? endforeach; ?>
-    </div>
-    <div id="studyareas" data-ajax-url="<?= $ajax_url ?>"
-        data-forward-url="<?= $no_js_url ?>" data-no-search-result="<?=_('Es wurde kein Suchergebnis gefunden.') ?>">
-        <h2><?= _('Lehrveranstaltungsgruppen Suche') ?></h2>
-        <div>
-            <input type="text" style="width: auto;" size="40" name="search" id="lvgroup-tree-search">
-            <span id="lvgroup-tree-search-start">
+        </div>
+        <? if (!$locked) : ?>
+            <div id="lvgroup-tree-open-nodes">
+                <? foreach ($open_lvg_nodes as $opennode): ?>
+                    <input type="hidden" name="open_lvg_nodes[]" value="<?= htmlReady($opennode) ?>">
+                <? endforeach ?>
+            </div>
+            <div id="studyareas" data-ajax-url="<?= $ajax_url ?>"
+                 data-forward-url="<?= $no_js_url ?>"
+                 data-no-search-result="<?= _('Es wurde kein Suchergebnis gefunden.') ?>">
+                <h2><?= _('Lehrveranstaltungsgruppen Suche') ?></h2>
+                <div>
+                    <input type="text" style="width: auto;" size="40" name="search" id="lvgroup-tree-search">
+                    <span id="lvgroup-tree-search-start">
                 <?= Icon::create('search')->asInput([
                     'name'    => 'start_search',
                     'onclick' => 'return STUDIP.MVV.CourseWizard.searchTree()',
                 ]) ?>
             </span>
-        </div>
+                </div>
 
-        <div id="lvgsearchresults" style="display: none;">
-            <h2><?= _('Suchergebnisse') ?></h2>
-            <ul class="collapsable css-tree">
+                <div id="lvgsearchresults" style="display: none;">
+                    <h2><?= _('Suchergebnisse') ?></h2>
+                    <ul class="collapsable css-tree">
 
-            </ul>
-        </div>
-        <h2><?= _('Alle Lehrveranstaltungsgruppen') ?></h2>
-        <ul class="collapsable css-tree">
-            <li class="lvgroup-tree-root tree-loaded keep-node">
-                <input type="checkbox" id="root" checked="checked"/>
-                <label for="root" class="undecorated">
-                    <?= htmlReady(Config::get()->UNI_NAME_CLEAN) ?>
-                </label>
-                <ul>
-                <? $pos_id = 1; ?>
-                <? foreach ((array) $tree as $node) : ?>
-                    <? $children = $node->getChildren(); ?>
-                    <? if (count($children) || $node->isAssignable()) : ?>
-                    <?= $this->render_partial('course/wizard/steps/lvgroups/_node', [
-                        'node'       => $node, 'pos_id' => $pos_id++,
-                        'open_nodes' => $open_lvg_nodes ?? [],
-                        'children'   => $children,
-                    ]) ?>
-                    <? endif; ?>
-                <? endforeach; ?>
+                    </ul>
+                </div>
+                <h2><?= _('Alle Lehrveranstaltungsgruppen') ?></h2>
+                <ul class="collapsable css-tree">
+                    <li class="lvgroup-tree-root tree-loaded keep-node">
+                        <input type="checkbox" id="root" checked="checked"/>
+                        <label for="root" class="undecorated">
+                            <?= htmlReady(Config::get()->UNI_NAME_CLEAN) ?>
+                        </label>
+                        <ul>
+                            <? $pos_id = 1; ?>
+                            <? foreach ((array)$tree as $node) : ?>
+                                <? $children = $node->getChildren(); ?>
+                                <? if (count($children) || $node->isAssignable()) : ?>
+                                    <?= $this->render_partial('course/wizard/steps/lvgroups/_node', [
+                                        'node'       => $node, 'pos_id' => $pos_id++,
+                                        'open_nodes' => $open_lvg_nodes ?? [],
+                                        'children'   => $children,
+                                    ]) ?>
+                                <? endif ?>
+                            <? endforeach ?>
+                        </ul>
+                    </li>
                 </ul>
-            </li>
-        </ul>
-    </div>
-    <? if ($open_lvg_nodes) : ?>
-    <input type="hidden" name="open_nodes" value="<?= json_encode($open_lvg_nodes) ?>">
-    <? endif ?>
-    <script>
-    //<!--
-    $(function() {
-        var element = $('#lvgroup-tree-search');
-        element.on('keypress', function(e) {
-            if (e.keyCode == 13) {
-                if (element.val() != '') {
-                    return STUDIP.MVV.CourseWizard.searchTree();
-                } else {
-                    return STUDIP.MVV.CourseWizard.resetSearch();
-                }
-            }
-        });
-    });
-    //-->
-    </script>
-<? endif ?>
-<? if(!$locked) : ?>
+            </div>
+        <? if ($open_lvg_nodes) : ?>
+        <input type="hidden" name="open_nodes" value="<?= json_encode($open_lvg_nodes) ?>">
+        <? endif ?>
+            <script>
+                //<!--
+                $(function () {
+                    let element = $('#lvgroup-tree-search');
+                    element.on('keypress', function (e) {
+                        if (e.keyCode === 13) {
+                            if (element.val() !== '') {
+                                return STUDIP.MVV.CourseWizard.searchTree();
+                            } else {
+                                return STUDIP.MVV.CourseWizard.resetSearch();
+                            }
+                        }
+                    });
+                });
+                //-->
+            </script>
+        <? endif ?>
+    </fieldset>
+    <? if (!$locked) : ?>
+    <footer data-dialog-button class="hidden-no-js">
+        <?= Studip\Button::createAccept(_('Speichern'), 'save') ?>
+    </footer>
 </form>
 <? endif ?>
diff --git a/app/views/course/study_areas/show.php b/app/views/course/study_areas/show.php
index 5bf7a5af046..a80a569c120 100644
--- a/app/views/course/study_areas/show.php
+++ b/app/views/course/study_areas/show.php
@@ -1,18 +1,9 @@
 <? if (!$locked) : ?>
-    <form action="<?= $controller->link_for('course/study_areas/save/' . $course->id, $url_params) ?>"
-          <?= Request::isDialog() ? 'data-dialog' : '' ?>
-          method="post">
-<? endif?>
-    <?= $tree ?>
-    <div style="text-align: center;">
-    <? if ($is_activated) : ?>
-        <? if ($is_required) : ?>
-            <?= _("Die Veranstaltung muss <b>mindestens einen</b> Studienbereich haben.") ?>
-        <? endif ?>
-    <? else : ?>
-        <?= _("Die Veranstaltung darf <b>keine</b> Studienbereiche haben.") ?>
+<form action="<?= $controller->link_for('course/study_areas/save/' . $course->id, $url_params) ?>"
+    <?= Request::isDialog() ? 'data-dialog' : '' ?>
+      method="post" class="default">
     <? endif ?>
-    </div>
-<? if(!$locked) : ?>
-    </form>
+    <?= $tree ?>
+    <? if (!$locked) : ?>
+</form>
 <? endif ?>
diff --git a/app/views/course/wizard/steps/studyareas/index.php b/app/views/course/wizard/steps/studyareas/index.php
index 5246d3fc688..9f54268fb95 100644
--- a/app/views/course/wizard/steps/studyareas/index.php
+++ b/app/views/course/wizard/steps/studyareas/index.php
@@ -1,33 +1,30 @@
-<legend>
-    <?= _('Studienbereiche') ?>
-</legend>
-<div id="assigned">
-    <h2>
+<? if (!$stepnumber) : ?>
+    <fieldset>
+<? endif ?>
+    <legend><?= _('Studienbereiche') ?></legend>
+    <div id="assigned">
+        <h2>
         <span class="required">
             <?= _('Bereits zugewiesen') ?>
         </span>
-    </h2>
-    <ul class="css-tree">
-        <li class="sem-tree-assigned-root keep-node" data-id="root"<?=
-                $assigned ? ' class="hidden-no-js hidden-js"' : '' ?>>
-            <?= htmlReady(Config::get()->UNI_NAME_CLEAN) ?>
-            <ul>
-            <?php foreach ($assigned as $element) : ?>
-            <?= $this->render_partial('studyareas/_assigned_node',
-                    ['element' => $element, 'studyareas' => $values['studyareas']]) ?>
-            <?php endforeach ?>
-            </ul>
-        </li>
-    </ul>
-    <? if (!$stepnumber && empty($values['locked'])) : ?>
-        <div data-dialog-button class="hidden-no-js">
-            <?= Studip\Button::createAccept(_('Speichern'), 'save') ?>
-        </div>
-    <? endif ?>
-</div>
-<? if (empty($values['locked'])) : ?>
+        </h2>
+        <ul class="css-tree">
+            <li class="sem-tree-assigned-root keep-node" data-id="root"<?=
+            $assigned ? ' class="hidden-no-js hidden-js"' : '' ?>>
+                <?= htmlReady(Config::get()->UNI_NAME_CLEAN) ?>
+                <ul>
+                    <?php foreach ($assigned as $element) : ?>
+                        <?= $this->render_partial('studyareas/_assigned_node',
+                            ['element' => $element, 'studyareas' => $values['studyareas']]) ?>
+                    <?php endforeach ?>
+                </ul>
+            </li>
+        </ul>
+    </div>
+    <? if (empty($values['locked'])) : ?>
     <div id="studyareas" data-ajax-url="<?= $ajax_url ?>"
-        data-forward-url="<?= $no_js_url ?>" data-no-search-result="<?=_('Es wurde kein Suchergebnis gefunden.') ?>">
+         data-forward-url="<?= $no_js_url ?>"
+         data-no-search-result="<?= _('Es wurde kein Suchergebnis gefunden.') ?>">
         <h2><?= _('Alle Studienbereiche') ?></h2>
         <div>
             <input style="width:auto" type="text" size="40" name="search" id="sem-tree-search">
@@ -40,7 +37,7 @@
         </div>
         <div id="sem-tree-assign-all" class="hidden-js hidden-no-js">
             <a href="" onclick="return STUDIP.CourseWizard.assignAllNodes()">
-                <?= Icon::create('arr_2left', 'sort')->asImg() ?>
+                <?= Icon::create('arr_2left', Icon::ROLE_SORT) ?>
                 <?= _('Alle Suchergebnisse zuweisen') ?>
             </a>
         </div>
@@ -51,29 +48,38 @@
                     <?= htmlReady(Config::get()->UNI_NAME_CLEAN) ?>
                 </label>
                 <ul>
-                <?php foreach ($tree as $node) : ?>
-                <?= $this->render_partial('studyareas/_node',[
-                    'node'       => $node,
-                    'stepnumber' => $stepnumber,
-                    'temp_id'    => $temp_id,
-                    'values'     => $values,
-                    'open_nodes' => $open_nodes ?? [],
-                ]) ?>
-                <?php endforeach ?>
+                    <?php foreach ($tree as $node) : ?>
+                        <?= $this->render_partial('studyareas/_node', [
+                            'node'       => $node,
+                            'stepnumber' => $stepnumber,
+                            'temp_id'    => $temp_id,
+                            'values'     => $values,
+                            'open_nodes' => $open_nodes ?? [],
+                        ]) ?>
+                    <?php endforeach ?>
                 </ul>
             </li>
         </ul>
     </div>
     <?php if (!empty($values['open_node'])) : ?>
-    <input type="hidden" name="open_node" value="<?= $values['open_node'] ?>"/>
+        <input type="hidden" name="open_node" value="<?= $values['open_node'] ?>"/>
     <?php endif ?>
-    <script>
+    <div class="clear"></div>
+<? if (!$stepnumber) : ?>
+    </fieldset>
+<? endif ?>
+<? if (!$stepnumber && empty($values['locked'])) : ?>
+    <footer data-dialog-button class="hidden-no-js">
+        <?= Studip\Button::createAccept(_('Speichern'), 'save') ?>
+    </footer>
+<? endif ?>
+<script>
     //<!--
-    $(function() {
-        var element = $('#sem-tree-search');
-        element.on('keypress', function(e) {
-            if (e.keyCode == 13) {
-                if (element.val() != '') {
+    $(function () {
+        let element = $('#sem-tree-search');
+        element.on('keypress', function (e) {
+            if (e.keyCode === 13) {
+                if (element.val() !== '') {
                     return STUDIP.CourseWizard.searchTree();
                 } else {
                     return STUDIP.CourseWizard.resetSearch();
@@ -82,5 +88,5 @@
         });
     });
     //-->
-    </script>
+</script>
 <? endif ?>
-- 
GitLab