adventskalender/shared/js/door-open.js aktualisiert
This commit is contained in:
@@ -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] || "<p>Heute ist noch nichts freigeschaltet.</p>";
|
||||
|
||||
// === 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 (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";
|
||||
}
|
||||
|
||||
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)" : ""}`);
|
||||
}
|
||||
/* === 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";
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user