Verbesserung
Top-Thema
Wichtig
Kleinigkeit
Wichtig
Detail
#24407
Layout-Refactoring: (Admin-)Layouts so umstrukturieren, dass .layout.xml und Component-XML benachbart sind
Die neue Form der Layout-Definition (siehe #23037, LayoutStructure) hat zur Folge, dass (zumindest bei migrierten Layouts) pro Content-Sicht zwei Layout-Dateien existieren (die generierte Top-Level-Layout-Datei (*.layout.xml) und die bisherige Component-XML-Datei *.xml). Dabei bindet die Layout-XML-Datei über die Indirektion eines Layout-Templates die Component-XML-Datei ein. Aufgrund der Generierungs-Heuristik sind beide Dateien i.d.R. nicht benachbart, sondern liegen in vollkommen verschiedenen Teilbäumen.
Die durch die Basis bereitgestellten (administrativen) Layout-Definitionen sollen so angepast werden, dass sie die Konventionen für die Layout-Struktur in LayoutStructure erfüllen.
Code-Migration
Die pro Anwendung unabhängig definierte Administrationsstruktur durch die von den Basiskomponenten geerbte Administration (admin/index.layout.xml) ersetzen und ggf. durch eigenen Layout-Overlay-Dateien anpassen:
- Den in der Migration von #23037 erzeugten Ordner WEB-INF/layouts/my.project.name mit seinem gesamten Inhalt löschen.
- Aus der eigenen layout.csv alle aus der Basis geerbten administrativen Komponenten entfernen (der Admin-Tab darf nur noch durch die Anwendung selbst definiert Layouts enthalten). Hat die Anwendung keine eigenen Admin-Layouts, bleibt der Admin-Tab leer.
- Das Layout neu generieren (Ant layout_setup).
- In masterFrame.layout.xml der Anwendung die Zeile
<layout-reference resource="my.project.name/tl/admin/adminView.layout.xml"/>
durch
<layout-reference resource="admin/index.layout.xml"/>
ersetzen.
- Die Datei layout.csv entfernen (jede weitere Generierung zerstört die neue Struktur).
- Eigene administrative Komponenten in die durch die Basis vordefinierte Admin-Struktur einbinden.
- Hierfür ist eine *.layout.overlay.xml für den Admin-Tab in der Anwendung anzulegen, in den die administrative Komponente der Anwendung eingefügt werden soll. Vgl. folgendes Beispiel.
Um eine Komponenten in die Basis-Administration einzufügen, muss eine Datei admin/base/index.layout.overlay.xml in der Anwendung angelegt werden und mit folgendem Inhalt gefüllt werden:
admin/base/index.layout.overlay.xml:
#!xml <component> <component name="adminBaseView"> <components> <layout-reference resource="my.module.name/admin/my/component.layout.xml"/> </components> </component> </component>
Die masterFrame.layout.xml der Anwendung sollte danch folgene Struktur haben:
#!xml <include name="templates/masterFrame.xml" ...> <components> <layout-reference resource="com.my.app/myFirstView.layout.xml"/> ... <layout-reference resource="com.my.app/myLastView.layout.xml"/> <layout-reference resource="admin/index.layout.xml"/> </components> </include>
Test
Refactoring, kein zusätzlicher Test.