diff --git a/src/pages/admin.astro b/src/pages/admin.astro
index 99c7bd4..463d3ac 100644
--- a/src/pages/admin.astro
+++ b/src/pages/admin.astro
@@ -67,6 +67,23 @@ const title = 'Admin';
+
+ Gallery verwalten
+
+
+
Neues Gallery-Bild
+
+
+
+
+
+
+
+
+
Veröffentlichen
@@ -91,15 +108,18 @@ const title = 'Admin';
document.getElementById('auth-status').textContent = `Angemeldet als ${me.user?.giteaUsername || 'Admin'}`;
// UI-Bereiche für eingeloggte Nutzer einblenden
document.getElementById('sec-events').style.display = '';
+ document.getElementById('sec-gallery').style.display = '';
document.getElementById('sec-publish').style.display = '';
// Direkt Events laden und auf Sektion fokussieren
await loadEvents();
+ await loadGallery();
document.getElementById('sec-events').scrollIntoView({ behavior: 'smooth' });
} catch (e) {
const el = document.getElementById('auth-status');
el.textContent = 'Nicht angemeldet';
// Kein Auto-Redirect, damit keine Schleife entsteht. Login-Button verwenden.
document.getElementById('sec-events').style.display = 'none';
+ document.getElementById('sec-gallery').style.display = 'none';
document.getElementById('sec-publish').style.display = 'none';
}
}
@@ -293,6 +313,59 @@ const title = 'Admin';
} catch(e){ msg.textContent = 'Fehler: '+e.message }
});
+ // ========== Gallery ==========
+ async function loadGallery() {
+ const listEl = document.getElementById('gallery-list');
+ listEl.innerHTML = 'Lade...
';
+ try {
+ const data = await api('/api/gallery');
+ listEl.innerHTML = '';
+ const galleryImages = (data.images || []).slice();
+ galleryImages.sort((a,b) => (a.displayOrder??0) - (b.displayOrder??0));
+
+ galleryImages.forEach((img) => {
+ const card = document.createElement('div');
+ card.className = 'card';
+ card.innerHTML = `
+
+ ${img.altText || ''}
+
+
+
`;
+ listEl.appendChild(card);
+ });
+ listEl.querySelectorAll('.btn-del-gal').forEach(btn => {
+ btn.addEventListener('click', async () => {
+ const id = btn.getAttribute('data-id');
+ if (!id) return;
+ if (!confirm('Bild wirklich löschen?')) return;
+ try { await api(`/api/gallery/${id}`, { method: 'DELETE' }); await loadGallery(); } catch(e){ alert('Fehler: '+e.message); }
+ })
+ })
+ } catch (e) {
+ listEl.innerHTML = 'Fehler beim Laden
';
+ console.error(e);
+ }
+ }
+
+ document.getElementById('btn-create-gal').addEventListener('click', async () => {
+ const file = /** @type {HTMLInputElement} */ (document.getElementById('gal-file')).files[0];
+ const alt = (document.getElementById('gal-alt')).value.trim();
+ const msg = document.getElementById('gal-create-msg');
+ if (!file) {
+ msg.textContent = 'Bitte Datei auswählen';
+ return;
+ }
+ msg.textContent = 'Lade Bild hoch...';
+ try {
+ await uploadGalleryImage(file, alt);
+ msg.textContent = 'Bild hochgeladen';
+ (document.getElementById('gal-file')).value = '';
+ (document.getElementById('gal-alt')).value = '';
+ await loadGallery();
+ } catch(e){ msg.textContent = 'Fehler: '+e.message }
+ });
+
refreshAuth();