From 98b83c284e7dc5b5c92b81b4b1bf975e2972d43c Mon Sep 17 00:00:00 2001
From: Moritz Strohm <strohm@data-quest.de>
Date: Wed, 6 Nov 2024 13:42:39 +0000
Subject: [PATCH] Fixed problems regarding the selected date in the calendar,
 fixes #4725

Closes #4725

Merge request studip/studip!3619
---
 app/controllers/calendar/calendar.php            | 11 ++++++++---
 resources/assets/javascripts/lib/fullcalendar.js |  6 +-----
 2 files changed, 9 insertions(+), 8 deletions(-)

diff --git a/app/controllers/calendar/calendar.php b/app/controllers/calendar/calendar.php
index 468c35d9155..e902c9336c2 100644
--- a/app/controllers/calendar/calendar.php
+++ b/app/controllers/calendar/calendar.php
@@ -49,7 +49,9 @@ class Calendar_CalendarController extends AuthenticatedController
                 ['data-dialog' => 'size=default']
             );
         } else {
-            $params = [];
+            $params = [
+                'timestamp' => time()
+            ];
             if ($user_id) {
                 $params['user_id'] = $user_id;
             } elseif ($group_id) {
@@ -74,9 +76,9 @@ class Calendar_CalendarController extends AuthenticatedController
         if (!$schedule) {
             $actions->addLink(
                 _('Termine exportieren'),
-                $this->url_for('calendar/calendar/export'),
+                $this->url_for('calendar/calendar/export', ['timestamp' => time()]),
                 Icon::create('export'),
-                ['data-dialog' => 'size=auto']
+                ['data-dialog' => 'size=auto', 'class' => 'calendar-action']
             );
             $actions->addLink(
                 _('Termine importieren'),
@@ -777,6 +779,9 @@ class Calendar_CalendarController extends AuthenticatedController
     {
         PageLayout::setTitle(_('Termine exportieren'));
         $this->begin = new DateTimeImmutable();
+        if (Request::submitted('timestamp')) {
+            $this->begin = $this->begin->setTimestamp(Request::int('timestamp'));
+        }
         $this->end = $this->begin->add(new DateInterval('P1Y'));
         $this->dates_to_export = 'user';
         if (Request::submitted('export')) {
diff --git a/resources/assets/javascripts/lib/fullcalendar.js b/resources/assets/javascripts/lib/fullcalendar.js
index c4b0edf5bbd..f3f6e1c4fbe 100644
--- a/resources/assets/javascripts/lib/fullcalendar.js
+++ b/resources/assets/javascripts/lib/fullcalendar.js
@@ -701,11 +701,9 @@ class Fullcalendar
 
     static submitDatePicker() {
         let picked_date = jQuery('#booking-plan-jmpdate').val();
-        let booking_plan_datepicker = true;
         if (!picked_date) {
             //Not a booking plan date selector.
             picked_date = jQuery('#date_select').val();
-            booking_plan_datepicker = false;
         }
         let iso_date_string = '';
         if (picked_date) {
@@ -723,9 +721,7 @@ class Fullcalendar
             jQuery('[data-fullcalendar="1"],[data-resources-fullcalendar="1"]').each(function () {
                 this.calendar.gotoDate(iso_date_string);
             });
-            if (booking_plan_datepicker) {
-                Fullcalendar.updateDateURL();
-            }
+            Fullcalendar.updateDateURL();
         }
     }
 
-- 
GitLab