From 4e67d7b765d4f1a215f1ad485964f697f293c015 Mon Sep 17 00:00:00 2001 From: adisposkofh Date: Mon, 10 Aug 2026 13:21:48 +0200 Subject: [PATCH] fixed issue with unresponsive reservation delete buttons in widget and my lv plan --- application/libraries/StundenplanLib.php | 1 + .../models/ressource/Reservierung_model.php | 2 +- public/js/components/Calendar/LvPlan.js | 6 ++-- public/js/components/Calendar/Widget.js | 32 ++++++++++++++++--- public/js/components/Cis/LvPlan/MyLvPlan.js | 20 ++++++++++++ 5 files changed, 52 insertions(+), 9 deletions(-) diff --git a/application/libraries/StundenplanLib.php b/application/libraries/StundenplanLib.php index a2f8bbfe6..d518bf807 100644 --- a/application/libraries/StundenplanLib.php +++ b/application/libraries/StundenplanLib.php @@ -236,6 +236,7 @@ class StundenplanLib if ($is_mitarbeiter && empty($ort_kurzbz)) { // request for personal lvplan show only reservations of logged in user + $this->_ci->addMeta("meta", "adis"); $reservierungen = $this->_ci->ReservierungModel->getReservierungenMitarbeiter($start_date, $end_date, $uid); } else { // querying the reservierungen diff --git a/application/models/ressource/Reservierung_model.php b/application/models/ressource/Reservierung_model.php index 461a009b0..e1c96925c 100644 --- a/application/models/ressource/Reservierung_model.php +++ b/application/models/ressource/Reservierung_model.php @@ -96,7 +96,7 @@ class Reservierung_model extends DB_Model $query_result = $this->execReadOnlyQuery(" SELECT DISTINCT(insertvon), - 'reservierung' as type, beginn, ende, datum, + 'reservierung' as type, beginn, ende, datum, array_agg(DISTINCT reservierung_id) AS reservierung_id, COALESCE(titel, beschreibung) as topic, array_agg(DISTINCT mitarbeiter_kurzbz) as lektor, array_agg(DISTINCT (gruppe,verband,semester,studiengang_kz,gruppen_kuerzel)) as gruppe, diff --git a/public/js/components/Calendar/LvPlan.js b/public/js/components/Calendar/LvPlan.js index 4f240cd73..a6f083b09 100644 --- a/public/js/components/Calendar/LvPlan.js +++ b/public/js/components/Calendar/LvPlan.js @@ -215,18 +215,18 @@ export default { :style="eventStyle(event)" >
@@ -98,6 +119,7 @@ export default { :is="renderers[event.type]?.calendarEvent" :event="event" :timeSlotDisplayBehavior="'always'" + @delete-event="(event) => deleteEvent(event)" >
diff --git a/public/js/components/Cis/LvPlan/MyLvPlan.js b/public/js/components/Cis/LvPlan/MyLvPlan.js index cb43a06d9..3fab090a3 100644 --- a/public/js/components/Cis/LvPlan/MyLvPlan.js +++ b/public/js/components/Cis/LvPlan/MyLvPlan.js @@ -2,6 +2,7 @@ import FhcCalendar from "../../Calendar/LvPlan.js"; import ApiLvPlan from '../../../api/factory/lvPlan.js'; import ApiAuthinfo from '../../../api/factory/authinfo.js'; +import ApiRoomPlan from '../../../api/factory/calendar/roomPlan.js'; export const DEFAULT_MODE_LVPLAN_DESKTOP = "Week"; export const DEFAULT_MODE_LVPLAN_MOBILE = "List"; @@ -134,6 +135,24 @@ export default { this.isMitarbeiter = authInfo.isMitarbeiter; this.isStudent = authInfo.isStudent; }, + deleteEvent(event) { + if (event.type === "reservierung") { + this.deleteReservation(event); + } + }, + async deleteReservation(event) { + if ( + luxon.DateTime.fromISO(`${event.datum}T${event.beginn}`) < + luxon.DateTime.now() + ) + return; + + await this.$api.call( + ApiRoomPlan.deleteRoomReservation(event.reservierung_id), + ); + + this.$refs.calendar.reset(); + }, }, async created() { await this.fetchAuthInfo(); @@ -157,6 +176,7 @@ export default { @update:date="handleChangeDate" @update:mode="handleChangeMode" @update:range="updateRange" + @delete-event="(event) => deleteEvent(event)" class="responsive-calendar" >