diff options
| author | Rasmus Fuhse <fuhse@data-quest.de> | 2026-03-10 16:02:57 +0000 |
|---|---|---|
| committer | Rasmus Fuhse <fuhse@data-quest.de> | 2026-03-10 16:02:57 +0000 |
| commit | cffd3152a582de30b91130864b723debb2b39ed1 (patch) | |
| tree | 4396d937a97fb7c72d704af9c3b81cf9c019946c | |
| parent | 725a4976b1eb70493fd3f9b5352f8585ae4bc916 (diff) | |
Resolve "Art des Termins wird überschrieben bei Stapelverarbeitung von Terminen"
Closes #6340
Merge request studip/studip!4805
(cherry picked from commit 46a45e6ef5d8700e93b3a37dc9ee0e829711fa85)
abbbe1cb Re# issue-6340
f78be50c If all appointments have the same date_type, it's now shown correctly as the...
02827ba2 moved some code from view to controler
db4049d1 applied suggested changes
7efd1a92 Apply 1 suggestion(s) to 1 file(s)
Co-authored-by: Rasmus Fuhse <fuhse@data-quest.de>
| -rw-r--r-- | app/controllers/course/timesrooms.php | 32 | ||||
| -rw-r--r-- | app/views/course/timesrooms/createCycle.php | 8 |
2 files changed, 25 insertions, 15 deletions
diff --git a/app/controllers/course/timesrooms.php b/app/controllers/course/timesrooms.php index e68de9f..333502e 100644 --- a/app/controllers/course/timesrooms.php +++ b/app/controllers/course/timesrooms.php @@ -1245,6 +1245,7 @@ class Course_TimesroomsController extends AuthenticatedController $this->end_semester_weeks['ende'][] = ['value' => -1, 'label' => _('Alle Semester')]; } } + $this->types = $this->cycle->dates->pluck('date_typ');; } /** @@ -1335,14 +1336,14 @@ class Course_TimesroomsController extends AuthenticatedController { $cycle = SeminarCycleDate::find($cycle_id); $start = strtotime(Request::get('start_time')); - $end = strtotime(Request::get('end_time')); + $end = strtotime(Request::get('end_time')); // Prepare Request for saving Request if ($start === false || $end === false || $start > $end) { PageLayout::postError(_('Die Zeitangaben sind nicht korrekt. Bitte überprüfen Sie diese!')); } else { - $cycle->start_time = date('H:i:00', $start); - $cycle->end_time = date('H:i:00', $end); + $cycle->start_time = date('H:i:00', $start); + $cycle->end_time = date('H:i:00', $end); } //Check the duration: @@ -1361,42 +1362,45 @@ class Course_TimesroomsController extends AuthenticatedController return; } - $cycle->weekday = Request::int('day'); + $cycle->weekday = Request::int('day'); $cycle->description = Request::get('description'); - $cycle->sws = Request::get('teacher_sws'); - $cycle->cycle = Request::get('cycle'); + $cycle->sws = Request::get('teacher_sws'); + $cycle->cycle = Request::get('cycle'); $cycle->week_offset = Request::int('startWeek'); - $cycle->end_offset = Request::int('endWeek'); + $cycle->end_offset = Request::int('endWeek'); if ($cycle->end_offset == -1) { $cycle->end_offset = NULL; } $changed_dates = 0; - if (Request::int('course_type')) { + + if (Request::get('course_type') && Request::get('course_type') !== 'default') { $changed_dates = $cycle->setSingleDateType(Request::int('course_type')); + } elseif ($cycle->isDirty()) { + $changed_dates = count($cycle->dates); } if ($changed_dates > 0 || $cycle->isDirty()) { + $cycle->chdate = time(); $cycle->store(); - if ($changed_dates > 0) { + if ($changed_dates > 0 && Request::get('course_type') !== 'default') { PageLayout::postSuccess(sprintf(ngettext( - _('Die Art des Termins wurde bei 1 Termin geändert'), - _('Die Art des Termins wurde bei %u Terminen geändert'), - $changed_dates - ), $changed_dates)); + _('Die Art des Termins wurde bei 1 Termin geändert'), + _('Die Art des Termins wurde bei %u Terminen geändert'), + $changed_dates), $changed_dates)); } else { PageLayout::postSuccess(_('Änderungen gespeichert!')); } } else { PageLayout::postInfo(_('Es wurden keine Änderungen vorgenommen')); } - $this->relocate('course/timesrooms/index'); } + /** * Deletes a cycle * diff --git a/app/views/course/timesrooms/createCycle.php b/app/views/course/timesrooms/createCycle.php index c226ab1..2ba98c7 100644 --- a/app/views/course/timesrooms/createCycle.php +++ b/app/views/course/timesrooms/createCycle.php @@ -40,8 +40,14 @@ <label> <?= _('Art') ?> <select name="course_type" id="course_type" class="size-s"> + <? if (!$cycle->isNew() && count(array_unique($types)) !== 1) : ?> + <!-- Use default as placeholder to avoid accidentally overwrite of modified course_type --> + <option value="default" selected>-</option> + <? endif ?> <? foreach ($GLOBALS['TERMIN_TYP'] as $id => $value) : ?> - <option value="<?= $id ?>" <? if(Request::get('course_type') && Request::get('course_type') == $id) :?>selected="selected"<? endif?>><?= htmlReady($value['name']) ?></option> + <option value="<?= htmlReady($id) ?>" <? if(count(array_unique($types)) === 1 && $types[0] == $id) echo 'selected'; ?>> + <?= htmlReady($value['name']) ?> + </option> <? endforeach ?> </select> </label> |
