// ==========================================================================
// SG 07 ST. LEON - ZENTRALES JAVASCRIPT
// ==========================================================================
document.addEventListener('DOMContentLoaded', () => {
// --- 1. Mobiles Menü Toggle ---
const menuToggle = document.getElementById('menuToggle');
const navMenu = document.getElementById('navMenu');
if (menuToggle && navMenu) {
menuToggle.addEventListener('click', () => {
navMenu.classList.toggle('show');
});
}
// --- 2. News & API Logik ---
const newsContainer = document.getElementById('news-container');
if (newsContainer) {
window.allNews = [];
async function loadNewsFromDatabase() {
try {
const response = await fetch('api.php');
window.allNews = await response.json();
newsContainer.innerHTML = '';
if (window.allNews.error) {
newsContainer.innerHTML = `
${news.date}
${news.department}
${news.title}
${news.content}
Weiterlesen →
`;
newsContainer.appendChild(card);
});
} catch (error) {
console.error("News Fehler:", error);
}
}
loadNewsFromDatabase();
}
// --- 3. News Modal (Popup) Logik ---
const newsModal = document.getElementById('newsModal');
if (newsModal) {
// Global verfügbar machen für das onclick-Attribut in den HTML-Karten
window.openNewsModal = function(id) {
const news = window.allNews.find(n => n.id === id);
if(!news) return;
document.getElementById('modalTitle').innerText = news.title;
document.getElementById('modalMeta').innerText = news.date + ' | ' + news.department;
document.getElementById('modalBody').innerText = news.full_text || news.content;
const imgEl = document.getElementById('modalImage');
if(news.image && news.image.trim() !== "") {
imgEl.src = news.image;
imgEl.style.display = 'block';
} else {
imgEl.style.display = 'none';
}
newsModal.classList.add('active');
document.body.style.overflow = 'hidden';
};
window.closeNewsModal = function() {
newsModal.classList.remove('active');
document.body.style.overflow = 'auto';
};
newsModal.addEventListener('click', function(e) {
if (e.target === this) closeNewsModal();
});
document.addEventListener('keydown', function(e) {
if(e.key === "Escape" && newsModal.classList.contains('active')) {
closeNewsModal();
}
});
}
// --- 4. Lightbox / Bildergalerie Logik (Vereinsheim) ---
const lightbox = document.getElementById('lightbox');
if (lightbox) {
let currentImageIndex = 0;
const galleryImages = document.querySelectorAll('.gallery-item img');
const lightboxImg = document.getElementById('lightboxImg');
const lightboxCounter = document.getElementById('lightboxCounter');
window.openLightbox = function(index) {
currentImageIndex = index;
updateLightbox();
lightbox.classList.add('active');
document.body.style.overflow = 'hidden';
};
window.closeLightbox = function() {
lightbox.classList.remove('active');
document.body.style.overflow = 'auto';
};
window.changeImage = function(direction) {
currentImageIndex += direction;
if (currentImageIndex >= galleryImages.length) {
currentImageIndex = 0;
} else if (currentImageIndex < 0) {
currentImageIndex = galleryImages.length - 1;
}
updateLightbox();
};
function updateLightbox() {
if (galleryImages[currentImageIndex]) {
lightboxImg.src = galleryImages[currentImageIndex].src;
lightboxCounter.innerText = (currentImageIndex + 1) + ' / ' + galleryImages.length;
}
}
lightbox.addEventListener('click', function(event) {
if (event.target === lightbox || event.target.className === 'lightbox-content') {
closeLightbox();
}
});
document.addEventListener('keydown', function(event) {
if (lightbox.classList.contains('active')) {
if (event.key === "Escape") closeLightbox();
if (event.key === "ArrowRight") changeImage(1);
if (event.key === "ArrowLeft") changeImage(-1);
}
});
}
});