N°8772 - Form compiler for classes

This commit is contained in:
Eric Espie
2025-12-16 16:52:46 +01:00
parent bd20818b66
commit c6589b07f1
4 changed files with 134 additions and 8 deletions

View File

@@ -7,13 +7,44 @@
namespace Combodo\iTop\PropertyTree\ValueType;
use Combodo\iTop\DesignElement;
use Combodo\iTop\Forms\Block\Base\ChoiceFormBlock;
use Combodo\iTop\Forms\Block\Base\TextFormBlock;
use Combodo\iTop\PropertyTree\ValueType\AbstractValueType;
use Combodo\iTop\Service\DependencyInjection\DIService;
use utils;
class ValueTypeClass extends AbstractValueType
{
protected array $aCategories = [];
public function GetFormBlockClass(): string
{
return TextFormBlock::class;
return ChoiceFormBlock::class;
}
public function InitFromDomNode(DesignElement $oDomNode): void
{
parent::InitFromDomNode($oDomNode);
$sCategories = $oDomNode->GetChildText('categories-csv');
/** @var \ModelReflection $oModelReflection */
$oModelReflection = DIService::GetInstance()->GetService('ModelReflection');
$sChoices = "[\n";
foreach ($oModelReflection->GetClasses($sCategories, true) as $sClass) {
if ($oModelReflection->IsAbstract($sClass)) {
continue;
}
$sValue = utils::QuoteForPHP($sClass);
$sChoices .= <<<PHP
\Dict::S('Class:$sClass') => $sValue,
PHP;
}
$sChoices .= "\t\t\t]";
$this->aFormBlockOptionsForPHP['choices'] = $sChoices;
}
}