Wichtig
Detail
Wichtig
Detail
Ein In-App erstelltes Layout ist nicht Theme abhängig. Wird z.B. im Sidebar-Theme ein neuer Tab in der Haupt-Tabbar erstellt wird ein Eintrag in die Datenbank geschrieben, mit den Argumenten, dem template com.top_logic/maintabbar.template.xml und dem layout key mainTabbar.layout.xml.
Im tl:DatabaseLayoutCache (ein KBCache für die In-App Layouts) werden diese Einträge gelesen und LayoutTemplateCall daraus erstellt. Bei der Erstellung wird der "Body" des Template-Call erstellt. Hierfür werden templates gesucht und ge-inlined. Dies ist Theme abhängig, da in verschiedenen Themes, verschiedene Templates existieren. Der tl:DatabaseLayoutCache wird jedoch auch im Kontext anderer Themes benutzt, also werden hier Theme-fremde Templates benutzt.
Im konkreten Fall kann z.B. im Sidebar-Layout das Template "mainTabbar.xml" benutzt werden, was zur Folge hat, dass anstelle des tl:DeckpaneOnlyTabControlProvider der tl:EmptyLayoutControlProvider als tl:LayoutControlProvider für die Haupt-Tabbar benutzt wird, so dass keine Tabs angezeigt werden.
Test
- Sidebar Theme auswählen.
- In der Haupt-Tabbar einen neuen Tab erstellen.
- Anwendung neu booten. Hierbei dafür sorgen, dass das Theme "Modern" vor dem Theme "Sidebar-Layout" in dem Iterator von MultiThemeFactory.getChoosableThemes() auftritt. Dies geht leider nur durch Debugging in Eclipse und Variablenmanipulation.
- Einloggen
- Erwartung: Alle Hauptreiter werden nach Selektion normal angezeigt.