- 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
32 lines
833 B
JavaScript
32 lines
833 B
JavaScript
import { promises as fs } from 'fs'
|
|
import path from 'path'
|
|
|
|
export default defineEventHandler(async (event) => {
|
|
try {
|
|
const spielplaeneDir = path.join(process.cwd(), 'public', 'spielplaene')
|
|
|
|
// Prüfe, ob das Verzeichnis existiert
|
|
try {
|
|
await fs.access(spielplaeneDir)
|
|
} catch {
|
|
return []
|
|
}
|
|
|
|
// Lese alle Dateien im Verzeichnis
|
|
const dateien = await fs.readdir(spielplaeneDir)
|
|
|
|
// Filtere nur relevante Dateitypen
|
|
const erlaubteExtensions = ['.pdf', '.xlsx', '.xls', '.doc', '.docx']
|
|
const gefiltert = dateien.filter(datei => {
|
|
const ext = path.extname(datei).toLowerCase()
|
|
return erlaubteExtensions.includes(ext)
|
|
})
|
|
|
|
return gefiltert
|
|
} catch (error) {
|
|
console.error('Fehler beim Lesen der Spielpläne:', error)
|
|
return []
|
|
}
|
|
})
|
|
|