From 8f75b55e7b43353ed2942ea9f1db2682fd387818 Mon Sep 17 00:00:00 2001
From: Peter Thienel <thienel@data-quest.de>
Date: Tue, 21 Dec 2021 14:34:12 +0000
Subject: [PATCH] Resolve "MVV: "Art der Zulassung" wird nicht bei den
 Informationen zum Studiengang ausgegeben"

---
 .../studiengaenge/studiengaenge.php           |   2 +-
 app/views/search/studiengaenge/info.php       |  57 ++++---
 .../studiengaenge/studiengang.php             | 151 ++++++++++--------
 config/mvv_config.php                         |  16 +-
 config/mvvconfig/mvv_studiengang.php          |  14 ++
 config/mvvconfig/mvv_studiengang_einfach.php  |  14 ++
 config/mvvconfig/mvv_studiengang_mehrfach.php |  14 ++
 lib/models/Studiengang.php                    |   2 +
 8 files changed, 175 insertions(+), 95 deletions(-)

diff --git a/app/controllers/studiengaenge/studiengaenge.php b/app/controllers/studiengaenge/studiengaenge.php
index e671f3df94b..208e169a36a 100644
--- a/app/controllers/studiengaenge/studiengaenge.php
+++ b/app/controllers/studiengaenge/studiengaenge.php
@@ -724,7 +724,7 @@ class Studiengaenge_StudiengaengeController extends MVVController
                 $data['name'] = $fach->name;
                 $data['name_kurz'] = $fach->name_kurz;
             }
-            
+
             $this->render_json($data);
         } else {
             $this->set_status(404, 'Not Found');
diff --git a/app/views/search/studiengaenge/info.php b/app/views/search/studiengaenge/info.php
index 7a5d28970bb..8603b1e4cd2 100644
--- a/app/views/search/studiengaenge/info.php
+++ b/app/views/search/studiengaenge/info.php
@@ -32,7 +32,7 @@
         <a data-dialog="title='<?= htmlReady($studiengang->getDisplayName()) ?>'" href="<?= $controller->url_for('/info/' . $studiengang->id . '/', ['language' => $locale]) ?>">
             <img src="<?= Assets::image_path('languages/' . $language['picture']) ?>" alt="<?= $language['name'] ?>" title="<?= $language['name'] ?>">
         </a>
-    <? endforeach; ?>
+    <? endforeach ?>
 </div>
 <article class="studip toggle open" id="tablefix">
     <header>
@@ -78,14 +78,27 @@
                     </td>
                 </tr>
             <? endif ?>
-            <tr>
-                <td>
-                    <strong><?= _('Art der Zulassung') ?>:</strong>
-                </td>
-                <td>
-                    <?= htmlReady($GLOBALS['MVV_STUDIENGANG']['ZULASSUNG']['values'][$studiengang->enroll]['name']) ?>
-                </td>
-            </tr>
+            <? $enroll_selected = explode(',', $studiengang->enroll) ?>
+            <? if ($enroll_selected) : ?>
+                <tr>
+                    <td>
+                        <strong><?= _('Art der Zulassung') ?>:</strong>
+                    </td>
+                    <td>
+                        <? if (count($enroll_selected) > 1) : ?>
+                            <ul>
+                                <? foreach ($enroll_selected as $enroll_key) : ?>
+                                    <li>
+                                        <?= htmlReady($GLOBALS['MVV_STUDIENGANG']['ENROLL']['values'][$enroll_key]['name']) ?>
+                                    </li>
+                                <? endforeach ?>
+                            </ul>
+                        <? else : ?>
+                            <?= htmlReady($GLOBALS['MVV_STUDIENGANG']['ENROLL']['values'][reset($enroll_selected)]['name']) ?>
+                        <? endif ?>
+                    </td>
+                </tr>
+            <? endif ?>
             <? foreach ($studiengang->datafields as $df) : ?>
                 <? if (mb_strpos($df->datafield->object_class, 'settings') !== false
                         && !$df->isNew()) : ?>
@@ -118,7 +131,7 @@
 <? foreach ($studiengang->datafields as $df) : ?>
     <? if (mb_strpos($df->datafield->object_class, 'info') !== false
                         && !$df->isNew()) : ?>
-        <? $tdf = $df->getTypedDatafield(); ?>
+        <? $tdf = $df->getTypedDatafield() ?>
         <? if ($tdf->isVisible() && trim($tdf->getValue())) : ?>
             <article class="studip toggle open">
                 <header>
@@ -128,9 +141,9 @@
                     <?= $tdf->getDisplayValue() ?>
                 </section>
             </article>
-        <? endif; ?>
-    <? endif; ?>
-<? endforeach; ?>
+        <? endif ?>
+    <? endif ?>
+<? endforeach ?>
 <? if (is_array($all_contacts) && count($all_contacts)) : ?>
     <article class="studip toggle open">
         <header>
@@ -145,10 +158,10 @@
                         <li>
                             <?= htmlReady($contact['name']) ?>
                         </li>
-                        <? endforeach; ?>
+                        <? endforeach ?>
                     </ul>
-                <? endif; ?>
-            <? endforeach; ?>
+                <? endif ?>
+            <? endforeach ?>
         </section>
     </article>
 <? endif ?>
@@ -171,10 +184,10 @@
                             <a href="<?= $file['url'] ?>"><?= htmlReady($file['extension']) ?></a>
                             <? endif ?>
                         </li>
-                        <? endforeach; ?>
+                        <? endforeach ?>
                     </ul>
-                <? endif; ?>
-            <? endforeach; ?>
+                <? endif ?>
+            <? endforeach ?>
         </section>
     </article>
 <? endif ?>
@@ -188,18 +201,18 @@
                 <strong><?= htmlReady($GLOBALS['MVV_AUFBAUSTUDIENGANG']['TYP']['values'][$typ]['name']) ?></strong>
                 <? if (count($aufbaustgs) > 4) : ?>
                     <input type="checkbox" class="mvv-cb-more-items" id="cb_more_aufbaustgs" checked>
-                <? endif; ?>
+                <? endif ?>
                 <ul>
                     <? foreach ($aufbaustgs as $i => $aufbaustg) : ?>
                     <li>
                         <?= htmlReady($aufbaustg->getDisplayName()) ?>
                         <? if ($i == 3) : ?>
                             <label class="cb-more-items" for="cb_more_aufbaustgs"><?= _('mehr...') ?></label>
-                        <? endif; ?>
+                        <? endif ?>
                     </li>
                     <? endforeach ?>
                 </ul>
             <? endforeach ?>
         </section>
     </article>
-<? endif; ?>
+<? endif ?>
diff --git a/app/views/studiengaenge/studiengaenge/studiengang.php b/app/views/studiengaenge/studiengaenge/studiengang.php
index 69a47ac0ad3..b9783c36741 100644
--- a/app/views/studiengaenge/studiengaenge/studiengang.php
+++ b/app/views/studiengaenge/studiengaenge/studiengang.php
@@ -6,7 +6,7 @@
 
     <fieldset class="collapsable">
         <legend>
-            <?= _('Fach-Abschluss-Bezeichnung'); ?>
+            <?= _('Fach-Abschluss-Bezeichnung') ?>
         </legend>
 
         <? if ($perm->haveFieldPerm('name', MvvPerm::PERM_WRITE)) : ?>
@@ -15,7 +15,7 @@
                 <?= tooltipHtmlIcon(_('Soll der Name des Studiengangs mit dem eines Fachs übereinstimmen, geben Sie den Namen des Fachs ein, und wählen Sie das Fach aus der Liste. Es werden dann automatisch die weiteren Bezeichnungen aus den Daten des Fachs übernommen.')) ?>
                 <?= $search ?>
             </label>
-        <? endif; ?>
+        <? endif ?>
         <label>
             <?= _('Name:') ?>
             <?= MvvI18N::input('name', $studiengang->name, ['maxlength' => '255'])->checkPermission($studiengang) ?>
@@ -29,13 +29,13 @@
             <option value=""><?= _('-- bitte wählen --') ?></option>
             <? foreach ($abschluesse as $abschluss) : ?>
             <option <?= ($abschluss['abschluss_id'] == $studiengang->abschluss_id ? 'selected ' : '') ?>value="<?= $abschluss['abschluss_id'] ?>"><?= htmlReady($abschluss['name']) ?></option>
-            <? endforeach; ?>
+            <? endforeach ?>
         </select>
         <? else: ?>
             <? $abschluss = Abschluss::find($studiengang->abschluss_id)?>
             <?= htmlReady($abschluss['name']) ?>
             <input type="hidden" name="abschluss_id" value="<?= $studiengang->abschluss_id ?>">
-        <? endif; ?>
+        <? endif ?>
         </label>
         <label for="mvv-abschlussgrad"><?= _('Angestrebter Abschlussgrad') ?>
             <input type ="hidden" name="abschlussgrad" value="<?= $studiengang->abschlussgrad ?>">
@@ -43,15 +43,15 @@
             <? foreach ($GLOBALS['MVV_STUDIENGANG']['ABSCHLUSSGRAD']['values'] as $key => $entry) : ?>
                 <? if ($entry['visible']) : ?>
                 <option value="<?= htmlReady($key) ?>"<?= $key == $studiengang->abschlussgrad ? ' selected' : '' ?>><?= htmlReady($entry['name']) ?></option>
-                <? endif; ?>
-            <? endforeach; ?>
+                <? endif ?>
+            <? endforeach ?>
             </select>
         </label>
     </fieldset>
 
     <fieldset class="collapsable collapsed">
         <legend>
-            <?= _('Gültigkeit'); ?>
+            <?= _('Gültigkeit') ?>
         </legend>
 
         <label>
@@ -63,13 +63,13 @@
                         <option value="<?= $sem->semester_id ?>"<?= ($sem->semester_id === $studiengang->start ? ' selected' : '') ?>>
                             <?= htmlReady($sem->name) ?>
                         </option>
-                    <? endforeach; ?>
+                    <? endforeach ?>
                 </select>
             <? else : ?>
                 <? $sem = Semester::find($studiengang->start) ?>
                 <?= htmlReady($sem->name) ?>
                 <input type="hidden" name="start" value="<?= $studiengang->start ?>">
-            <? endif; ?>
+            <? endif ?>
         </label>
         <label>
             <?= _('bis Semester:') ?>
@@ -80,7 +80,7 @@
                         <option value="<?= $sem->semester_id ?>"<?= ($sem->semester_id === $studiengang->end ? ' selected' : '') ?>>
                             <?= htmlReady($sem->name) ?>
                         </option>
-                    <? endforeach; ?>
+                    <? endforeach ?>
                 </select>
             <? else : ?>
                 <? if ($studiengang->end !== '') : ?>
@@ -88,9 +88,9 @@
                     <?= htmlReady($sem->name) ?>
                 <? else : ?>
                     <?= _('unbegrenzt gültig') ?>
-                <? endif; ?>
+                <? endif ?>
                 <input type="hidden" name="end" value="<?= $studiengang->end ?>">
-            <? endif; ?>
+            <? endif ?>
         </label>
         <div><?= _('Das Endsemester wird nur angegeben, wenn der Studiengang abgeschlossen ist.') ?></div>
         <label>
@@ -103,7 +103,7 @@
                 <?= ($studiengang->beschlussdatum ? strftime('%d.%m.%Y', $studiengang->beschlussdatum) : '') ?>
                 <input type="hidden" name="beschlussdatum"
                        value="<?= ($studiengang->beschlussdatum ? strftime('%d.%m.%Y', $studiengang->beschlussdatum) : '') ?>">
-            <? endif; ?>
+            <? endif ?>
         </label>
         <label>
             <?= _('Fassung:') ?>
@@ -111,25 +111,25 @@
                 <option value="">--</option>
                 <? foreach (range(1, 30) as $nr) : ?>
                     <option<?= $nr === (int)$studiengang->fassung_nr ? ' selected' : '' ?> value="<?= $nr ?>"><?= $nr ?>.</option>
-                <? endforeach; ?>
+                <? endforeach ?>
             </select>
             <? if ($perm->haveFieldPerm('fassung_typ')): ?>
                 <select style="display: inline-block; max-width: 40em;" name="fassung_typ">
                     <option value="0">--</option>
                     <? foreach ($GLOBALS['MVV_STUDIENGANG']['FASSUNG_TYP'] as $key => $entry) : ?>
                         <option value="<?= $key ?>"<?= $key === $studiengang->fassung_typ ? ' selected' : '' ?>><?= htmlReady($entry['name']) ?></option>
-                    <? endforeach; ?>
+                    <? endforeach ?>
                 </select>
             <? else: ?>
                 <?= ($studiengang->fassung_typ === '0' ? '--' : $GLOBALS['MVV_STUDIENGANG']['FASSUNG_TYP'][$studiengang->fassung_typ]['name']) ?>
                 <input type="hidden" name="fassung_typ" value="<?= $studiengang->fassung_typ ?>">
-            <? endif; ?>
+            <? endif ?>
         </label>
     </fieldset>
 
     <fieldset class="collapsable collapsed">
         <legend>
-            <?= _('Einstellungen'); ?>
+            <?= _('Einstellungen') ?>
         </legend>
 
         <label>
@@ -143,9 +143,9 @@
                 <?= Icon::create('decline')->asInput(['name' => 'reset_institutes', 'data-qs_id' => $search_institutes_id, 'class' => 'text-bottom']) ?>
             <? else : ?>
                 <?= Icon::create('search')->asInput(['name' => 'search_institutes', 'data-qs_id' => $search_institutes_id, 'data-qs_name' => $search_institutes->getId(), 'class' => 'mvv-qs-button text-bottom']) ?>
-            <? endif; ?>
+            <? endif ?>
             </div>
-        <? endif; ?>
+        <? endif ?>
             <ul id="institut_target" class="mvv-assigned-items mvv-assign-single mvv-institute">
                 <li class="mvv-item-list-placeholder"<?= ($studiengang->institut_id ? ' style="display: none;"' : '') ?>><?= _('Bitte eine Einrichtung suchen und zuordnen.') ?></li>
                 <? if ($studiengang->institut_id) : ?>
@@ -155,17 +155,17 @@
                             <?= htmlReady($institut->getDisplayName()) ?>
                         <? else: ?>
                             <?= _('Unbekannte Einrichtung') ?>
-                        <? endif; ?>
+                        <? endif ?>
                     </div>
                     <? if ($perm->haveFieldPerm('institut_id', MvvPerm::PERM_WRITE)): ?>
                         <div class="mvv-item-list-buttons">
                             <a href="#"
-                               class="mvv-item-remove"><?= Icon::create('trash', Icon::ROLE_CLICKABLE , ['title' => _('Einrichtung entfernen')])->asImg(); ?></a>
+                               class="mvv-item-remove"><?= Icon::create('trash', Icon::ROLE_CLICKABLE , ['title' => _('Einrichtung entfernen')])->asImg() ?></a>
                         </div>
-                    <? endif; ?>
+                    <? endif ?>
                     <input type="hidden" name="institut_item" value="<?= $studiengang->institut_id ?>">
                 </li>
-                <? endif; ?>
+                <? endif ?>
             </ul>
         </label>
 
@@ -179,13 +179,13 @@
                             value="<?= $key ?>"<?= $studiengang->stat === $key ? ' checked' : '' ?>>
                     <?= $status_bearbeitung['name'] ?>
                 </label>
-            <? endforeach; ?>
+            <? endforeach ?>
             <? else : ?>
             <label>
                 <?= $GLOBALS['MVV_STUDIENGANG']['STATUS']['values'][$studiengang->stat]['name'] ?>
                 <input type="hidden" name="status" value="<?= $studiengang->stat ?>">
             </label>
-        <? endif; ?>
+        <? endif ?>
 
         <label for="kommentar_status" style="vertical-align: top;"><?= _('Kommentar Bearbeitungsstatus') ?>
             <? if ($perm->haveFieldPerm('kommentar_status', MvvPerm::PERM_WRITE)): ?>
@@ -194,7 +194,7 @@
             <? else: ?>
                 <textarea readonly cols="60" rows="5" name="kommentar_status" id="kommentar_status"
                       class="ui-resizable"><?= htmlReady($studiengang->kommentar_status) ?></textarea>
-            <? endif; ?>
+            <? endif ?>
         </label>
 
         <input type="hidden" name="stg_typ" value="<?= htmlReady($studiengang->typ) ?>">
@@ -226,13 +226,13 @@
                 <li id="language_<?= $assigned_language->lang ?>" class="sort_items">
                     <div class="mvv-item-list-text"><?= htmlReady($assigned_language->getDisplayName()) ?></div>
                     <div class="mvv-item-list-buttons">
-                        <a href="#" class="mvv-item-remove"><?= Icon::create('trash', 'clickable', array('title' => _('Sprache entfernen')))->asImg(); ?></a>
+                        <a href="#" class="mvv-item-remove"><?= Icon::create('trash', 'clickable', array('title' => _('Sprache entfernen')))->asImg() ?></a>
                     </div>
                     <input type="hidden" name="language_items[]" value="<?= htmlReady($assigned_language->lang) ?>">
                 </li>
-                <? endforeach; ?>
+                <? endforeach ?>
             </ul>
-            <?= $this->render_partial('shared/language_chooser', ['chooser_id' => 'language', 'chooser_languages' => $GLOBALS['MVV_STUDIENGANG']['SPRACHE']['values'], 'addition' => _('Die Reihenfolge der Sprachen kann durch Anklicken und Ziehen geändert werden.')]); ?>
+            <?= $this->render_partial('shared/language_chooser', ['chooser_id' => 'language', 'chooser_languages' => $GLOBALS['MVV_STUDIENGANG']['SPRACHE']['values'], 'addition' => _('Die Reihenfolge der Sprachen kann durch Anklicken und Ziehen geändert werden.')]) ?>
         <? else : ?>
             <ul id="languages_target" class="mvv-assigned-items mvv-languages">
             <? if (count($studiengang->languages)) : ?>
@@ -241,57 +241,69 @@
                     <div class="mvv-item-list-text"><?= htmlReady($assigned_language->getDisplayName()) ?></div>
                     <input type="hidden" name="language_items[]" value="<?= htmlReady($assigned_language->lang) ?>">
                 </li>
-                <? endforeach; ?>
+                <? endforeach ?>
             <? else : ?>
                 <li class="mvv-item-list-placeholder">
                     <?= _('Es wurden noch keine Sprachen angegeben.') ?>
                 </li>
-            <? endif; ?>
+            <? endif ?>
             </ul>
-        <? endif; ?>
+        <? endif ?>
         </label>
-        <label for="mvv-studycourse-types" style="margin-bottom: 0ex;"><?= _('Typ des Studiengangs') ?></label>
-        <? if ($perm->haveFieldPerm('studycourse_types', MvvPerm::PERM_CREATE)) : ?>
-            <select id="mvv-studycourse-types" name="studycourse_types[]" class="nested_select" multiple>
-        <? else : ?>
-            <? foreach ($studiengang->studycourse_types as $stc_type) : ?>
-                <input type="hidden" name="studycourse_types[]" value="<?= $stc_type->type ?>">
-            <? endforeach; ?>
-            <select id="mvv-studycourse-types" name="studycourse_types[]" class="nested_select" disabled multiple>
-        <? endif; ?>
-        <? foreach ($GLOBALS['MVV_STUDIENGANG']['STUDYCOURSE_TYPE']['values'] as $key => $entry) : ?>
-            <? if ($entry['visible']) : ?>
-                <option value="<?= $key ?>"<?= in_array($key, $studiengang->studycourse_types->pluck('type')) ? ' selected' : '' ?>><?= htmlReady($entry['name']) ?></option>
-            <? endif; ?>
-        <? endforeach; ?>
-        </select>
-        <label style="margin-top: 1.5ex;">
-            <input type="checkbox" name="enroll[]" value="wise"<?= strpos($studiengang->enroll, 'wise') !== false ? ' checked' : '' ?><?= $perm->disable('enroll', MvvPerm::PERM_WRITE) ?>>
-            <?= _('Bewerbung/Einschreibung im Wintersemester möglich') ?>
+
+        <label><?= _('Typ des Studiengangs') ?>
+            <? if ($perm->haveFieldPerm('studycourse_types', MvvPerm::PERM_CREATE)) : ?>
+            <select id="mvv-studycourse-types" name="studycourse_types[]" class="nested-select" multiple>
+                <? else : ?>
+                <? foreach ($studiengang->studycourse_types as $stc_type) : ?>
+                    <input type="hidden" name="studycourse_types[]" value="<?= $stc_type->type ?>">
+                <? endforeach ?>
+                <select id="mvv-studycourse-types" name="studycourse_types[]" class="nested-select" disabled multiple>
+                    <? endif ?>
+                    <? foreach ($GLOBALS['MVV_STUDIENGANG']['STUDYCOURSE_TYPE']['values'] as $key => $entry) : ?>
+                        <? if ($entry['visible']) : ?>
+                            <option value="<?= $key ?>"<?= in_array($key, $studiengang->studycourse_types->pluck('type')) ? ' selected' : '' ?>><?= htmlReady($entry['name']) ?></option>
+                        <? endif ?>
+                    <? endforeach ?>
+                </select>
         </label>
-        <label>
-            <input type="checkbox" name="enroll[]" value="sose"<?= strpos($studiengang->enroll, 'sose') !== false ? ' checked' : '' ?><?= $perm->disable('enroll', MvvPerm::PERM_WRITE) ?>>
-            <?= _('Bewerbung/Einschreibung im Sommersemester möglich') ?>
+
+        <label><?= _('Art der Zulassung') ?>
+            <? $enroll_selected = explode(',', $studiengang->enroll) ?>
+            <? if ($perm->haveFieldPerm('enroll', MvvPerm::PERM_WRITE)) : ?>
+            <select id="mvv-studycourse-enroll" name="enroll[]" class="nested-select" multiple>
+                <? else : ?>
+                <? foreach ($enroll_selected as $enroll_key) : ?>
+                    <input type="hidden" name="enroll[]" value="<?= htmlReady($enroll_key) ?>">
+                <? endforeach ?>
+                <select id="mvv-studycourse-enroll" name="enroll[]" class="nested-select" disabled multiple>
+                    <? endif ?>
+                    <? foreach ($GLOBALS['MVV_STUDIENGANG']['ENROLL']['values'] as $enroll_key => $enroll) : ?>
+                        <? if ($enroll['visible']) : ?>
+                            <option value="<?= htmlReady($enroll_key) ?>"<?= in_array($enroll_key, $enroll_selected) ? ' selected' : '' ?>><?= htmlReady($enroll['name']) ?></option>
+                        <? endif ?>
+                    <? endforeach ?>
+                </select>
         </label>
 
         <div id="mvv-aufbaustg-table"></div>
 
-        <? $datafields = DataFieldEntry::getDataFieldEntries($studiengang->id, 'studycourse'); ?>
+        <? $datafields = DataFieldEntry::getDataFieldEntries($studiengang->id, 'studycourse') ?>
         <? foreach ($datafields as $df) : ?>
             <? if (mb_strpos($df->model->object_class, 'settings') !== false) : ?>
                 <? if ($perm->haveDfEntryPerm($df->model->id, MvvPerm::PERM_WRITE)) : ?>
-                    <?= $df->getHTML('datafields'); ?>
+                    <?= $df->getHTML('datafields') ?>
                 <? else : ?>
                     <em><?= htmlReady($df->getName()) ?>:</em><br>
                     <?= $df->getDisplayValue() ?>
-                <? endif; ?>
-            <? endif; ?>
-        <? endforeach; ?>
+                <? endif ?>
+            <? endif ?>
+        <? endforeach ?>
     </fieldset>
 
     <fieldset class="collapsable collapsed">
         <legend>
-            <?= _('Inhalte und Informationen'); ?>
+            <?= _('Inhalte und Informationen') ?>
         </legend>
         <label>
             <?= _('Beschreibung') ?>
@@ -300,13 +312,13 @@
         <? foreach ($datafields as $df) : ?>
             <? if (mb_strpos($df->model->object_class, 'info') !== false) : ?>
                 <? if ($perm->haveDfEntryPerm($df->model->id, MvvPerm::PERM_WRITE)) : ?>
-                    <?= $df->getHTML('datafields'); ?>
+                    <?= $df->getHTML('datafields') ?>
                 <? else : ?>
                     <em><?= htmlReady($df->getName()) ?>:</em><br>
                     <?= $df->getDisplayValue() ?>
-                <? endif; ?>
-            <? endif; ?>
-        <? endforeach; ?>
+                <? endif ?>
+            <? endif ?>
+        <? endforeach ?>
         <label><?= _('Schlagwörter') ?>
         <textarea <?= $perm->disable('schlagworte') ?> cols="60" rows="5" name="schlagworte" id="schlagworte" class="ui-resizable"><?= htmlReady($studiengang->schlagworte) ?></textarea>
         <div><?= _('Hier können zusätzlich Schlagwörter angegeben werden, die in der Suche berücksichtigt werden.') ?></div>
@@ -315,14 +327,14 @@
 
     <fieldset class="collapsable collapsed">
         <legend>
-            <?= _('Dokumente'); ?>
+            <?= _('Dokumente') ?>
         </legend>
         <?= $this->render_partial('materialien/files/range', ['perm_dokumente' => $perm->haveFieldPerm('document_assignments', MvvPerm::PERM_CREATE), 'range_type' => 'Studiengang', 'range_id' => $studiengang->id]) ?>
     </fieldset>
 
     <fieldset class="collapsable collapsed">
         <legend>
-            <?= _('Ansprechpartner'); ?>
+            <?= _('Ansprechpartner') ?>
         </legend>
         <?= $this->render_partial('shared/contacts/range', ['perm_contacts' => $perm->getFieldPerm('contact_assignments'), 'range_type' => 'Studiengang', 'range_id' => $studiengang->id, 'contacts' => $contacts->getArrayCopy()]) ?>
     </fieldset>
@@ -334,7 +346,7 @@
             <? if ($perm->havePermCreate()) : ?>
                 <?= Button::createAccept(_('Anlegen'), 'store', ['title' => _('Studiengang anlegen')]) ?>
             <?= Button::createAccept(_('Anlegen und abbrechen'), 'store_cancel', ['title' => _('Studiengang anlegen und abbrechen')]) ?>
-            <? endif; ?>
+            <? endif ?>
         <? else : ?>
             <? if ($perm->havePermWrite()) : ?>
             <?= Button::createAccept(_('Ãœbernehmen'), 'store',
@@ -343,17 +355,14 @@
                         'formaction' => $controller->url_for('/studiengang', $studiengang->id),
                         'formmethod' => 'post'
                     ]) ?>
-            <? endif; ?>
-        <? endif; ?>
+            <? endif ?>
+        <? endif ?>
         <?= LinkButton::createCancel(_('Abbrechen'), $cancel_url, ['title' => _('zurück zur Übersicht')]) ?>
     </footer>
 </form>
 
 <script>
     $(document).ready(function() {
-        $('#mvv-studycourse-types').select2({
-            placeholder: '<?= _('Typ wählen') ?>'
-        });
         STUDIP.MVV.Aufbaustg.loadTable('<?= $studiengang->id ?>');
     });
 </script>
diff --git a/config/mvv_config.php b/config/mvv_config.php
index f428203b317..dae7c5d7c15 100644
--- a/config/mvv_config.php
+++ b/config/mvv_config.php
@@ -282,6 +282,20 @@ $GLOBALS['MVV_STUDIENGANG']['PERSONEN_GRUPPEN'] = [
     'default' => ''
 ];
 
+$GLOBALS['MVV_STUDIENGANG']['ENROLL'] = [
+    'values' => [
+        'wise' => [
+            'visible' => 1,
+            'name' => _('Bewerbung/Einschreibung im Wintersemester möglich')
+        ],
+        'sose'     => [
+            'visible' => 1,
+            'name' => _('Bewerbung/Einschreibung im Sommersemester möglich')
+        ]
+    ],
+    'default' => ''
+];
+
 $GLOBALS['MVV_AUFBAUSTUDIENGANG']['TYP'] = [
     'values' => [
         'masterfach' => [
@@ -348,4 +362,4 @@ $GLOBALS['MVV_STGTEIL']['PERSONEN_GRUPPEN'] = [
         'fachberater'     => ['visible' => 1, 'name' => _('Studienfachberater')]
     ],
     'default' => 'fachberater'
-];
\ No newline at end of file
+];
diff --git a/config/mvvconfig/mvv_studiengang.php b/config/mvvconfig/mvv_studiengang.php
index 9f6f4bfa6a9..ccdd8336072 100644
--- a/config/mvvconfig/mvv_studiengang.php
+++ b/config/mvvconfig/mvv_studiengang.php
@@ -332,6 +332,20 @@ $privileges = [
                 'MVVFreigabe'   => 3
             ]
         ],
+        'enroll' => [
+            'planung' => [
+                'MVVEntwickler' => 3,
+                'MVVRedakteur'  => 3,
+                'MVVTranslator' => 1,
+                'MVVFreigabe'   => 3
+            ],
+            'genehmigt' => [
+                'MVVEntwickler' => 3,
+                'MVVRedakteur'  => 3,
+                'MVVTranslator' => 1,
+                'MVVFreigabe'   => 3
+            ]
+        ],
         // verknüpfte Objekte
         'studiengangteile' => [
             'planung' => [
diff --git a/config/mvvconfig/mvv_studiengang_einfach.php b/config/mvvconfig/mvv_studiengang_einfach.php
index a044375ac94..263b017afc8 100644
--- a/config/mvvconfig/mvv_studiengang_einfach.php
+++ b/config/mvvconfig/mvv_studiengang_einfach.php
@@ -332,6 +332,20 @@ $privileges = [
                 'MVVFreigabe'   => 3
             ]
         ],
+        'enroll' => [
+            'planung' => [
+                'MVVEntwickler' => 3,
+                'MVVRedakteur'  => 3,
+                'MVVTranslator' => 1,
+                'MVVFreigabe'   => 3
+            ],
+            'genehmigt' => [
+                'MVVEntwickler' => 3,
+                'MVVRedakteur'  => 3,
+                'MVVTranslator' => 1,
+                'MVVFreigabe'   => 3
+            ]
+        ],
         // verknüpfte Objekte
         'studiengangteile' => [
             'planung' => [
diff --git a/config/mvvconfig/mvv_studiengang_mehrfach.php b/config/mvvconfig/mvv_studiengang_mehrfach.php
index a044375ac94..263b017afc8 100644
--- a/config/mvvconfig/mvv_studiengang_mehrfach.php
+++ b/config/mvvconfig/mvv_studiengang_mehrfach.php
@@ -332,6 +332,20 @@ $privileges = [
                 'MVVFreigabe'   => 3
             ]
         ],
+        'enroll' => [
+            'planung' => [
+                'MVVEntwickler' => 3,
+                'MVVRedakteur'  => 3,
+                'MVVTranslator' => 1,
+                'MVVFreigabe'   => 3
+            ],
+            'genehmigt' => [
+                'MVVEntwickler' => 3,
+                'MVVRedakteur'  => 3,
+                'MVVTranslator' => 1,
+                'MVVFreigabe'   => 3
+            ]
+        ],
         // verknüpfte Objekte
         'studiengangteile' => [
             'planung' => [
diff --git a/lib/models/Studiengang.php b/lib/models/Studiengang.php
index 0dc650d6231..795f3bf5042 100644
--- a/lib/models/Studiengang.php
+++ b/lib/models/Studiengang.php
@@ -134,6 +134,8 @@ class Studiengang extends ModuleManagementModelTreeItem
         $config['i18n_fields']['name_kurz']    = true;
         $config['i18n_fields']['beschreibung'] = true;
 
+        $config['default_values']['enroll'] = $GLOBALS['MVV_STUDIENGANG']['ENROLL']['default'];
+
         parent::configure($config);
     }
 
-- 
GitLab