aboutsummaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
authorJan-Hendrik Willms <tleilax+studip@gmail.com>2024-12-12 15:05:04 +0000
committerDavid Siegfried <david.siegfried@uni-vechta.de>2024-12-12 15:05:04 +0000
commitb28c3d4af1c8b381c8c7037943fd5081c13f0fee (patch)
tree4bb9847861cefae8479db7c255472ae07daeb30b /app
parent940d2aaa8638b4e0c764579cb3977e7be527c81f (diff)
collect and display messages en bulk, fixes #4964
Closes #4964 Merge request studip/studip!3737
Diffstat (limited to 'app')
-rw-r--r--app/controllers/course/timesrooms.php41
1 files changed, 21 insertions, 20 deletions
diff --git a/app/controllers/course/timesrooms.php b/app/controllers/course/timesrooms.php
index f24c2db..5ec99cc 100644
--- a/app/controllers/course/timesrooms.php
+++ b/app/controllers/course/timesrooms.php
@@ -1124,7 +1124,8 @@ class Course_TimesroomsController extends AuthenticatedController
if (in_array(Request::get('action'), ['room', 'freetext', 'noroom']) || Request::get('course_type')) {
$success_cases = 0;
- $errors = [];
+ $success_messages = [];
+ $error_messages = [];
foreach ($singledates as $singledate) {
if ($singledate instanceof CourseExDate) {
continue;
@@ -1133,7 +1134,7 @@ class Course_TimesroomsController extends AuthenticatedController
$preparation_time = Request::get('preparation_time');
$max_preparation_time = Config::get()->RESOURCES_MAX_PREPARATION_TIME;
if ($preparation_time > $max_preparation_time) {
- $errors[] = sprintf(
+ $error_messages[] = sprintf(
studip_interpolate(
_('%{date}: Die eingegebene Rüstzeit überschreitet das erlaubte Maximum von %d Minuten!'),
['date' => $singledate->getFullName()]
@@ -1149,7 +1150,7 @@ class Course_TimesroomsController extends AuthenticatedController
try {
$failure = !$singledate->bookRoom($room, intval($preparation_time));
} catch (ResourceBookingException $e) {
- $errors[] = sprintf(
+ $error_messages[] = sprintf(
_('Der angegebene Raum konnte für den Termin %1$s nicht gebucht werden: %2$s'),
'<strong>' . htmlReady($singledate->getFullName()) . '</strong>',
$e->getMessage()
@@ -1157,7 +1158,7 @@ class Course_TimesroomsController extends AuthenticatedController
} catch (ResourceBookingOverlapException $e) {
$course = $e->getRange();
if ($course instanceof Course) {
- $errors[] = studip_interpolate(
+ $error_messages[] = studip_interpolate(
_('Der Raum %{room_name} wird an dem Termin %{date} bereits durch die Veranstaltung %{course_name} belegt.'),
[
'room_name' => $room->name,
@@ -1166,7 +1167,7 @@ class Course_TimesroomsController extends AuthenticatedController
]
);
} else {
- $errors[] = studip_interpolate(
+ $error_messages[] = studip_interpolate(
_('Der Raum %{room_name} wird an dem Termin %{date} bereits anderweitig belegt.'),
[
'room_name' => $room->name,
@@ -1176,7 +1177,7 @@ class Course_TimesroomsController extends AuthenticatedController
}
}
if ($failure) {
- $errors[] = sprintf(
+ $error_messages[] = sprintf(
_('Der angegebene Raum konnte für den Termin %s nicht gebucht werden!'),
'<strong>' . htmlReady($singledate->getFullName()) . '</strong>'
);
@@ -1195,44 +1196,44 @@ class Course_TimesroomsController extends AuthenticatedController
if ($singledate->room_booking instanceof ResourceBooking) {
$singledate->room_booking->delete();
}
- PageLayout::postSuccess(sprintf(
+ $success_messages[] = sprintf(
_('Der Termin %s wurde geändert, etwaige Raumbuchungen wurden entfernt und stattdessen der angegebene Freitext eingetragen!'),
'<strong>' . htmlReady($singledate->getFullName()) . '</strong>'
- ));
+ );
} elseif (Request::option('action') == 'noroom') {
$singledate->raum = '';
$singledate->store();
if ($singledate->room_booking instanceof ResourceBooking) {
$singledate->room_booking->delete();
}
- PageLayout::postSuccess(sprintf(
+ $success_messages[] = sprintf(
_('Der Termin %s wurde geändert, etwaige freie Ortsangaben und Raumbuchungen wurden entfernt.'),
'<strong>' . htmlReady($singledate) . '</strong>'
- ));
+ );
}
if (Request::get('course_type') != '') {
$singledate->date_typ = Request::get('course_type');
$singledate->store();
- PageLayout::postSuccess(sprintf(
+ $success_messages[] = sprintf(
_('Die Art des Termins %s wurde geändert.'),
'<strong>' . htmlReady($singledate) . '</strong>'
- ));
+ );
}
}
- if ($success_cases > 0) {
- if (!$errors) {
- //Everything went well.
- PageLayout::postSuccess(_('Die Änderungen wurden gespeichert.'));
+ if ($success_cases > 0 || count($success_messages) > 0) {
+ if (!$error_messages) {
+ // Everything went well.
+ PageLayout::postSuccess(_('Die Änderungen wurden gespeichert.'), $success_messages);
} else {
- //Not everything went well.
- PageLayout::postWarning(_('Es konnten nicht alle Termine geändert werden.'));
+ // Not everything went well.
+ PageLayout::postWarning(_('Es konnten nicht alle Termine geändert werden.'), $success_messages);
}
}
- if ($errors) {
+ if ($error_messages) {
PageLayout::postError(
_('Die folgenden Fehler traten auf:'),
- $errors
+ $error_messages
);
}
}