Files
Minecraft-Modern-Theme/Minecraft-Modern-Theme/js/announcement.js
2026-01-09 20:45:33 +01:00

84 lines
3.4 KiB
JavaScript

document.addEventListener("DOMContentLoaded", function () {
const bar = document.getElementById("mm-announcement");
if (!bar) return;
// --- 1. Positionierung ---
const position = bar.dataset.position || 'below-header';
if (position === "top") {
document.body.insertAdjacentElement('afterbegin', bar);
}
else if (position === "below-slider") {
const anchor = document.getElementById("mm-announcement-anchor");
if (anchor) {
anchor.replaceWith(bar);
} else {
const header = document.getElementById("masthead");
if (header) header.insertAdjacentElement('afterend', bar);
}
}
else if (position === "below-header") {
const header = document.getElementById("masthead");
if (header) header.insertAdjacentElement('afterend', bar);
}
else {
const header = document.getElementById("masthead");
if (header) header.insertAdjacentElement('afterend', bar);
}
const closeBtn = bar.querySelector(".mm-announcement-close");
if (closeBtn) {
closeBtn.addEventListener("click", function () {
bar.style.display = "none";
});
}
// --- 2. Countdown Timer Logik ---
const timerElement = document.querySelector('.mm-countdown-timer');
if (timerElement) {
const targetDateString = timerElement.getAttribute('data-date');
const expiredMessage = timerElement.getAttribute('data-expired');
// Prüfen ob Datum gesetzt ist
if (targetDateString) {
const countDownDate = new Date(targetDateString).getTime();
const updateTimer = setInterval(function() {
const now = new Date().getTime();
const distance = countDownDate - now;
if (distance < 0) {
clearInterval(updateTimer);
timerElement.innerHTML = expiredMessage;
// Optional: Rot einfärben wenn abgelaufen
timerElement.style.color = '#ff3333';
return;
}
// Zeitberechnung
const days = Math.floor(distance / (1000 * 60 * 60 * 24));
const hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
const minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));
const seconds = Math.floor((distance % (1000 * 60)) / 1000);
// Formatierung (z.B. 05 statt 5)
const fDays = days > 0 ? days + "d " : "";
const fHours = hours < 10 ? "0" + hours : hours;
const fMinutes = minutes < 10 ? "0" + minutes : minutes;
const fSeconds = seconds < 10 ? "0" + seconds : seconds;
timerElement.innerHTML = fDays + fHours + ":" + fMinutes + ":" + fSeconds;
}, 1000);
// Sofort einmal ausführen, um Ladezeit zu vermeiden
// Wir lösen das Interval manuell für den ersten Durchlauf aus,
// indem wir den Code kopieren oder den Timeout kurz setzen.
// Für diesen Fall reicht der erste Tick nach 1 Sekunde,
// aber wir können es direkt aufrufen:
// (Hier nutzen wir einfach den ersten Tick des Intervals)
} else {
timerElement.style.display = 'none';
}
}
});