From f010476923c54b7ecb2aac075b36fc9e4cfc97d2 Mon Sep 17 00:00:00 2001 From: Eric Espie Date: Thu, 18 Dec 2025 17:24:20 +0100 Subject: [PATCH] :art: Add automatic class return type to MetaModel::GetObject() and MetaModel::NewObject() --- application/datamodel.application.xml | 217 ++++++++++++++++++ core/datamodel.core.xml | 164 ------------- lib/composer/autoload_classmap.php | 6 + lib/composer/autoload_static.php | 6 + sources/Forms/Block/Base/CollectionBlock.php | 8 +- .../DataModel/AttributeChoiceFormBlock.php | 2 +- sources/PropertyTree/AbstractProperty.php | 1 - sources/PropertyTree/CollectionOfTrees.php | 12 + .../CollectionType/AbstractCollectionType.php | 34 +++ .../CollectionTypeCollection.php | 18 ++ .../CollectionType/CollectionTypeFactory.php | 50 ++++ sources/PropertyTree/PropertyTreeDesign.php | 3 +- .../PropertyTree/PropertyTreeException.php | 4 +- sources/PropertyTree/PropertyTreeFactory.php | 1 - .../ValueType/ValueTypeBoolean.php | 19 ++ .../PropertyTree/ValueType/ValueTypeIcon.php | 18 ++ .../PropertyTree/ValueType/ValueTypeText.php | 18 ++ sources/alias.php | 27 ++- .../Forms/Compiler/FormsCompilerTest.php | 69 +++--- 19 files changed, 459 insertions(+), 218 deletions(-) create mode 100644 sources/PropertyTree/CollectionType/AbstractCollectionType.php create mode 100644 sources/PropertyTree/CollectionType/CollectionTypeCollection.php create mode 100644 sources/PropertyTree/CollectionType/CollectionTypeFactory.php create mode 100644 sources/PropertyTree/ValueType/ValueTypeBoolean.php create mode 100644 sources/PropertyTree/ValueType/ValueTypeIcon.php create mode 100644 sources/PropertyTree/ValueType/ValueTypeText.php diff --git a/application/datamodel.application.xml b/application/datamodel.application.xml index e20a1a95b..8142a0fdc 100644 --- a/application/datamodel.application.xml +++ b/application/datamodel.application.xml @@ -849,5 +849,222 @@ Call $this->AddInitialAttributeFlags($sAttCode, $iFlags) for all the initial att + + + Dashlet + + + + + + + + + + + + + + + + + + + {{query.selected_class}} + + + + + + bars + + + + + + + + + + + + + + + + + + + + + + {{query.selected_class}} + + + + + {{aggregation_function.value != 'count'}} + + + + + {{query.selected_class}} + numeric + + + + + + + + + + + + + + + + + + {{order_by.value = 'function'}} + + + + + + + + + + + + + + + + + + desc + + + + + Dashlet + + + + + bizmodel + + + + + + Dashlet + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {{query.selected_class}} + enum + + + + + + + + + {{query.selected_class}} + {{group_by.value}} + + + + + + Dashlet + + + + + + + + + + + + + Dashlet + + + + + + + + + + + + + + + + + true + + + + false + + + + + + + Dashlet + + + + + + + + + + + diff --git a/core/datamodel.core.xml b/core/datamodel.core.xml index e2712615c..872b4cef8 100644 --- a/core/datamodel.core.xml +++ b/core/datamodel.core.xml @@ -1185,169 +1185,5 @@ - - - Dashlet - - - - - - - - - - - - - - - - - - - {{query.selected_class}} - - - - - - bars - - - - - - - - - - - - - - - - - - - - - - {{query.selected_class}} - - - - - {{aggregation_function.value != 'count'}} - - - - - {{query.selected_class}} - numeric - - - - - - - - - - - - - - - - - - {{order_by.value = 'function'}} - - - - - - - - - - - - - - - - - - desc - - - - - Dashlet - - - - - bizmodel - - - - - - Dashlet - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - {{query.selected_class}} - enum - - - - - - - - - {{query.selected_class}} - {{group_by.value}} - - - - - diff --git a/lib/composer/autoload_classmap.php b/lib/composer/autoload_classmap.php index fbce8a65a..cbc2b2c08 100644 --- a/lib/composer/autoload_classmap.php +++ b/lib/composer/autoload_classmap.php @@ -553,6 +553,9 @@ return array( 'Combodo\\iTop\\PropertyTree\\AbstractProperty' => $baseDir . '/sources/PropertyTree/AbstractProperty.php', 'Combodo\\iTop\\PropertyTree\\CollectionOfTrees' => $baseDir . '/sources/PropertyTree/CollectionOfTrees.php', 'Combodo\\iTop\\PropertyTree\\CollectionOfValues' => $baseDir . '/sources/PropertyTree/CollectionOfValues.php', + 'Combodo\\iTop\\PropertyTree\\CollectionType\\AbstractCollectionType' => $baseDir . '/sources/PropertyTree/CollectionType/AbstractCollectionType.php', + 'Combodo\\iTop\\PropertyTree\\CollectionType\\CollectionTypeCollection' => $baseDir . '/sources/PropertyTree/CollectionType/CollectionTypeCollection.php', + 'Combodo\\iTop\\PropertyTree\\CollectionType\\CollectionTypeFactory' => $baseDir . '/sources/PropertyTree/CollectionType/CollectionTypeFactory.php', 'Combodo\\iTop\\PropertyTree\\Property' => $baseDir . '/sources/PropertyTree/Property.php', 'Combodo\\iTop\\PropertyTree\\PropertyTree' => $baseDir . '/sources/PropertyTree/PropertyTree.php', 'Combodo\\iTop\\PropertyTree\\PropertyTreeDesign' => $baseDir . '/sources/PropertyTree/PropertyTreeDesign.php', @@ -560,6 +563,7 @@ return array( 'Combodo\\iTop\\PropertyTree\\PropertyTreeFactory' => $baseDir . '/sources/PropertyTree/PropertyTreeFactory.php', 'Combodo\\iTop\\PropertyTree\\ValueType\\AbstractValueType' => $baseDir . '/sources/PropertyTree/ValueType/AbstractValueType.php', 'Combodo\\iTop\\PropertyTree\\ValueType\\ValueTypeAggregateFunction' => $baseDir . '/sources/PropertyTree/ValueType/ValueTypeAggregateFunction.php', + 'Combodo\\iTop\\PropertyTree\\ValueType\\ValueTypeBoolean' => $baseDir . '/sources/PropertyTree/ValueType/ValueTypeBoolean.php', 'Combodo\\iTop\\PropertyTree\\ValueType\\ValueTypeChoice' => $baseDir . '/sources/PropertyTree/ValueType/ValueTypeChoice.php', 'Combodo\\iTop\\PropertyTree\\ValueType\\ValueTypeChoiceFromInput' => $baseDir . '/sources/PropertyTree/ValueType/ValueTypeChoiceFromInput.php', 'Combodo\\iTop\\PropertyTree\\ValueType\\ValueTypeClass' => $baseDir . '/sources/PropertyTree/ValueType/ValueTypeClass.php', @@ -567,11 +571,13 @@ return array( 'Combodo\\iTop\\PropertyTree\\ValueType\\ValueTypeClassAttributeGroupBy' => $baseDir . '/sources/PropertyTree/ValueType/ValueTypeClassAttributeGroupBy.php', 'Combodo\\iTop\\PropertyTree\\ValueType\\ValueTypeClassAttributeValue' => $baseDir . '/sources/PropertyTree/ValueType/ValueTypeClassAttributeValue.php', 'Combodo\\iTop\\PropertyTree\\ValueType\\ValueTypeFactory' => $baseDir . '/sources/PropertyTree/ValueType/ValueTypeFactory.php', + 'Combodo\\iTop\\PropertyTree\\ValueType\\ValueTypeIcon' => $baseDir . '/sources/PropertyTree/ValueType/ValueTypeIcon.php', 'Combodo\\iTop\\PropertyTree\\ValueType\\ValueTypeInteger' => $baseDir . '/sources/PropertyTree/ValueType/ValueTypeInteger.php', 'Combodo\\iTop\\PropertyTree\\ValueType\\ValueTypeLabel' => $baseDir . '/sources/PropertyTree/ValueType/ValueTypeLabel.php', 'Combodo\\iTop\\PropertyTree\\ValueType\\ValueTypeOQL' => $baseDir . '/sources/PropertyTree/ValueType/ValueTypeOQL.php', 'Combodo\\iTop\\PropertyTree\\ValueType\\ValueTypeProfileName' => $baseDir . '/sources/PropertyTree/ValueType/ValueTypeProfileName.php', 'Combodo\\iTop\\PropertyTree\\ValueType\\ValueTypeString' => $baseDir . '/sources/PropertyTree/ValueType/ValueTypeString.php', + 'Combodo\\iTop\\PropertyTree\\ValueType\\ValueTypeText' => $baseDir . '/sources/PropertyTree/ValueType/ValueTypeText.php', 'Combodo\\iTop\\Renderer\\BlockRenderer' => $baseDir . '/sources/Renderer/BlockRenderer.php', 'Combodo\\iTop\\Renderer\\Bootstrap\\BsFieldRendererMappings' => $baseDir . '/sources/Renderer/Bootstrap/BsFieldRendererMappings.php', 'Combodo\\iTop\\Renderer\\Bootstrap\\BsFormRenderer' => $baseDir . '/sources/Renderer/Bootstrap/BsFormRenderer.php', diff --git a/lib/composer/autoload_static.php b/lib/composer/autoload_static.php index ce5699a0f..6d6bf00d0 100644 --- a/lib/composer/autoload_static.php +++ b/lib/composer/autoload_static.php @@ -939,6 +939,9 @@ class ComposerStaticInit7f81b4a2a468a061c306af5e447a9a9f 'Combodo\\iTop\\PropertyTree\\AbstractProperty' => __DIR__ . '/../..' . '/sources/PropertyTree/AbstractProperty.php', 'Combodo\\iTop\\PropertyTree\\CollectionOfTrees' => __DIR__ . '/../..' . '/sources/PropertyTree/CollectionOfTrees.php', 'Combodo\\iTop\\PropertyTree\\CollectionOfValues' => __DIR__ . '/../..' . '/sources/PropertyTree/CollectionOfValues.php', + 'Combodo\\iTop\\PropertyTree\\CollectionType\\AbstractCollectionType' => __DIR__ . '/../..' . '/sources/PropertyTree/CollectionType/AbstractCollectionType.php', + 'Combodo\\iTop\\PropertyTree\\CollectionType\\CollectionTypeCollection' => __DIR__ . '/../..' . '/sources/PropertyTree/CollectionType/CollectionTypeCollection.php', + 'Combodo\\iTop\\PropertyTree\\CollectionType\\CollectionTypeFactory' => __DIR__ . '/../..' . '/sources/PropertyTree/CollectionType/CollectionTypeFactory.php', 'Combodo\\iTop\\PropertyTree\\Property' => __DIR__ . '/../..' . '/sources/PropertyTree/Property.php', 'Combodo\\iTop\\PropertyTree\\PropertyTree' => __DIR__ . '/../..' . '/sources/PropertyTree/PropertyTree.php', 'Combodo\\iTop\\PropertyTree\\PropertyTreeDesign' => __DIR__ . '/../..' . '/sources/PropertyTree/PropertyTreeDesign.php', @@ -946,6 +949,7 @@ class ComposerStaticInit7f81b4a2a468a061c306af5e447a9a9f 'Combodo\\iTop\\PropertyTree\\PropertyTreeFactory' => __DIR__ . '/../..' . '/sources/PropertyTree/PropertyTreeFactory.php', 'Combodo\\iTop\\PropertyTree\\ValueType\\AbstractValueType' => __DIR__ . '/../..' . '/sources/PropertyTree/ValueType/AbstractValueType.php', 'Combodo\\iTop\\PropertyTree\\ValueType\\ValueTypeAggregateFunction' => __DIR__ . '/../..' . '/sources/PropertyTree/ValueType/ValueTypeAggregateFunction.php', + 'Combodo\\iTop\\PropertyTree\\ValueType\\ValueTypeBoolean' => __DIR__ . '/../..' . '/sources/PropertyTree/ValueType/ValueTypeBoolean.php', 'Combodo\\iTop\\PropertyTree\\ValueType\\ValueTypeChoice' => __DIR__ . '/../..' . '/sources/PropertyTree/ValueType/ValueTypeChoice.php', 'Combodo\\iTop\\PropertyTree\\ValueType\\ValueTypeChoiceFromInput' => __DIR__ . '/../..' . '/sources/PropertyTree/ValueType/ValueTypeChoiceFromInput.php', 'Combodo\\iTop\\PropertyTree\\ValueType\\ValueTypeClass' => __DIR__ . '/../..' . '/sources/PropertyTree/ValueType/ValueTypeClass.php', @@ -953,11 +957,13 @@ class ComposerStaticInit7f81b4a2a468a061c306af5e447a9a9f 'Combodo\\iTop\\PropertyTree\\ValueType\\ValueTypeClassAttributeGroupBy' => __DIR__ . '/../..' . '/sources/PropertyTree/ValueType/ValueTypeClassAttributeGroupBy.php', 'Combodo\\iTop\\PropertyTree\\ValueType\\ValueTypeClassAttributeValue' => __DIR__ . '/../..' . '/sources/PropertyTree/ValueType/ValueTypeClassAttributeValue.php', 'Combodo\\iTop\\PropertyTree\\ValueType\\ValueTypeFactory' => __DIR__ . '/../..' . '/sources/PropertyTree/ValueType/ValueTypeFactory.php', + 'Combodo\\iTop\\PropertyTree\\ValueType\\ValueTypeIcon' => __DIR__ . '/../..' . '/sources/PropertyTree/ValueType/ValueTypeIcon.php', 'Combodo\\iTop\\PropertyTree\\ValueType\\ValueTypeInteger' => __DIR__ . '/../..' . '/sources/PropertyTree/ValueType/ValueTypeInteger.php', 'Combodo\\iTop\\PropertyTree\\ValueType\\ValueTypeLabel' => __DIR__ . '/../..' . '/sources/PropertyTree/ValueType/ValueTypeLabel.php', 'Combodo\\iTop\\PropertyTree\\ValueType\\ValueTypeOQL' => __DIR__ . '/../..' . '/sources/PropertyTree/ValueType/ValueTypeOQL.php', 'Combodo\\iTop\\PropertyTree\\ValueType\\ValueTypeProfileName' => __DIR__ . '/../..' . '/sources/PropertyTree/ValueType/ValueTypeProfileName.php', 'Combodo\\iTop\\PropertyTree\\ValueType\\ValueTypeString' => __DIR__ . '/../..' . '/sources/PropertyTree/ValueType/ValueTypeString.php', + 'Combodo\\iTop\\PropertyTree\\ValueType\\ValueTypeText' => __DIR__ . '/../..' . '/sources/PropertyTree/ValueType/ValueTypeText.php', 'Combodo\\iTop\\Renderer\\BlockRenderer' => __DIR__ . '/../..' . '/sources/Renderer/BlockRenderer.php', 'Combodo\\iTop\\Renderer\\Bootstrap\\BsFieldRendererMappings' => __DIR__ . '/../..' . '/sources/Renderer/Bootstrap/BsFieldRendererMappings.php', 'Combodo\\iTop\\Renderer\\Bootstrap\\BsFormRenderer' => __DIR__ . '/../..' . '/sources/Renderer/Bootstrap/BsFormRenderer.php', diff --git a/sources/Forms/Block/Base/CollectionBlock.php b/sources/Forms/Block/Base/CollectionBlock.php index 8c3f60564..576d10ffb 100644 --- a/sources/Forms/Block/Base/CollectionBlock.php +++ b/sources/Forms/Block/Base/CollectionBlock.php @@ -11,6 +11,8 @@ use Combodo\iTop\Forms\Block\AbstractFormBlock; use Combodo\iTop\Forms\Block\AbstractTypeFormBlock; use Combodo\iTop\Forms\FormType\Base\CollectionFormType; use Combodo\iTop\Forms\IO\Format\ClassIOFormat; +use Combodo\iTop\Forms\IO\Format\IntegerIOFormat; +use Combodo\iTop\Forms\IO\Format\NumberIOFormat; use Combodo\iTop\Forms\Register\IORegister; use Combodo\iTop\Forms\Register\OptionsRegister; use Combodo\iTop\Forms\Register\RegisterException; @@ -23,10 +25,8 @@ use Combodo\iTop\Forms\Register\RegisterException; */ class CollectionBlock extends AbstractTypeFormBlock { - // Inputs - public const INPUT_CLASS_NAME = 'class'; - private AbstractTypeFormBlock $oPrototypeBlock; + public const OUTPUT_COUNT = 'count'; /** @inheritdoc */ public function GetFormType(): string @@ -53,7 +53,7 @@ class CollectionBlock extends AbstractTypeFormBlock protected function RegisterIO(IORegister $oIORegister): void { parent::RegisterIO($oIORegister); - $oIORegister->AddInput(self::INPUT_CLASS_NAME, ClassIOFormat::class); + $oIORegister->AddOutput(self::OUTPUT_COUNT, IntegerIOFormat::class); } /** @inheritdoc */ diff --git a/sources/Forms/Block/DataModel/AttributeChoiceFormBlock.php b/sources/Forms/Block/DataModel/AttributeChoiceFormBlock.php index f6f2100e0..5edf03482 100644 --- a/sources/Forms/Block/DataModel/AttributeChoiceFormBlock.php +++ b/sources/Forms/Block/DataModel/AttributeChoiceFormBlock.php @@ -104,7 +104,7 @@ class AttributeChoiceFormBlock extends ChoiceFormBlock } break; - case 'group_by': + case 'groupable': $aForbiddenAttType = [ 'AttributeLinkedSet', 'AttributeFriendlyName', diff --git a/sources/PropertyTree/AbstractProperty.php b/sources/PropertyTree/AbstractProperty.php index a03cfbddf..5baf0718a 100644 --- a/sources/PropertyTree/AbstractProperty.php +++ b/sources/PropertyTree/AbstractProperty.php @@ -9,7 +9,6 @@ namespace Combodo\iTop\PropertyTree; use Combodo\iTop\DesignElement; use Combodo\iTop\PropertyTree\ValueType\AbstractValueType; -use utils; /** * @since 3.3.0 diff --git a/sources/PropertyTree/CollectionOfTrees.php b/sources/PropertyTree/CollectionOfTrees.php index 7974fe838..26fa3970f 100644 --- a/sources/PropertyTree/CollectionOfTrees.php +++ b/sources/PropertyTree/CollectionOfTrees.php @@ -9,6 +9,10 @@ namespace Combodo\iTop\PropertyTree; use Combodo\iTop\DesignElement; use Combodo\iTop\Forms\Block\Base\CollectionBlock; +use Combodo\iTop\PropertyTree\CollectionType\AbstractCollectionType; +use Combodo\iTop\PropertyTree\CollectionType\CollectionTypeFactory; +use Combodo\iTop\PropertyTree\ValueType\AbstractValueType; +use Combodo\iTop\PropertyTree\ValueType\ValueTypeFactory; /** * @since 3.3.0 @@ -16,6 +20,7 @@ use Combodo\iTop\Forms\Block\Base\CollectionBlock; class CollectionOfTrees extends AbstractProperty { protected ?string $sButtonLabel; + protected ?AbstractCollectionType $oCollectionType; /** * @inheritDoc @@ -27,6 +32,13 @@ class CollectionOfTrees extends AbstractProperty $this->sButtonLabel = $oDomNode->GetChildText('button-label'); + $oCollectionTypeNode = $oDomNode->GetOptionalElement('collection-type'); + if ($oCollectionTypeNode) { + $this->oCollectionType = CollectionTypeFactory::GetInstance()->CreateCollectionTypeFromDomNode($oCollectionTypeNode); + } else { + throw new PropertyTreeException("Node: {$this->sId}, missing collection-type in node specification"); + } + // read child properties foreach ($oDomNode->GetUniqueElement('prototype')->childNodes as $oNode) { if ($oNode instanceof DesignElement) { diff --git a/sources/PropertyTree/CollectionType/AbstractCollectionType.php b/sources/PropertyTree/CollectionType/AbstractCollectionType.php new file mode 100644 index 000000000..511367230 --- /dev/null +++ b/sources/PropertyTree/CollectionType/AbstractCollectionType.php @@ -0,0 +1,34 @@ +GetFormBlockClass(); + $oBlockNode = new $sBlockNodeClass('foo'); + foreach ($oBlockNode->GetInputs() as $oInput) { + $sInputName = $oInput->GetName(); + $this->aInputs[$sInputName] = $oInput; + $sInputValue = $oDomNode->GetChildText($sInputName); + if (utils::IsNotNullOrEmptyString($sInputValue)) { + $this->aInputValues[$sInputName] = $sInputValue; + } + } + foreach ($oBlockNode->GetOutputs() as $oOutput) { + $this->aOutputs[] = $oOutput->GetName(); + } + } + +} diff --git a/sources/PropertyTree/CollectionType/CollectionTypeCollection.php b/sources/PropertyTree/CollectionType/CollectionTypeCollection.php new file mode 100644 index 000000000..17ed7401b --- /dev/null +++ b/sources/PropertyTree/CollectionType/CollectionTypeCollection.php @@ -0,0 +1,18 @@ +getAttribute('xsi:type'); + + if (is_a($sNodeType, AbstractCollectionType::class, true)) { + $oNode = new $sNodeType(); + $oNode->InitFromDomNode($oDomNode); + + return $oNode; + } + + throw new PropertyTreeException('Unknown collection-type node class: '.json_encode($sNodeType)); + } + +} diff --git a/sources/PropertyTree/PropertyTreeDesign.php b/sources/PropertyTree/PropertyTreeDesign.php index 0c0576d36..3e8cc917d 100644 --- a/sources/PropertyTree/PropertyTreeDesign.php +++ b/sources/PropertyTree/PropertyTreeDesign.php @@ -9,6 +9,7 @@ namespace Combodo\iTop\PropertyTree; use Combodo\iTop\DesignDocument; use Exception; +use ReturnTypeWillChange; use utils; class PropertyTreeDesign extends DesignDocument @@ -70,7 +71,7 @@ class PropertyTreeDesign extends DesignDocument * @return int */ // Return type union is not supported by PHP 7.4, we can remove the following PHP attribute and add the return type once iTop min PHP version is PHP 8.0+ - #[\ReturnTypeWillChange] + #[ReturnTypeWillChange] public function save($filename, $options = null) { $this->documentElement->setAttribute('xsi:noNamespaceSchemaLocation', 'https://www.combodo.com/itop-schema/'.ITOP_DESIGN_LATEST_VERSION); diff --git a/sources/PropertyTree/PropertyTreeException.php b/sources/PropertyTree/PropertyTreeException.php index c7132cd06..2f6c164d0 100644 --- a/sources/PropertyTree/PropertyTreeException.php +++ b/sources/PropertyTree/PropertyTreeException.php @@ -7,6 +7,8 @@ namespace Combodo\iTop\PropertyTree; -class PropertyTreeException extends \Exception +use Exception; + +class PropertyTreeException extends Exception { } diff --git a/sources/PropertyTree/PropertyTreeFactory.php b/sources/PropertyTree/PropertyTreeFactory.php index fff06f9e8..e00779d26 100644 --- a/sources/PropertyTree/PropertyTreeFactory.php +++ b/sources/PropertyTree/PropertyTreeFactory.php @@ -9,7 +9,6 @@ namespace Combodo\iTop\PropertyTree; use Combodo\iTop\DesignDocument; use Combodo\iTop\DesignElement; -use utils; class PropertyTreeFactory { diff --git a/sources/PropertyTree/ValueType/ValueTypeBoolean.php b/sources/PropertyTree/ValueType/ValueTypeBoolean.php new file mode 100644 index 000000000..01662f936 --- /dev/null +++ b/sources/PropertyTree/ValueType/ValueTypeBoolean.php @@ -0,0 +1,19 @@ + - + - + test @@ -115,12 +115,12 @@ PHP, - + - + @@ -133,48 +133,48 @@ PHP, - + test - + - + - + - + - + - + - + - + @@ -257,15 +257,16 @@ PHP, UI:AddSubTree + - + - + @@ -309,7 +310,7 @@ PHP, - + Contact Test @@ -338,7 +339,7 @@ PHP, - + {{CONCAT("'", '"')}} 'Class' and "Attribute" Test @@ -373,13 +374,13 @@ PHP, - + test - + {{class_property.text}} @@ -413,13 +414,13 @@ PHP, - + test - + {{IF(class_property.value = '', 'Person', class_property.value)}} @@ -458,13 +459,13 @@ PHP, - + {{source_property.text != 'count'}} - + @@ -500,18 +501,18 @@ PHP, - + - + {{IF(source_a_property.text != '', source_a_property.text, source_b_property.text)}} - + @@ -551,7 +552,7 @@ PHP, - + addon/authentication,grant_by_profile,silo @@ -569,9 +570,9 @@ class FormFor__ClassCategory extends Combodo\iTop\Forms\Block\Base\FormBlock \Dict::S('Class:UserExternal') => 'UserExternal', \Dict::S('Class:UserLDAP') => 'UserLDAP', \Dict::S('Class:UserLocal') => 'UserLocal', - \Dict::S('Class:AuditRule') => 'AuditRule', \Dict::S('Class:AuditCategory') => 'AuditCategory', \Dict::S('Class:AuditDomain') => 'AuditDomain', + \Dict::S('Class:AuditRule') => 'AuditRule', \Dict::S('Class:QueryOQL') => 'QueryOQL', \Dict::S('Class:ActionEmail') => 'ActionEmail', \Dict::S('Class:TriggerOnPortalUpdate') => 'TriggerOnPortalUpdate', @@ -651,7 +652,7 @@ PHP, {{source_property.text == 'count'}} - + @@ -669,7 +670,7 @@ XML, {{source_property.text = 'count'}} - + @@ -686,13 +687,13 @@ XML, - + {{source_property.text_output != 'count'}} - + @@ -709,13 +710,13 @@ XML, - + {{source_property != 'count'}} - +