Wichtig
Kleinigkeit
Fehlerbehebung
Wichtig
Detail
#23601
Unsinnige Überschreibungen von LayoutComponent.isDefaultFor(...) löschen
Hintergrund
Die EditPersonComponent überschreibt die Methode LayoutComponent.isDefaultFor(String, BoundCommandGroup) um sich selber als Default-Komponente für den Typ Person zu registrieren. Allerdings kann diese Methode nur dazu verwendet werden, jede Verwendung dieser Komponente als Default-Komponente zu registrieren. Wenn es mehr als eine Verwendung gibt, ist Zufall, welche davon geöffnet wird. Das Verhalten ändert sich potentiell mit jedem Anwendungsstart.
Im Demo führt das dazu, dass bei einem Klick auf eine Person manchmal die korrekte Seite in der Administration geöffnet wird aber manchmal ein Dialog in der Sicht "Technisches Demo > Tests > PersonAjaxForm".
Es gibt auf TL Trunk keine andere Verwendung außer dieser.
Lösung
Diese Methode soll gelöscht werden. Die Default-Komponente wird über deren Layout-XML-Datei registriert, nicht über ihren Code.
Code Migration
- Alle Verwendungen einer Ableitung von EditPersonComponent anschauen und den Eintrag defaultFor in der Layout-XML-Datei entsprechend setzen:
- EditPersonComponent (und deren Ableitungen) waren der Default für Person.
- EditCurrentPersonComponent hatte das überschrieben damit sie (und ihre Ableitungen) für nichts der Default sind.
- Alle Überschreibungen von LayoutComponent.isDefaultFor(...) löschen und in die passende Layout-XML-Datei verschieben.
Test
TestGotoDefaultForPerson.script.xml