From 0b06cae679d48e7376adc2968cb6b4117c2d44a7 Mon Sep 17 00:00:00 2001 From: Lars Gebhardt-Kusche Date: Tue, 23 Jun 2026 23:47:30 +0200 Subject: [PATCH] adasd --- public/assets/desktop/desktop.js | 21 +++++++++++++++++++++ src/ModulesCore/LegacyCompat.php | 16 ++++++++++++++-- 2 files changed, 35 insertions(+), 2 deletions(-) diff --git a/public/assets/desktop/desktop.js b/public/assets/desktop/desktop.js index 0f33bb2a..7a79d1ab 100644 --- a/public/assets/desktop/desktop.js +++ b/public/assets/desktop/desktop.js @@ -1,6 +1,27 @@ const payloadNode = document.getElementById('desktop-payload'); if (payloadNode) { + const syncDesktopTimezone = () => { + try { + const timezone = Intl.DateTimeFormat().resolvedOptions().timeZone || 'Europe/Berlin'; + if (!timezone) { + return; + } + + const encoded = encodeURIComponent(timezone); + const currentCookie = document.cookie.split('; ').find((entry) => entry.startsWith('desktop_timezone=')); + if (currentCookie === `desktop_timezone=${encoded}`) { + return; + } + + document.cookie = `desktop_timezone=${encoded}; path=/; max-age=31536000; samesite=lax`; + } catch { + // Ignore timezone detection failures. + } + }; + + syncDesktopTimezone(); + const payload = JSON.parse(payloadNode.textContent); const desktopStage = document.querySelector('.desktop-stage'); const iconsRoot = document.getElementById('desktop-icons'); diff --git a/src/ModulesCore/LegacyCompat.php b/src/ModulesCore/LegacyCompat.php index 012692b0..52b5a0b8 100644 --- a/src/ModulesCore/LegacyCompat.php +++ b/src/ModulesCore/LegacyCompat.php @@ -418,9 +418,21 @@ namespace { if (!function_exists('nexus_display_timezone_name')) { function nexus_display_timezone_name(): string { - $timezone = trim((string) date_default_timezone_get()); + $candidates = [ + $_COOKIE['desktop_timezone'] ?? null, + $_SESSION['desktop_timezone'] ?? null, + getenv('DESKTOP_TIMEZONE') ?: null, + 'Europe/Berlin', + ]; - return $timezone !== '' ? $timezone : 'Europe/Berlin'; + foreach ($candidates as $candidate) { + $timezone = trim((string) $candidate); + if ($timezone !== '' && in_array($timezone, \DateTimeZone::listIdentifiers(), true)) { + return $timezone; + } + } + + return 'Europe/Berlin'; } }