enhancement
major
#29759
React-UI: Commit-Nachrichten für Änderungen aus Sichten (TL-Script-Aktionen, Transaktionen, Löschen) konfigurierbar, sinnvolle Standard-Nachrichten
Kontext
In der React-UI (.view.xml-Sichten, com.top_logic.layout.view) werden persistente Änderungen in mehreren Aktionen in einer Transaktion ausgeführt. Fast alle dieser Transaktionen wurden ohne Commit-Nachricht gestartet; in der Historie eines Objekts erschien dann nur "Keine Nachricht.". Andere Nachrichten sagten nicht, was geändert wurde ("Speichern", "Hintergrundauftrag"), und viele Commit-Nachrichten der Engine waren sprachlich falsch ("Erstellte Rollen.", Imperative, Tippfehler). Die Revisionsübersicht der Administration ("Änderungen") zeigte die Revision redundant mit Datum, sortierte sie als Text, zeigte neue Commits nicht an und bot statt einer Detailansicht nur eine unlesbare Spalte "Änderungen".
Verhalten
Commit-Nachrichten
- <with-transaction>, <evaluate-script>, <delete-object>, <persist-transient> und die TL-Script-Konsole haben die Option commitMessage, analog zu commitMessage der klassischen Kommandos: ein internationalisierter Text, dessen Platzhalter {0} durch die Beschriftung des Eingabeobjekts der Aktion ersetzt wird.
- Standard-Nachrichten ohne Konfiguration:
- <with-transaction>, <evaluate-script>: Operation "<Kommando>" auf "<Eingabe>" durchgeführt. (ohne Eingabe: Operation "<Kommando>" durchgeführt.; ohne beschriftetes Kommando: Objekt aktualisiert: <Eingabe> bzw. Änderungen durchgeführt.).
- <delete-object>: Objekt gelöscht: <Objekt>, <persist-transient>: Objekt erstellt: <Objekt>, Speichern eines Formulars: Objekt aktualisiert: <Objekt> (dieselben Nachrichten wie die klassischen CRUD-Kommandos).
- TL-Script-Konsole: Benutzerdefiniertes Skript ausgeführt: <Skript> (wie die klassische Konsole).
- Feste Nachrichten für Kalendereinträge (verschieben, Dauer ändern, anlegen), Objektlisten (hinzufügen, entfernen), die Rechtematrix (erteilen, entziehen), Schritte von Hintergrundaufträgen (mit Schritt und Elementbereich) und Zugriffstoken (ausstellen, zurückziehen, verwenden).
- Die Sichten der Engine und der Demos sind so konfiguriert, dass Speichern- und Änderungskommandos das geänderte Objekt nennen (z.B. Passwort von <Konto> zurückgesetzt., Gruppe <Name> angelegt., Konto <Login> angelegt.).
- Alle Commit-Nachrichten der Engine sind einheitlich formuliert: Sie nennen, was geschehen ist (Deutsch: Partizip am Ende, z.B. "Rollen erstellt."; Englisch: Vergangenheit). Die deutschen Texte der Zugriffstoken-Aktionen verwenden die richtigen Begriffe.
Revisionsübersicht (Administration → Überwachung → Änderungen)
- Die Spalte Revision zeigt nur die Revisionsnummer (ohne Tausendertrenner, numerisch sortiert); Datum, Autor und Nachricht bleiben.
- Die Spalte "Änderungen" entfällt. Das Aktivieren einer Zeile öffnet einen Dialog mit Revision, Datum, Autor, Nachricht und einer Tabelle der Änderungen: Art (angelegt/gelöscht/geändert), Objekt, Attribut, alter und neuer Wert.
- Neue Commits erscheinen in der geöffneten Übersicht (mit dem Herzschlag der Server-Verbindung, spätestens nach 30 s).
- Deutsche Beschriftungen der Change-Set-Attribute: "Autor", "Nachricht".
Behobene Fehler
- changeLog(...) mit konstanten Argumenten wurde beim Übersetzen des Skripts ausgewertet und das Ergebnis eingefroren; revertChanges(...) galt als seiteneffektfrei.
- Formulare im Anzeigemodus zeigten Pflichtfeld-Markierungen und Hilfe-Icons; der Anzeigemodus wird nun an das Formular-Layout übertragen.
- Bild-Icons des Themes (PNG/GIF/SVG) wurden in React-Controls ohne Kontextpfad und Theme-Verzeichnis ausgeliefert und nicht geladen.
- Das Zahlenformat "long" war als "Ganzzahl (ohne Trenner)" beschriftet, gruppiert aber Ziffern; es heißt nun "Ganzzahl (Standard)".
Technische Hinweise
- WithCommitMessage.buildCommitMessage(operationLabel, model) ist der gemeinsame Kern beider Oberflächen; buildCommandMessage(component, handler, model) delegiert darauf.
- ViewCommand.Config ist mit @Id(ViewCommand.class) markiert, ViewCommand#getLabel() liefert die Beschriftung. ViewCommitMessage ermittelt beim Instanziieren einer Aktion das umschließende Kommando über InstantiationContext.OUTER.
- WithTransaction.beginTransaction(boolean, ResKey).
- Spaltendeklarationen (<column>, <computed-column>) akzeptieren <annotations> (Modell-Annotationen, z.B. <format>), die Vorrang vor den Annotationen von Attribut bzw. Typ haben.
- ClientImage.encode(ReactContext, ThemeImage) (com.top_logic.layout.react) liefert Icons an den Client: CSS-Icons unverändert, Bild-Icons als ladbare URL.
- Das Gegenstück für Drop-Operationen der klassischen Oberfläche ist Ticket #29513.