From ef2d9353f5de7f590163a118a0376d350836e4ff Mon Sep 17 00:00:00 2001 From: "Torsten Schulz (local)" Date: Wed, 15 Apr 2026 20:37:14 +0200 Subject: [PATCH] Enhance ESLint configuration to include support for .mjs and .cjs file types. Update ignored files patterns to ensure proper linting of project files. Refactor Vue component templates for improved readability and maintainability, including consistent formatting and structure across various components. Update error handling in save functions to prevent silent failures. --- components/cms/CmsLinks.vue | 4 +- components/cms/CmsMannschaften.vue | 319 ++++++++++++++--- components/cms/CmsMitglieder.vue | 88 +++-- components/cms/CmsMitgliedschaftsantraege.vue | 67 +++- components/cms/CmsSpielplaene.vue | 321 +++++++++++++++--- components/cms/CmsTermine.vue | 192 +++++++++-- components/cms/CmsTtRegeln.vue | 102 +++++- eslint.config.js | 5 +- pages/cms/index.vue | 46 ++- pages/cms/inhalte.vue | 13 +- pages/cms/kontaktanfragen.vue | 25 +- pages/cms/mitgliederverwaltung.vue | 18 +- pages/cms/sportbetrieb.vue | 13 +- pages/cms/startseite.vue | 5 +- pages/mitgliederbereich/index.vue | 46 ++- pages/mitgliederbereich/mitglieder.vue | 114 +++++-- pages/mitgliederbereich/profil.vue | 32 +- pages/registrieren.vue | 42 ++- server/api/cms/save-csv.post.js | 4 +- server/api/mannschaften.get.js | 2 +- server/api/membership/download/[id].get.js | 3 +- server/api/membership/generate-pdf.post.js | 20 +- server/utils/email-service.js | 11 +- server/utils/paths.js | 31 ++ 24 files changed, 1238 insertions(+), 285 deletions(-) create mode 100644 server/utils/paths.js diff --git a/components/cms/CmsLinks.vue b/components/cms/CmsLinks.vue index 29795f3..9fdbc21 100644 --- a/components/cms/CmsLinks.vue +++ b/components/cms/CmsLinks.vue @@ -290,10 +290,10 @@ async function save() { } } await $fetch('/api/config', { method: 'PUT', body: updated }) - try { window.showSuccessModal && window.showSuccessModal('Erfolg', 'Links erfolgreich gespeichert.') } catch {} + try { window.showSuccessModal && window.showSuccessModal('Erfolg', 'Links erfolgreich gespeichert.') } catch (_e) { /* no-op */ } } catch (error) { const msg = error?.data?.message || 'Fehler beim Speichern der Links' - try { window.showErrorModal && window.showErrorModal('Fehler', msg) } catch {} + try { window.showErrorModal && window.showErrorModal('Fehler', msg) } catch (_e) { /* no-op */ } } finally { saving.value = false } diff --git a/components/cms/CmsMannschaften.vue b/components/cms/CmsMannschaften.vue index 34b5960..0c4171b 100644 --- a/components/cms/CmsMannschaften.vue +++ b/components/cms/CmsMannschaften.vue @@ -2,39 +2,98 @@
-

Mannschaften verwalten

+

+ Mannschaften verwalten +

-
-
+
+ +
-
+
- - - - - - + + + + + + - - - - - - + + + + + + @@ -42,86 +101,248 @@ -
- -

Keine Mannschaften vorhanden

-

Fügen Sie die erste Mannschaft hinzu.

- +
+ +

+ Keine Mannschaften vorhanden +

+

+ Fügen Sie die erste Mannschaft hinzu. +

+
-
+
-

{{ isEditing ? 'Mannschaft bearbeiten' : 'Neue Mannschaft' }}

+

+ {{ isEditing ? 'Mannschaft bearbeiten' : 'Neue Mannschaft' }} +

-
+
- +
- +
- +
- +
- +
- +
- +
-
Noch keine Spieler eingetragen.
-
+
+ Noch keine Spieler eingetragen. +
+
- +
- - - + + +
- + - +
- -

Reihenfolge per ↑/↓ ändern.

+ +

+ Reihenfolge per ↑/↓ ändern. +

- + +
+
+ {{ errorMessage }}
-
{{ errorMessage }}
- - + +
diff --git a/components/cms/CmsMitglieder.vue b/components/cms/CmsMitglieder.vue index 53899b9..fa59615 100644 --- a/components/cms/CmsMitglieder.vue +++ b/components/cms/CmsMitglieder.vue @@ -670,10 +670,18 @@
MannschaftLigaStaffelleiterMannschaftsführerSpielerAktionen + Mannschaft + + Liga + + Staffelleiter + + Mannschaftsführer + + Spieler + + Aktionen +
{{ mannschaft.mannschaft }}{{ mannschaft.liga }}{{ mannschaft.staffelleiter }}{{ mannschaft.mannschaftsfuehrer }}
{{ getSpielerListe(mannschaft).join(', ') || '-' }}
+ {{ mannschaft.mannschaft }} + + {{ mannschaft.liga }} + + {{ mannschaft.staffelleiter }} + + {{ mannschaft.mannschaftsfuehrer }} + +
+ {{ getSpielerListe(mannschaft).join(', ') || '-' }} +
+
- - + +
- - - - + + + + @@ -682,10 +690,18 @@ :key="index" class="hover:bg-gray-50" > - - - - + + + +
VornameNachnameGeburtsdatumE-Mail + Vorname + + Nachname + + Geburtsdatum + + E-Mail +
{{ row.firstName || '-' }}{{ row.lastName || '-' }}{{ row.geburtsdatum || '-' }}{{ row.email || '-' }} + {{ row.firstName || '-' }} + + {{ row.lastName || '-' }} + + {{ row.geburtsdatum || '-' }} + + {{ row.email || '-' }} +
@@ -704,35 +720,65 @@ class="mb-6" >
-

Import-Ergebnisse

+

+ Import-Ergebnisse +

-
{{ bulkImportResults.summary.imported }}
-
Importiert
+
+ {{ bulkImportResults.summary.imported }} +
+
+ Importiert +
-
{{ bulkImportResults.summary.duplicates }}
-
Duplikate
+
+ {{ bulkImportResults.summary.duplicates }} +
+
+ Duplikate +
-
{{ bulkImportResults.summary.errors }}
-
Fehler
+
+ {{ bulkImportResults.summary.errors }} +
+
+ Fehler +
-
-

Duplikate:

+
+

+ Duplikate: +

-
+
Zeile {{ dup.index }}: {{ dup.member.firstName }} {{ dup.member.lastName }} - {{ dup.reason }}
-
-

Fehler:

+
+

+ Fehler: +

-
+
Zeile {{ err.index }}: {{ err.error }}
diff --git a/components/cms/CmsMitgliedschaftsantraege.vue b/components/cms/CmsMitgliedschaftsantraege.vue index 71c7134..0e0c822 100644 --- a/components/cms/CmsMitgliedschaftsantraege.vue +++ b/components/cms/CmsMitgliedschaftsantraege.vue @@ -105,15 +105,23 @@
-

Kontaktdaten

+

+ Kontaktdaten +

E-Mail: {{ application.personalData.email }}

-

Telefon: {{ application.personalData.telefon_privat }}

-

Mobil: {{ application.personalData.telefon_mobil }}

+

+ Telefon: {{ application.personalData.telefon_privat }} +

+

+ Mobil: {{ application.personalData.telefon_mobil }} +

-

Antragsdetails

+

+ Antragsdetails +

Art: {{ application.metadata.mitgliedschaftsart === 'aktiv' ? 'Aktives Mitglied' : 'Passives Mitglied' }}

Volljährig: {{ application.metadata.isVolljaehrig ? 'Ja' : 'Nein' }}

@@ -141,8 +149,18 @@ class="text-gray-400 hover:text-gray-600" @click="closeModal" > - - + +
@@ -151,16 +169,24 @@
-

Persönliche Daten

+

+ Persönliche Daten +

Name: {{ selectedApplication.personalData.vorname }} {{ selectedApplication.personalData.nachname }}

E-Mail: {{ selectedApplication.personalData.email }}

-

Telefon: {{ selectedApplication.personalData.telefon_privat }}

-

Mobil: {{ selectedApplication.personalData.telefon_mobil }}

+

+ Telefon: {{ selectedApplication.personalData.telefon_privat }} +

+

+ Mobil: {{ selectedApplication.personalData.telefon_mobil }} +

-

Antragsdetails

+

+ Antragsdetails +

Status: {{ getStatusText(selectedApplication.status) }}

Art: {{ selectedApplication.metadata.mitgliedschaftsart === 'aktiv' ? 'Aktives Mitglied' : 'Passives Mitglied' }}

@@ -172,14 +198,29 @@
- + diff --git a/components/cms/CmsSpielplaene.vue b/components/cms/CmsSpielplaene.vue index eb4a40b..4df9b92 100644 --- a/components/cms/CmsSpielplaene.vue +++ b/components/cms/CmsSpielplaene.vue @@ -2,112 +2,335 @@
-

Spielpläne bearbeiten

+

+ Spielpläne bearbeiten +

- - +
-

Vereins-Spielplan (CSV)

-
+

+ Vereins-Spielplan (CSV) +

+
- -

{{ currentFile.name }}

{{ currentFile.size }} bytes

+ +
+

+ {{ currentFile.name }} +

+ {{ currentFile.size }} bytes +

+
- +
-
- -

CSV-Datei hochladen

-

Klicken Sie hier oder ziehen Sie eine CSV-Datei hierher

+
+ +

+ CSV-Datei hochladen +

+

+ Klicken Sie hier oder ziehen Sie eine CSV-Datei hierher +

- +
-
-

Spalten auswählen

-

Wählen Sie die Spalten aus, die für den Spielplan gespeichert werden sollen:

+
+

+ Spalten auswählen +

+

+ Wählen Sie die Spalten aus, die für den Spielplan gespeichert werden sollen: +

-
+
- - + + +
+
+ {{ getColumnPreview(index) }}
-
{{ getColumnPreview(index) }}
-
{{ selectedColumnsCount }} von {{ csvHeaders.length }} Spalten ausgewählt
+
+ {{ selectedColumnsCount }} von {{ csvHeaders.length }} Spalten ausgewählt +
- - - - + + + +
-
+
-

Datenvorschau

+

+ Datenvorschau +

- - + +
- + + + + + - - + +
{{ header }}
+ {{ header }} +
{{ cell }}
+ {{ cell }} +
-
Zeige erste 10 von {{ (columnsSelected ? filteredCsvData : csvData).length }} Zeilen
-

Zeilen: {{ (columnsSelected ? filteredCsvData : csvData).length }}

Spalten: {{ (columnsSelected ? filteredCsvHeaders : csvHeaders).length }}

+
+ Zeige erste 10 von {{ (columnsSelected ? filteredCsvData : csvData).length }} Zeilen +
+
+

Zeilen: {{ (columnsSelected ? filteredCsvData : csvData).length }}

Spalten: {{ (columnsSelected ? filteredCsvHeaders : csvHeaders).length }}

+
-
- -

Keine CSV-Daten geladen.

-

Laden Sie eine CSV-Datei hoch, um Spielplandaten zu verwalten.

+
+ +

+ Keine CSV-Daten geladen. +

+

+ Laden Sie eine CSV-Datei hoch, um Spielplandaten zu verwalten. +

-
+
-

CSV-Datei hochladen

+

+ CSV-Datei hochladen +

-
-

Ausgewählte Datei: {{ selectedFile.name }}

{{ selectedFile.size }} bytes

-

Erwartetes CSV-Format:

• Erste Zeile: Spaltenüberschriften

• Trennzeichen: Komma (,)

+
+ +
+
+

+ Ausgewählte Datei: {{ selectedFile.name }} +

+ {{ selectedFile.size }} bytes +

+
+
+

+ Erwartetes CSV-Format: +

+

• Erste Zeile: Spaltenüberschriften

• Trennzeichen: Komma (,)

+
+
- - + +
-
+
-

Verarbeitung läuft...

-

{{ processingMessage }}

+

+ Verarbeitung läuft... +

+

+ {{ processingMessage }} +

diff --git a/components/cms/CmsTermine.vue b/components/cms/CmsTermine.vue index b004ba2..964e9b4 100644 --- a/components/cms/CmsTermine.vue +++ b/components/cms/CmsTermine.vue @@ -11,36 +11,72 @@ class="flex items-center px-4 py-2 bg-primary-600 hover:bg-primary-700 text-white font-semibold rounded-lg transition-colors" @click="openAddModal" > - + Termin hinzufügen
-
- +
+
-
+
- - - - - - + + + + + + - - - - - + + + + +
DatumUhrzeitTitelBeschreibungKategorieAktionen + Datum + + Uhrzeit + + Titel + + Beschreibung + + Kategorie + + Aktionen +
{{ formatDate(termin.datum) }}{{ termin.uhrzeit || '-' }}{{ termin.titel }}{{ termin.beschreibung || '-' }}
+ {{ formatDate(termin.datum) }} + + {{ termin.uhrzeit || '-' }} + + {{ termin.titel }} + + {{ termin.beschreibung || '-' }} + - - + +
-
Keine Termine vorhanden.
+
+ Keine Termine vorhanden. +
-
+
-

{{ isEditing ? 'Termin bearbeiten' : 'Termin hinzufügen' }}

-
+

+ {{ isEditing ? 'Termin bearbeiten' : 'Termin hinzufügen' }} +

+
- +
- +
- + + + + +
- +
-