From 5c68ad546e02d00c0daebf2d5769332b520698fa Mon Sep 17 00:00:00 2001 From: Thomas Dannenberg Date: Wed, 5 Nov 2025 17:16:02 +0000 Subject: [PATCH] adventskalender/shared/js/door-open.js aktualisiert --- adventskalender/shared/js/door-open.js | 70 +++++++++++++------------- 1 file changed, 36 insertions(+), 34 deletions(-) diff --git a/adventskalender/shared/js/door-open.js b/adventskalender/shared/js/door-open.js index 702963f..45be065 100644 --- a/adventskalender/shared/js/door-open.js +++ b/adventskalender/shared/js/door-open.js @@ -1,47 +1,49 @@ -// shared/js/door-open.js -// Bratonien Adventskalender – Öffnungslogik (inkl. Klick auf Openfield) -document.querySelectorAll(".door, .fluegel, .openfield").forEach(elem => { +document.querySelectorAll(".door, .fluegel").forEach(elem => { elem.addEventListener("click", () => { const day = elem.dataset.day; const openfield = document.querySelector(`.openfield[data-day="${day}"]`); - const doors = document.querySelectorAll(`.door[data-day="${day}"]`); - const fluegelLinks = document.querySelector(`.fluegel.left[data-day="${day}"]`); - const fluegelRechts = document.querySelector(`.fluegel.right[data-day="${day}"]`); + const gifts = window.gifts || {}; // globale Geschenk-Liste (aus popup.js) + const gift = gifts[day] || "

Heute ist noch nichts freigeschaltet.

"; // === EINZELTÜR === - if ( - elem.classList.contains("door") || - (elem.classList.contains("openfield") && doors.length > 0) - ) { - const door = doors[0]; - if (!door) return; - - if (door.classList.contains("open")) { - console.log(`Tür ${day} erneut geöffnet (auch via Openfield)`); - return; - } - - door.classList.add("open"); - if (openfield) openfield.classList.add("open"); - console.log(`Tür ${day} geöffnet${elem.classList.contains("openfield") ? " (via Openfield)" : ""}`); + if (elem.classList.contains("door")) { + elem.classList.toggle("open"); + if (openfield) openfield.classList.toggle("open"); + showGiftPopup(gift); return; } // === DOPPELFLÜGEL === - if ( - elem.classList.contains("fluegel") || - (elem.classList.contains("openfield") && fluegelLinks && fluegelRechts) - ) { - const alreadyOpen = document.querySelectorAll(`.fluegel[data-day="${day}"].rota`); - if (alreadyOpen.length === 2) { - console.log(`Flügeltür ${day} erneut geöffnet (auch via Openfield)`); - return; - } + if (elem.classList.contains("fluegel")) { + const left = document.querySelector(`.fluegel.left[data-day="${day}"]`); + const right = document.querySelector(`.fluegel.right[data-day="${day}"]`); - if (fluegelLinks) fluegelLinks.classList.add("rota"); - if (fluegelRechts) fluegelRechts.classList.add("rota"); - if (openfield) openfield.classList.add("open"); - console.log(`Flügeltür ${day} geöffnet${elem.classList.contains("openfield") ? " (via Openfield)" : ""}`); + if (left && right) { + left.classList.toggle("rota"); + right.classList.toggle("rota"); + } + if (openfield) openfield.classList.toggle("open"); + showGiftPopup(gift); } }); +}); + +/* === Popup-Funktion === */ +function showGiftPopup(html) { + const overlay = document.getElementById("popup-overlay"); + const content = document.getElementById("popup-content"); + if (!overlay || !content) return; + content.innerHTML = html; + overlay.style.display = "flex"; +} + +/* === Schließen-Logik (einmalig) === */ +document.addEventListener("DOMContentLoaded", () => { + const overlay = document.getElementById("popup-overlay"); + const closeBtn = document.getElementById("popup-close"); + if (!overlay || !closeBtn) return; + closeBtn.addEventListener("click", () => (overlay.style.display = "none")); + overlay.addEventListener("click", e => { + if (e.target === overlay) overlay.style.display = "none"; + }); }); \ No newline at end of file