From b2e3fb635431df9bd2349d7813cd7c12eb05d9ad Mon Sep 17 00:00:00 2001 From: Benjamin Dalsass <95754414+bdalsass@users.noreply.github.com> Date: Fri, 5 Jul 2024 09:10:19 +0200 Subject: [PATCH] =?UTF-8?q?N=C2=B07024=20-=20Fix=20opening=20an=20object?= =?UTF-8?q?=20with=20abstract=20class=20indirect=20linked=20set=20in=20Por?= =?UTF-8?q?tal?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../FieldRenderer/BsLinkedSetFieldRenderer.php | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/sources/Renderer/Bootstrap/FieldRenderer/BsLinkedSetFieldRenderer.php b/sources/Renderer/Bootstrap/FieldRenderer/BsLinkedSetFieldRenderer.php index 336607432..29b88c111 100644 --- a/sources/Renderer/Bootstrap/FieldRenderer/BsLinkedSetFieldRenderer.php +++ b/sources/Renderer/Bootstrap/FieldRenderer/BsLinkedSetFieldRenderer.php @@ -768,6 +768,15 @@ JS */ protected function InjectRendererFileAssets(string $sClass, array $aAttributesCodesToDisplay, $oOutput) { + // handle abstract class + while(MetaModel::IsAbstract($sClass)){ + $aChildClasses = MetaModel::EnumChildClasses($sClass); + if(count($aChildClasses) > 0){ + $sClass = $aChildClasses[0]; + } + } + + // create a fake object to pass to renderers for retrieving global assets $oItem = MetaModel::NewObject($sClass); // Iterate throw attributes... @@ -776,10 +785,13 @@ JS // Retrieve attribute definition $oAttDef = MetaModel::GetAttributeDef($sClass, $sAttCode); + // make form field from attribute $oField = $oAttDef->MakeFormField($oItem); + // retrieve the form field renderer $sFieldRendererClass = static::GetFieldRendererClass($oField); + // retrieve renderer global assets if ($sFieldRendererClass !== null) { /** @var FieldRenderer $oFieldRenderer */ $oFieldRenderer = new $sFieldRendererClass($oField);