- Affected App
- WoltLab Suite Core
Hallo,
vielleicht mache ich auch etwas falsch, aber mir scheint als wäre es nicht möglich zwei Tab Menüs mit dem Formbuilder ineinander zu verschachteln. Laut Code ist eine Verschachtelung vorgesehen, die Validierung in FormContainer.validateChild() verhindert das aber.
Zum einen wird diese Überprüfung nie aufgerufen, da bereits die Überprüfung auf ITabFormContainer alle anderen children rausschmeißt
Code: lib\system\form\builder\container\FormContainer.class.php
if ($child instanceof ITabMenuFormContainer) {
if ($this->getParent() instanceof ITabMenuFormContainer) {
throw new \InvalidArgumentException("Tab menus can only be nested once.");
}
}
Diese Überprüfung ist eigentlich die entscheidende, übersieht aber, dass zwischen zwei ITabMenuFormContainer zumindest ein ITabFormContainer steht.
Code: lib\system\form\builder\container\FormContainer.class.php
if ($child instanceof ITabMenuFormContainer) {
$parent = $this;
while (!($parent instanceof IFormDocument) && $parent = $parent->getParent()) {
if ($parent instanceof ITabMenuFormContainer) {
throw new \InvalidArgumentException("A tab menu container may only have another tab menu container as a parent, not as an earlier ancestor.");
}
}
}
Mein Code wäre folgender: