Warn on leaving the editor with unsaved changes
Ergänzt einen beforeunload-Handler im Frontend-Editor: Beim Verlassen der Seite (Link, Zurück, Tab schließen) wird gewarnt, sobald mindestens ein Editor-Formular ungespeicherte Änderungen hat. Der Handler koppelt an die bestehende Dirty-Erkennung (data-survey-dirty-form) und wird nur registriert, wenn solche Formulare existieren – also nur im Editor, nicht in Liste/Reader/Ergebnissen. Ein bewusstes Absenden (Speichern oder Aktion) setzt über einen globalen submit-Listener ein Flag, sodass der normale Speicher-Flow nicht warnt. Bewusst kein Auto-Save (getrennte Formulare mit eigenen CSRF-Tokens, Struktur-Sperre nach Teilnahmen/Veröffentlichung); Dirty-Hinweis plus beforeunload sind der risikoarme Kompromiss. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -170,6 +170,14 @@ Aktueller Aufbau:
|
||||
- Fragen im Frontend nicht mehr änderbar
|
||||
- Metadaten im Frontend ebenfalls nicht mehr bearbeitbar
|
||||
|
||||
Ungespeicherte Änderungen (bewusst kein Auto-Save):
|
||||
|
||||
- Jedes Editor-Formular (`data-survey-dirty-form`: Metadaten, jede Frage, neue Frage) trackt clientseitig, ob sich der Inhalt gegenüber dem Ladezustand geändert hat, und blendet den roten „Ungespeicherte Änderungen"-Hinweis ein.
|
||||
- Zusätzlich gibt es einen `beforeunload`-Handler (`_survey_assets.html.twig`), der beim Verlassen der Seite (Link, Zurück, Tab schließen) warnt, sobald mindestens ein Formular ungespeicherte Änderungen hat.
|
||||
- Der Handler wird nur registriert, wenn dirty-getrackte Formulare existieren (also nur im Editor, nicht in Liste/Reader/Ergebnissen).
|
||||
- Ein bewusstes Absenden (Speichern oder eine Aktion) setzt ein `surveyIsSubmitting`-Flag über einen globalen `submit`-Listener, damit der normale Speicher-Flow **nicht** warnt.
|
||||
- Auto-Save wurde bewusst nicht umgesetzt (getrennte Formulare mit eigenen CSRF-Tokens, Struktur-Sperre nach Teilnahmen/Veröffentlichung). Der Dirty-Hinweis plus die `beforeunload`-Warnung sind der gewählte, risikoarme Kompromiss.
|
||||
|
||||
Wichtige Entscheidung:
|
||||
|
||||
- Die Header-Badges im Fragen-Akkordeon wurden bewusst entfernt.
|
||||
|
||||
Reference in New Issue
Block a user