Initial commit: Harheimer TC Website
- Vue 3 + Nuxt 3 Framework - Tailwind CSS Styling - Responsive Design mit schwarz-roten Vereinsfarben - Dynamische Galerie mit Lightbox - Event-Management über CSV-Dateien - Mannschaftsübersicht mit dynamischen Seiten - SMTP-Kontaktformular - Google Maps Integration - Mobile-optimierte Navigation mit Submenus - Trainer-Übersicht - Vereinsmeisterschaften, Spielsysteme, TT-Regeln - Impressum mit Datenschutzerklärung
This commit is contained in:
41
server/api/galerie.get.js
Normal file
41
server/api/galerie.get.js
Normal file
@@ -0,0 +1,41 @@
|
||||
import { promises as fs } from 'fs'
|
||||
import path from 'path'
|
||||
|
||||
export default defineEventHandler(async (event) => {
|
||||
try {
|
||||
const galerieDir = path.join(process.cwd(), 'public', 'galerie')
|
||||
|
||||
// Prüfe, ob das Verzeichnis existiert
|
||||
try {
|
||||
await fs.access(galerieDir)
|
||||
} catch {
|
||||
return []
|
||||
}
|
||||
|
||||
// Lese alle Dateien im Verzeichnis
|
||||
const dateien = await fs.readdir(galerieDir)
|
||||
|
||||
// Filtere nur Bilddateien
|
||||
const erlaubteExtensions = ['.jpg', '.jpeg', '.png', '.gif', '.webp', '.svg']
|
||||
const bilder = dateien.filter(datei => {
|
||||
const ext = path.extname(datei).toLowerCase()
|
||||
return erlaubteExtensions.includes(ext)
|
||||
})
|
||||
|
||||
// Erstelle Bildobjekte mit Titel basierend auf Dateiname
|
||||
return bilder.map(filename => {
|
||||
const nameWithoutExt = path.parse(filename).name
|
||||
const title = nameWithoutExt
|
||||
.replace(/[-_]/g, ' ')
|
||||
.replace(/\b\w/g, l => l.toUpperCase())
|
||||
|
||||
return {
|
||||
filename,
|
||||
title
|
||||
}
|
||||
})
|
||||
} catch (error) {
|
||||
console.error('Fehler beim Lesen der Galerie:', error)
|
||||
return []
|
||||
}
|
||||
})
|
||||
Reference in New Issue
Block a user