Verbesserung
Top-Thema
Wichtig
Kleinigkeit
Wichtig
Wichtig
#24464
Vereinfachte Layout-Templates mit berechneten Alias-Variablen
In aktuellen Layout-Templates müssen viele Parameter gefüllt werden, für die es einen vernünftigen Default gibt (z.B. Komponentennamen und Resource-Prefixe). Beides leitet sich aus dem Namen der Layout-Datei ab.
Da Komponenten qualifizierte Namen (Dateiname + lokaler Name) erhalten, können Komponenten-Namen in Templates Konstanten sein (view, tab, editor, ...).
Die Konvention für den Resource-Prefix einer Sicht ist layouts.<Name der Sicht ohne .layout.xml>.. Diese Konvention hätte man gerne automatisch, ohne den Wert in jede Datei zu schreiben.
Anwendung
Statt
#!xml <include name="templates/levelOne.xml" componentName="tableTab" resPrefix="demo.table." > <inject> <tabInfo image="css:fas fa-table" label="demo.table.tabber" /> </inject> <components> <layout-reference resource="my.app/myView.layout.xml"/> ...
möchte man z.B. gerne schreiben:
#!xml <include name="templates/tabbar.xml" tabIcon="css:fas fa-table" > <components> <layout-reference resource="my.app/myView.layout.xml"/> ...
Damit man in einer Sicht keine expliziten Resource-Prefixe vergeben muss, steht die berechnete Alias-Variable %LAYOUT_RESPREFIX% zuf Verfügung, die in jeder Sicht zu einem individuellen Res-Prefix expandiert, der sich aus dem Sicht-Namen (Pfad zu der *.layout.xml-Datei) ableitet. Dieser berechnete Alias wird jetzt per Default in den zur Verfügung gestellten Templates verwendet.
Migration
- Bestehende Layout-Konfigurationen müssen migriert werden:
- Ant-Target update aus dem Build-Script /com.top_logic/bin/compat/upgrade-layout-templates.xml ausführen.
- Alle Layouts normalisieren (Target normalize_layouts aus dem Build-Script der Anwendung)
- Diese Migration belässt jetzt unnötig gewordene Konfigurationen in den Anwendungslayouts (Res-Prefix, Komponenten-Namen), um die Migration zu vereinfachen. Auf solche Werte wird i.d.R. von außerhalb Bezug genommen (Testfälle, Übersetzungen). Einstellungen, die jetzt nicht mehr notwendig sind erhalten den Prefix z_legacy_.
Test
Refactoring, kein zusätzlicher Test.