From 08f9e74a5914590637cd1967e0aa19b7c2e37b8e Mon Sep 17 00:00:00 2001 From: Peter Thienel <thienel@data-quest.de> Date: Wed, 19 Oct 2022 09:14:27 +0000 Subject: [PATCH] Resolve unselect last study area if at least one lv group is assigned, re #1681 Closes #1681 Merge request studip/studip!1085 --- app/controllers/course/study_areas.php | 22 ++++++++++++++++++---- app/views/course/study_areas/show.php | 6 ++++-- 2 files changed, 22 insertions(+), 6 deletions(-) diff --git a/app/controllers/course/study_areas.php b/app/controllers/course/study_areas.php index e7365f1cb63..3643309d4bc 100644 --- a/app/controllers/course/study_areas.php +++ b/app/controllers/course/study_areas.php @@ -71,7 +71,8 @@ class Course_StudyAreasController extends AuthenticatedController if (Request::get('open_node')) { $this->values[get_class($this->step)]['open_node'] = Request::get('open_node'); } - $this->must_have_studyareas = $this->is_required(); + $this->is_activated = $this->is_activated(); + $this->is_required = $this->is_required(); $this->values[get_class($this->step)]['locked'] = $this->locked; $this->tree = $this->step->getStepTemplate($this->values, 0, 0); @@ -122,7 +123,6 @@ class Course_StudyAreasController extends AuthenticatedController $msg = $this->unassign(); } - } else { $studyareas = Request::getArray('studyareas'); @@ -131,13 +131,12 @@ class Course_StudyAreasController extends AuthenticatedController $this->redirect($url); return; } - if (!empty($studyareas) && !$this->is_required()) { + if (!empty($studyareas) && !$this->is_activated()) { PageLayout::postError(_('Sie dürfen keine Studienbereiche zuweisen.')); $this->redirect($url); return; } - try { $this->course->setStudyAreas($studyareas); } catch (UnexpectedValueException $e) { @@ -200,6 +199,21 @@ class Course_StudyAreasController extends AuthenticatedController * @return boolean True if required. */ private function is_required() + { + $sem_class = $this->course->getSemClass(); + if (get_class($this->step) === 'StudyAreasLVGroupsCombinedWizardStep') { + if ($sem_class['module']) { + $lv_gruppen = Lvgruppe::findBySeminar($this->course->id); + if (count($lv_gruppen)) { + return false; + } + } + } + + return (bool) $sem_class['bereiche']; + } + + private function is_activated() { $sem_class = $this->course->getSemClass(); return (bool) $sem_class['bereiche']; diff --git a/app/views/course/study_areas/show.php b/app/views/course/study_areas/show.php index a56521c1630..efec1b45025 100644 --- a/app/views/course/study_areas/show.php +++ b/app/views/course/study_areas/show.php @@ -3,8 +3,10 @@ <? endif?> <?= $tree ?> <div style="text-align: center;"> - <? if ($must_have_studyareas) : ?> - <?= _("Die Veranstaltung muss <b>mindestens einen</b> Studienbereich haben.") ?> + <? 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.") ?> <? endif ?> -- GitLab