fix(Localization): correct German translations for consistency and clarity
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 36s
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 36s
- Updated various phrases in the German localization files to ensure proper spelling and grammar. - Improved user interface text in the group photo management feature for better readability. - Ensured consistency in terminology across the application, enhancing the overall user experience.
This commit is contained in:
@@ -2,42 +2,42 @@
|
||||
|
||||
## Ziel
|
||||
|
||||
Trainer sollen ein Gruppenfoto hochladen oder mit der Kamera aufnehmen koennen und daraus per manuell gezogenem Rahmen einzelne Mitgliedsfotos erstellen. Die ausgeschnittenen Bilder werden wie normale Mitgliedsfotos gespeichert.
|
||||
Trainer sollen ein Gruppenfoto hochladen oder mit der Kamera aufnehmen können und daraus per manuell gezogenem Rahmen einzelne Mitgliedsfotos erstellen. Die ausgeschnittenen Bilder werden wie normale Mitgliedsfotos gespeichert.
|
||||
|
||||
Zusaetzlich soll ein Gruppenfoto fuer spaetere Bearbeitung gespeichert werden koennen. So kann der Trainer im Training schnell ein Foto aufnehmen und die eigentliche Zuordnung und Bearbeitung spaeter, zum Beispiel zuhause, erledigen.
|
||||
Zusätzlich soll ein Gruppenfoto für spätere Bearbeitung gespeichert werden können. So kann der Trainer im Training schnell ein Foto aufnehmen und die eigentliche Zuordnung und Bearbeitung später, zum Beispiel zuhause, erledigen.
|
||||
|
||||
## Nutzerfluss
|
||||
|
||||
1. Trainer oeffnet `/members`.
|
||||
1. Trainer öffnet `/members`.
|
||||
2. Trainer klickt auf `Gruppenfoto verarbeiten`.
|
||||
3. Ein Dialog oeffnet sich mit drei Einstiegen:
|
||||
3. Ein Dialog öffnet sich mit drei Einstiegen:
|
||||
- `Foto aufnehmen`
|
||||
- `Foto hochladen`
|
||||
- `Gespeichertes Foto oeffnen`
|
||||
- `Gespeichertes Foto öffnen`
|
||||
4. Bei einem neuen Foto entscheidet der Trainer:
|
||||
- `Nur jetzt verarbeiten`
|
||||
- `Fuer spaetere Bearbeitung speichern`
|
||||
5. Das Gruppenfoto wird gross angezeigt.
|
||||
- `Für spätere Bearbeitung speichern`
|
||||
5. Das Gruppenfoto wird groß angezeigt.
|
||||
6. Trainer zieht einen Rahmen um eine Person oder ein Gesicht.
|
||||
7. Trainer waehlt das passende Mitglied aus.
|
||||
7. Trainer wählt das passende Mitglied aus.
|
||||
8. Trainer klickt `Als Mitgliedsfoto speichern`.
|
||||
9. Der Ausschnitt wird gespeichert.
|
||||
10. Trainer kann direkt den naechsten Ausschnitt aus demselben Gruppenfoto markieren.
|
||||
10. Trainer kann direkt den nächsten Ausschnitt aus demselben Gruppenfoto markieren.
|
||||
|
||||
## Erster Funktionsumfang
|
||||
|
||||
- Gruppenfoto hochladen.
|
||||
- Gruppenfoto mobil per Kamera aufnehmen.
|
||||
- Gruppenfoto optional dauerhaft fuer spaetere Bearbeitung speichern.
|
||||
- Gruppenfoto optional dauerhaft für spätere Bearbeitung speichern.
|
||||
- Gespeicherte Gruppenfotos pro Verein auflisten.
|
||||
- Gespeichertes Gruppenfoto spaeter wieder oeffnen.
|
||||
- Gespeichertes Gruppenfoto später wieder öffnen.
|
||||
- Manuelle Rahmenauswahl auf dem Gruppenfoto.
|
||||
- Mitgliedsauswahl mit Suche.
|
||||
- Ausschnitt-Vorschau vor dem Speichern.
|
||||
- Ausschnitt als neues Mitgliedsfoto speichern.
|
||||
- Optionaler Schalter `Als Hauptfoto verwenden`.
|
||||
- Mehrere Ausschnitte nacheinander aus demselben Gruppenfoto erstellen.
|
||||
- Gruppenfoto loeschen, ohne bereits erzeugte Mitgliedsfotos zu loeschen.
|
||||
- Gruppenfoto löschen, ohne bereits erzeugte Mitgliedsfotos zu löschen.
|
||||
|
||||
## Nicht im ersten Wurf
|
||||
|
||||
@@ -46,13 +46,13 @@ Zusaetzlich soll ein Gruppenfoto fuer spaetere Bearbeitung gespeichert werden ko
|
||||
- Mehrfachrahmen gleichzeitig.
|
||||
- Speichern unfertiger Crop-Rahmen als Entwurf.
|
||||
- Statusverwaltung pro markiertem Ausschnitt.
|
||||
- Nachtraegliche Bearbeitung bereits erzeugter Mitgliedsfotos.
|
||||
- Nachträgliche Bearbeitung bereits erzeugter Mitgliedsfotos.
|
||||
|
||||
Diese Punkte koennen spaeter ergaenzt werden. Fuer die erste Version bleibt das Feature bewusst manuell und kontrollierbar.
|
||||
Diese Punkte können später ergänzt werden. Für die erste Version bleibt das Feature bewusst manuell und kontrollierbar.
|
||||
|
||||
## UI-Konzept
|
||||
|
||||
Auf `/members` wird ein neuer Button im Aktionsbereich ergaenzt:
|
||||
Auf `/members` wird ein neuer Button im Aktionsbereich ergänzt:
|
||||
|
||||
```text
|
||||
Gruppenfoto verarbeiten
|
||||
@@ -65,13 +65,13 @@ Gruppenfoto verarbeiten
|
||||
|
||||
[Foto aufnehmen]
|
||||
[Foto hochladen]
|
||||
[Gespeichertes Foto oeffnen]
|
||||
[Gespeichertes Foto öffnen]
|
||||
```
|
||||
|
||||
Nach Fotoauswahl:
|
||||
|
||||
```text
|
||||
[ ] Fuer spaetere Bearbeitung speichern
|
||||
[ ] Für spätere Bearbeitung speichern
|
||||
Titel: Training 15.04.2026
|
||||
Datum: 15.04.2026
|
||||
Notiz: optional
|
||||
@@ -79,14 +79,14 @@ Notiz: optional
|
||||
|
||||
Der Bearbeitungsdialog besteht aus:
|
||||
|
||||
- links: grosses Gruppenfoto mit ziehbarem Crop-Rahmen
|
||||
- links: großes Gruppenfoto mit ziehbarem Crop-Rahmen
|
||||
- rechts: Ausschnitt-Vorschau
|
||||
- rechts: Mitgliedersuche
|
||||
- rechts: Checkbox `Als Hauptfoto verwenden`
|
||||
- rechts: Button `Als Mitgliedsfoto speichern`
|
||||
- rechts: Statusmeldung, zum Beispiel `Foto gespeichert fuer Max Mustermann`
|
||||
- rechts: Statusmeldung, zum Beispiel `Foto gespeichert für Max Mustermann`
|
||||
|
||||
Fuer mobile Ansicht:
|
||||
Für mobile Ansicht:
|
||||
|
||||
- Bild oben
|
||||
- Vorschau darunter
|
||||
@@ -95,35 +95,35 @@ Fuer mobile Ansicht:
|
||||
|
||||
## Gespeicherte Gruppenfotos
|
||||
|
||||
Unter `Gespeichertes Foto oeffnen` wird eine Liste angezeigt:
|
||||
Unter `Gespeichertes Foto öffnen` wird eine Liste angezeigt:
|
||||
|
||||
- Titel
|
||||
- Aufnahmedatum oder Erstelldatum
|
||||
- optional Notiz
|
||||
- Button `Oeffnen`
|
||||
- Button `Loeschen`
|
||||
- Button `Öffnen`
|
||||
- Button `Löschen`
|
||||
|
||||
Ein geloeschtes Gruppenfoto entfernt nur das Original-Gruppenfoto. Bereits erstellte Mitgliedsfotos bleiben erhalten.
|
||||
Ein gelöschtes Gruppenfoto entfernt nur das Original-Gruppenfoto. Bereits erstellte Mitgliedsfotos bleiben erhalten.
|
||||
|
||||
## Crop-Verhalten
|
||||
|
||||
Empfehlung fuer Mitgliedsfotos:
|
||||
Empfehlung für Mitgliedsfotos:
|
||||
|
||||
- Standard-Seitenverhaeltnis `1:1`
|
||||
- Mindestgroesse zum Beispiel `160 x 160 px`
|
||||
- Exportgroesse zum Beispiel `600 x 600 px`
|
||||
- JPEG-Qualitaet etwa `0.9`
|
||||
- Standard-Seitenverhältnis `1:1`
|
||||
- Mindestgröße zum Beispiel `160 x 160 px`
|
||||
- Exportgröße zum Beispiel `600 x 600 px`
|
||||
- JPEG-Qualität etwa `0.9`
|
||||
- Warnung bei sehr kleinen Ausschnitten:
|
||||
|
||||
```text
|
||||
Der Ausschnitt ist sehr klein und kann unscharf wirken.
|
||||
```
|
||||
|
||||
Optional spaeter:
|
||||
Optional später:
|
||||
|
||||
- Umschalter `Freier Ausschnitt`
|
||||
- Zoom und Pan fuer grosse Gruppenfotos
|
||||
- Tastatursteuerung fuer Feinkorrektur
|
||||
- Zoom und Pan für große Gruppenfotos
|
||||
- Tastatursteuerung für Feinkorrektur
|
||||
|
||||
## Technische Umsetzung
|
||||
|
||||
@@ -151,7 +151,7 @@ Technischer Ablauf:
|
||||
6. Blob per `FormData` an die bestehende Mitgliedsfoto-API hochladen.
|
||||
7. Optional danach das Bild als Hauptfoto setzen.
|
||||
|
||||
Kameraaufnahme kann pragmatisch ueber einen Dateiinput starten:
|
||||
Kameraaufnahme kann pragmatisch über einen Dateiinput starten:
|
||||
|
||||
```html
|
||||
<input type="file" accept="image/*" capture>
|
||||
@@ -159,7 +159,7 @@ Kameraaufnahme kann pragmatisch ueber einen Dateiinput starten:
|
||||
|
||||
### Bestehender Mitgliedsfoto-Upload
|
||||
|
||||
Wenn moeglich wird die bestehende Route genutzt:
|
||||
Wenn möglich wird die bestehende Route genutzt:
|
||||
|
||||
```text
|
||||
POST /api/clubmembers/image/:clubId/:memberId
|
||||
@@ -173,15 +173,15 @@ POST /api/clubmembers/image/:clubId/:memberId/:imageId/primary
|
||||
|
||||
Der Blob kann als Datei `group-photo-crop.jpg` gesendet werden.
|
||||
|
||||
## Backend fuer gespeicherte Gruppenfotos
|
||||
## Backend für gespeicherte Gruppenfotos
|
||||
|
||||
Fuer dauerhaft gespeicherte Gruppenfotos wird eine neue Tabelle empfohlen:
|
||||
Für dauerhaft gespeicherte Gruppenfotos wird eine neue Tabelle empfohlen:
|
||||
|
||||
```text
|
||||
member_group_photo
|
||||
```
|
||||
|
||||
Minimal benoetigte Felder:
|
||||
Minimal benötigte Felder:
|
||||
|
||||
- `id`
|
||||
- `club_id`
|
||||
@@ -218,11 +218,11 @@ Beschreibung:
|
||||
|
||||
- `GET /:clubId`: listet gespeicherte Gruppenfotos des Vereins.
|
||||
- `POST /:clubId`: speichert ein neues Gruppenfoto.
|
||||
- `GET /:clubId/:photoId/image`: liefert das Originalbild fuer spaetere Bearbeitung.
|
||||
- `GET /:clubId/:photoId/image`: liefert das Originalbild für spätere Bearbeitung.
|
||||
- `PUT /:clubId/:photoId`: aktualisiert Titel, Datum oder Notiz.
|
||||
- `DELETE /:clubId/:photoId`: loescht das gespeicherte Gruppenfoto.
|
||||
- `DELETE /:clubId/:photoId`: löscht das gespeicherte Gruppenfoto.
|
||||
|
||||
Alle Routen muessen authentifiziert sein und Vereinszugriff pruefen.
|
||||
Alle Routen müssen authentifiziert sein und Vereinszugriff prüfen.
|
||||
|
||||
## Speicherort
|
||||
|
||||
@@ -236,30 +236,30 @@ Falls das Projekt bereits andere Upload-Konventionen nutzt, sollte der Pfad dara
|
||||
|
||||
## Datenschutz und Berechtigungen
|
||||
|
||||
Wenn komplette Gruppenfotos gespeichert werden, koennen darauf auch Personen zu sehen sein, deren Einzelbild nicht gespeichert werden soll. Deshalb sollte im Dialog ein klarer Hinweis stehen:
|
||||
Wenn komplette Gruppenfotos gespeichert werden, können darauf auch Personen zu sehen sein, deren Einzelbild nicht gespeichert werden soll. Deshalb sollte im Dialog ein klarer Hinweis stehen:
|
||||
|
||||
```text
|
||||
Dieses Gruppenfoto wird gespeichert und kann andere Personen enthalten. Bitte nur speichern, wenn die Nutzung im Verein zulaessig ist.
|
||||
Dieses Gruppenfoto wird gespeichert und kann andere Personen enthalten. Bitte nur speichern, wenn die Nutzung im Verein zulässig ist.
|
||||
```
|
||||
|
||||
Empfehlungen:
|
||||
|
||||
- Gruppenfotos nur fuer berechtigte Vereinsnutzer sichtbar machen.
|
||||
- Keine oeffentliche Bild-URL ohne Authentifizierung.
|
||||
- Bildauslieferung nur ueber geschuetzte API.
|
||||
- Loeschfunktion direkt in der Gruppenfoto-Liste anbieten.
|
||||
- Das Speichern eines Gruppenfotos aendert keine bestehenden Einwilligungen, zum Beispiel `picsInInternetAllowed`.
|
||||
- Gruppenfotos nur für berechtigte Vereinsnutzer sichtbar machen.
|
||||
- Keine öffentliche Bild-URL ohne Authentifizierung.
|
||||
- Bildauslieferung nur über geschützte API.
|
||||
- Löschfunktion direkt in der Gruppenfoto-Liste anbieten.
|
||||
- Das Speichern eines Gruppenfotos ändert keine bestehenden Einwilligungen, zum Beispiel `picsInInternetAllowed`.
|
||||
- Die Zuordnung eines Ausschnitts zu einem Mitglied bleibt eine bewusste Trainerentscheidung.
|
||||
|
||||
## Spaeterer Ausbau: Crop-Entwuerfe
|
||||
## Späterer Ausbau: Crop-Entwürfe
|
||||
|
||||
Wenn spaeter auch unfertige Rahmen gespeichert werden sollen, kann eine zweite Tabelle ergaenzt werden:
|
||||
Wenn später auch unfertige Rahmen gespeichert werden sollen, kann eine zweite Tabelle ergänzt werden:
|
||||
|
||||
```text
|
||||
member_group_photo_crop
|
||||
```
|
||||
|
||||
Moegliche Felder:
|
||||
Mögliche Felder:
|
||||
|
||||
- `id`
|
||||
- `group_photo_id`
|
||||
@@ -272,40 +272,40 @@ Moegliche Felder:
|
||||
- `created_at`
|
||||
- `updated_at`
|
||||
|
||||
Moegliche Statuswerte:
|
||||
Mögliche Statuswerte:
|
||||
|
||||
- `open`
|
||||
- `assigned`
|
||||
- `saved`
|
||||
- `discarded`
|
||||
|
||||
Das ist nicht Teil der ersten Version, waere aber die Grundlage fuer Mehrfachrahmen und spaetere Weiterbearbeitung.
|
||||
Das ist nicht Teil der ersten Version, wäre aber die Grundlage für Mehrfachrahmen und spätere Weiterbearbeitung.
|
||||
|
||||
## Fehlerfaelle
|
||||
## Fehlerfälle
|
||||
|
||||
- Kein Foto gewaehlt: Bearbeitung nicht moeglich.
|
||||
- Kein Foto gewählt: Bearbeitung nicht möglich.
|
||||
- Kein Rahmen gezogen: Speichern deaktivieren.
|
||||
- Kein Mitglied gewaehlt: Speichern deaktivieren.
|
||||
- Kein Mitglied gewählt: Speichern deaktivieren.
|
||||
- Ausschnitt zu klein: Warnung anzeigen oder Speichern deaktivieren.
|
||||
- Upload schlaegt fehl: Fehlermeldung anzeigen, Auswahl beibehalten.
|
||||
- Gruppenfoto kann nicht geladen werden: Fehlermeldung und Rueckkehr zur Liste.
|
||||
- Gruppenfoto wurde geloescht: Liste aktualisieren.
|
||||
- Upload schlägt fehl: Fehlermeldung anzeigen, Auswahl beibehalten.
|
||||
- Gruppenfoto kann nicht geladen werden: Fehlermeldung und Rückkehr zur Liste.
|
||||
- Gruppenfoto wurde gelöscht: Liste aktualisieren.
|
||||
|
||||
## Akzeptanzkriterien
|
||||
|
||||
- Trainer kann ein Gruppenfoto hochladen.
|
||||
- Trainer kann ein Gruppenfoto mobil aufnehmen.
|
||||
- Trainer kann ein Gruppenfoto fuer spaetere Bearbeitung speichern.
|
||||
- Trainer kann ein Gruppenfoto für spätere Bearbeitung speichern.
|
||||
- Gespeicherte Gruppenfotos werden pro Verein aufgelistet.
|
||||
- Ein gespeichertes Gruppenfoto kann spaeter geoeffnet und bearbeitet werden.
|
||||
- Ein gespeichertes Gruppenfoto kann später geöffnet und bearbeitet werden.
|
||||
- Trainer kann per Rahmen einen Ausschnitt markieren.
|
||||
- Ausschnitt wird als Vorschau angezeigt.
|
||||
- Trainer kann ein Mitglied suchen und auswaehlen.
|
||||
- Trainer kann ein Mitglied suchen und auswählen.
|
||||
- Ausschnitt wird als Mitgliedsfoto gespeichert.
|
||||
- Optional kann der Ausschnitt als Hauptfoto gesetzt werden.
|
||||
- Mehrere Mitglieder koennen nacheinander aus demselben Gruppenfoto versorgt werden.
|
||||
- Gruppenfoto kann geloescht werden.
|
||||
- Loeschen eines Gruppenfotos loescht keine bereits erstellten Mitgliedsfotos.
|
||||
- Gruppenfoto ist nur fuer berechtigte Nutzer des Vereins abrufbar.
|
||||
- Das vollstaendige Gruppenfoto wird nur gespeichert, wenn der Trainer dies bewusst auswaehlt.
|
||||
- Frontend-Build laeuft ohne Fehler.
|
||||
- Mehrere Mitglieder können nacheinander aus demselben Gruppenfoto versorgt werden.
|
||||
- Gruppenfoto kann gelöscht werden.
|
||||
- Löschen eines Gruppenfotos löscht keine bereits erstellten Mitgliedsfotos.
|
||||
- Gruppenfoto ist nur für berechtigte Nutzer des Vereins abrufbar.
|
||||
- Das vollständige Gruppenfoto wird nur gespeichert, wenn der Trainer dies bewusst auswählt.
|
||||
- Frontend-Build läuft ohne Fehler.
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
</button>
|
||||
</div>
|
||||
<p class="group-photo-hint">
|
||||
Das Gruppenfoto kann nur lokal verarbeitet oder fuer spaetere Bearbeitung im Verein gespeichert werden.
|
||||
Das Gruppenfoto kann nur lokal verarbeitet oder für spätere Bearbeitung im Verein gespeichert werden.
|
||||
</p>
|
||||
</section>
|
||||
|
||||
@@ -33,8 +33,8 @@
|
||||
<span>{{ formatDate(photo.takenAt || photo.createdAt) }}</span>
|
||||
</div>
|
||||
<div class="saved-photo-actions">
|
||||
<button type="button" @click="openSavedPhoto(photo)">Oeffnen</button>
|
||||
<button type="button" class="danger-button" @click="deleteSavedPhoto(photo)">Loeschen</button>
|
||||
<button type="button" @click="openSavedPhoto(photo)">Öffnen</button>
|
||||
<button type="button" class="danger-button" @click="deleteSavedPhoto(photo)">Löschen</button>
|
||||
</div>
|
||||
</article>
|
||||
</div>
|
||||
@@ -43,7 +43,7 @@
|
||||
<section v-if="sourceUrl" class="save-source-panel">
|
||||
<label class="checkbox-line">
|
||||
<input type="checkbox" v-model="saveForLater">
|
||||
Fuer spaetere Bearbeitung speichern
|
||||
Für spätere Bearbeitung speichern
|
||||
</label>
|
||||
<div v-if="saveForLater" class="save-source-fields">
|
||||
<label>
|
||||
@@ -63,7 +63,7 @@
|
||||
</button>
|
||||
</div>
|
||||
<p v-if="saveForLater" class="privacy-note">
|
||||
Dieses Gruppenfoto wird gespeichert und kann andere Personen enthalten. Bitte nur speichern, wenn die Nutzung im Verein zulaessig ist.
|
||||
Dieses Gruppenfoto wird gespeichert und kann andere Personen enthalten. Bitte nur speichern, wenn die Nutzung im Verein zulässig ist.
|
||||
</p>
|
||||
</section>
|
||||
|
||||
@@ -111,7 +111,7 @@
|
||||
<input v-model="memberQuery" type="search" placeholder="Name eingeben">
|
||||
</label>
|
||||
<select v-model="selectedMemberId" class="member-select">
|
||||
<option value="">Mitglied auswaehlen</option>
|
||||
<option value="">Mitglied auswählen</option>
|
||||
<option v-for="member in filteredMembers" :key="member.id" :value="member.id">
|
||||
{{ member.lastName }}, {{ member.firstName }}
|
||||
</option>
|
||||
@@ -125,7 +125,7 @@
|
||||
<button type="button" class="btn-primary" :disabled="!canSaveCrop || savingCrop" @click="saveCrop">
|
||||
{{ savingCrop ? 'Speichere ...' : 'Als Mitgliedsfoto speichern' }}
|
||||
</button>
|
||||
<button type="button" @click="resetSelection">Auswahl zuruecksetzen</button>
|
||||
<button type="button" @click="resetSelection">Auswahl zurücksetzen</button>
|
||||
<p v-if="statusMessage" class="status-message">{{ statusMessage }}</p>
|
||||
<p v-if="errorMessage" class="error-message">{{ errorMessage }}</p>
|
||||
</aside>
|
||||
@@ -223,7 +223,7 @@ export default {
|
||||
event.target.value = '';
|
||||
if (!file) return;
|
||||
if (!file.type.startsWith('image/')) {
|
||||
this.errorMessage = 'Bitte eine Bilddatei auswaehlen.';
|
||||
this.errorMessage = 'Bitte eine Bilddatei auswählen.';
|
||||
return;
|
||||
}
|
||||
this.revokeSourceUrl();
|
||||
@@ -341,7 +341,7 @@ export default {
|
||||
payload: response.data
|
||||
});
|
||||
const member = this.members.find(entry => String(entry.id) === String(this.selectedMemberId));
|
||||
this.statusMessage = `Foto gespeichert${member ? ` fuer ${member.firstName} ${member.lastName}` : ''}.`;
|
||||
this.statusMessage = `Foto gespeichert${member ? ` für ${member.firstName} ${member.lastName}` : ''}.`;
|
||||
this.resetSelection();
|
||||
} catch (error) {
|
||||
this.errorMessage = error?.message || 'Ausschnitt konnte nicht gespeichert werden.';
|
||||
@@ -401,14 +401,14 @@ export default {
|
||||
this.saveForLater = true;
|
||||
this.selection = null;
|
||||
this.previewBlob = null;
|
||||
this.statusMessage = `Gruppenfoto "${photo.title}" geoeffnet.`;
|
||||
this.statusMessage = `Gruppenfoto "${photo.title}" geöffnet.`;
|
||||
this.errorMessage = '';
|
||||
} catch (error) {
|
||||
this.errorMessage = 'Gruppenfoto konnte nicht geoeffnet werden.';
|
||||
this.errorMessage = 'Gruppenfoto konnte nicht geöffnet werden.';
|
||||
}
|
||||
},
|
||||
async deleteSavedPhoto(photo) {
|
||||
if (!window.confirm(`Gruppenfoto "${photo.title}" wirklich loeschen? Bereits erstellte Mitgliedsfotos bleiben erhalten.`)) {
|
||||
if (!window.confirm(`Gruppenfoto "${photo.title}" wirklich löschen? Bereits erstellte Mitgliedsfotos bleiben erhalten.`)) {
|
||||
return;
|
||||
}
|
||||
try {
|
||||
@@ -422,7 +422,7 @@ export default {
|
||||
this.resetSelection();
|
||||
}
|
||||
} catch (error) {
|
||||
this.errorMessage = 'Gruppenfoto konnte nicht geloescht werden.';
|
||||
this.errorMessage = 'Gruppenfoto konnte nicht gelöscht werden.';
|
||||
}
|
||||
},
|
||||
formatDate(value) {
|
||||
|
||||
@@ -1027,7 +1027,7 @@
|
||||
"errorMergingClasses": "Fehler beim Zusammenlegen der Klassen.",
|
||||
"apply": "Übernehmen",
|
||||
"participantsNeedClassAssignment": "{count} Teilnehmer sind noch keiner Klasse zugeordnet. Diese sollten zuerst zugeordnet werden.",
|
||||
"autoAssignableParticipantsHint": "{count} davon koennen automatisch zugeordnet werden.",
|
||||
"autoAssignableParticipantsHint": "{count} davon können automatisch zugeordnet werden.",
|
||||
"assignmentReviewTitle": "{count} Teilnehmer brauchen eine Auswahl:",
|
||||
"conflictSuggestionLabel": "Vorschläge:",
|
||||
"workspaceProblemsTitle": "{count} offene Punkte",
|
||||
|
||||
@@ -1023,7 +1023,7 @@
|
||||
"errorMergingClasses": "Fehler beim Zusammenlegen der Klassen.",
|
||||
"apply": "Übernehmen",
|
||||
"participantsNeedClassAssignment": "{count} Teilnehmer sind noch keiner Klasse zugeordnet. Diese sollten zuerst zugeordnet werden.",
|
||||
"autoAssignableParticipantsHint": "{count} davon koennen automatisch zugeordnet werden.",
|
||||
"autoAssignableParticipantsHint": "{count} davon können automatisch zugeordnet werden.",
|
||||
"assignmentReviewTitle": "{count} Teilnehmer brauchen eine Auswahl:",
|
||||
"conflictSuggestionLabel": "Vorschläge:",
|
||||
"workspaceProblemsTitle": "{count} offene Punkte",
|
||||
|
||||
Reference in New Issue
Block a user