From b07116cb44536729ebb70e7d2e6974c7ebfd5b28 Mon Sep 17 00:00:00 2001 From: Moritz Strohm Date: Mon, 26 Aug 2024 16:45:11 +0200 Subject: added short message in case of an overlap --- app/controllers/course/timesrooms.php | 42 ++++++++++++++++++++++++++++------- lib/models/resources/Resource.php | 4 ++-- 2 files changed, 36 insertions(+), 10 deletions(-) diff --git a/app/controllers/course/timesrooms.php b/app/controllers/course/timesrooms.php index de333f3..bb84a00 100644 --- a/app/controllers/course/timesrooms.php +++ b/app/controllers/course/timesrooms.php @@ -551,14 +551,40 @@ class Course_TimesroomsController extends AuthenticatedController ); } } - PageLayout::postError( - sprintf( - _('Der angegebene Raum konnte für den Termin %1$s nicht gebucht werden: %2$s'), - '' . htmlReady($termin->getFullName()) . '', - $e->getMessage() - ), - $link ? [$link->render()] : [] - ); + if ($e instanceof ResourceBookingException) { + PageLayout::postError( + sprintf( + _('Der angegebene Raum konnte für den Termin %1$s nicht gebucht werden: %2$s'), + '' . htmlReady($termin->getFullName()) . '', + $e->getMessage() + ), + $link ? [$link->render()] : [] + ); + } else { + //$e is a ResourceBookingOverlapException + if ($course instanceof Course) { + PageLayout::postError( + studip_interpolate( + _('Der Raum %{room_name} wird an dem Termin %{date} bereits durch die Veranstaltung %{course_name} belegt.'), + [ + 'room_name' => $room->name, + 'date' => $termin->getFullName(), + 'course_name' => $course->name + ] + ) + ); + } else { + PageLayout::postError( + studip_interpolate( + _('Der Raum %{room_name} wird an dem Termin %{date} bereits durch eine andere Veranstaltung belegt.'), + [ + 'room_name' => $room->name, + 'date' => $termin->getFullName() + ] + ) + ); + } + } } } if ($failure) { diff --git a/lib/models/resources/Resource.php b/lib/models/resources/Resource.php index 557f736..e661ac5 100644 --- a/lib/models/resources/Resource.php +++ b/lib/models/resources/Resource.php @@ -862,7 +862,7 @@ class Resource extends SimpleORMap implements StudipItem $booking->store($force_booking); } catch (ResourceBookingOverlapException $e) { if ($begin->format('Ymd') == $end->format('Ymd')) { - throw new ResourceBookingException( + throw new ResourceBookingOverlapException( sprintf( _('%1$s: Die Buchung vom %2$s bis %3$s konnte wegen Überlappungen nicht gespeichert werden: %4$s'), $this->getFullName(), @@ -874,7 +874,7 @@ class Resource extends SimpleORMap implements StudipItem $e->getRange() ); } else { - throw new ResourceBookingException( + throw new ResourceBookingOverlapException( sprintf( _('%1$s: Die Buchung vom %2$s bis %3$s konnte wegen Überlappungen nicht gespeichert werden: %4$s'), $this->getFullName(), -- cgit v1.0