mirror of
https://github.com/Combodo/iTop.git
synced 2026-04-19 16:48:42 +02:00
io array option
This commit is contained in:
@@ -81,6 +81,7 @@ class CollectionEntryElement extends HTMLElement {
|
||||
const prev = this.previousElementSibling;
|
||||
if (prev) {
|
||||
this.parentNode.insertBefore(this, prev);
|
||||
this.updateButtonStates();
|
||||
prev.updateButtonStates();
|
||||
}
|
||||
}
|
||||
@@ -93,6 +94,7 @@ class CollectionEntryElement extends HTMLElement {
|
||||
const next = this.nextElementSibling;
|
||||
if (next) {
|
||||
this.parentNode.insertBefore(next, this);
|
||||
this.updateButtonStates();
|
||||
next.updateButtonStates();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
|
||||
namespace Combodo\iTop\Forms\Block;
|
||||
|
||||
use Combodo\iTop\Forms\Block\Base\CollectionBlock;
|
||||
use Combodo\iTop\Forms\Block\Base\FormBlock;
|
||||
use Combodo\iTop\Forms\IO\AbstractFormIO;
|
||||
use Combodo\iTop\Forms\IO\Converter\AbstractConverter;
|
||||
@@ -16,7 +17,6 @@ use Combodo\iTop\Forms\IO\FormOutput;
|
||||
use Combodo\iTop\Forms\Register\IORegister;
|
||||
use Combodo\iTop\Forms\Register\OptionsRegister;
|
||||
use Combodo\iTop\Forms\Register\RegisterException;
|
||||
use Combodo\iTop\Forms\Block\Base\CollectionBlock;
|
||||
|
||||
/**
|
||||
* Abstract form block.
|
||||
@@ -41,7 +41,7 @@ abstract class AbstractFormBlock implements IFormBlock
|
||||
* @param string $sName
|
||||
* @param array $aOptions
|
||||
*
|
||||
* @throws \Combodo\iTop\Forms\Register\RegisterException
|
||||
* @throws RegisterException
|
||||
*/
|
||||
public function __construct(private readonly string $sName, array $aOptions = [])
|
||||
{
|
||||
@@ -184,13 +184,15 @@ abstract class AbstractFormBlock implements IFormBlock
|
||||
*
|
||||
* @param string $sName the input name
|
||||
* @param string $sType the type of the input
|
||||
* @param bool $bIsArray whether the input is an array
|
||||
*
|
||||
* @return AbstractFormBlock
|
||||
* @throws FormBlockIOException
|
||||
* @throws RegisterException
|
||||
*/
|
||||
public function AddInput(string $sName, string $sType): AbstractFormBlock
|
||||
public function AddInput(string $sName, string $sType, bool $bIsArray = false): AbstractFormBlock
|
||||
{
|
||||
$this->oIORegister->AddInput($sName, $sType);
|
||||
$this->oIORegister->AddInput($sName, $sType, $bIsArray);
|
||||
return $this;
|
||||
}
|
||||
|
||||
@@ -202,9 +204,9 @@ abstract class AbstractFormBlock implements IFormBlock
|
||||
* @param string $sOutputName
|
||||
*
|
||||
* @return AbstractFormBlock
|
||||
* @throws \Combodo\iTop\Forms\Block\FormBlockException
|
||||
* @throws \Combodo\iTop\Forms\IO\FormBlockIOException
|
||||
* @throws \Combodo\iTop\Forms\Register\RegisterException
|
||||
* @throws FormBlockException
|
||||
* @throws FormBlockIOException
|
||||
* @throws RegisterException
|
||||
*/
|
||||
public function AddInputDependsOn(string $sName, string $sOutputBlockName, string $sOutputName): AbstractFormBlock
|
||||
{
|
||||
@@ -218,7 +220,7 @@ abstract class AbstractFormBlock implements IFormBlock
|
||||
* @param string $sName
|
||||
*
|
||||
* @return FormInput
|
||||
* @throws \Combodo\iTop\Forms\Register\RegisterException
|
||||
* @throws RegisterException
|
||||
*/
|
||||
public function GetInput(string $sName): FormInput
|
||||
{
|
||||
@@ -231,7 +233,7 @@ abstract class AbstractFormBlock implements IFormBlock
|
||||
* @param string $sName
|
||||
*
|
||||
* @return mixed
|
||||
* @throws \Combodo\iTop\Forms\Register\RegisterException
|
||||
* @throws RegisterException
|
||||
*/
|
||||
public function GetInputValue(string $sName): mixed
|
||||
{
|
||||
@@ -243,14 +245,16 @@ abstract class AbstractFormBlock implements IFormBlock
|
||||
*
|
||||
* @param string $sName
|
||||
* @param string $sType
|
||||
* @param bool $bIsArray
|
||||
* @param AbstractConverter|null $oConverter
|
||||
*
|
||||
* @return AbstractFormBlock
|
||||
* @throws \Combodo\iTop\Forms\Register\RegisterException
|
||||
* @throws FormBlockIOException
|
||||
* @throws RegisterException
|
||||
*/
|
||||
public function AddOutput(string $sName, string $sType, AbstractConverter $oConverter = null): AbstractFormBlock
|
||||
public function AddOutput(string $sName, string $sType, bool $bIsArray = false, AbstractConverter $oConverter = null): AbstractFormBlock
|
||||
{
|
||||
$this->oIORegister->AddOutput($sName, $sType, $oConverter);
|
||||
$this->oIORegister->AddOutput($sName, $sType, $bIsArray, $oConverter);
|
||||
return $this;
|
||||
}
|
||||
|
||||
@@ -259,8 +263,8 @@ abstract class AbstractFormBlock implements IFormBlock
|
||||
*
|
||||
* @param string $sName output name
|
||||
*
|
||||
* @return \Combodo\iTop\Forms\IO\FormOutput
|
||||
* @throws \Combodo\iTop\Forms\Register\RegisterException
|
||||
* @return FormOutput
|
||||
* @throws RegisterException
|
||||
*/
|
||||
public function GetOutput(string $sName): FormOutput
|
||||
{
|
||||
@@ -311,9 +315,9 @@ abstract class AbstractFormBlock implements IFormBlock
|
||||
* @param string $sOutputName the dependency output name
|
||||
*
|
||||
* @return $this
|
||||
* @throws \Combodo\iTop\Forms\Block\FormBlockException
|
||||
* @throws \Combodo\iTop\Forms\IO\FormBlockIOException
|
||||
* @throws \Combodo\iTop\Forms\Register\RegisterException
|
||||
* @throws FormBlockException
|
||||
* @throws FormBlockIOException
|
||||
* @throws RegisterException
|
||||
*/
|
||||
public function InputDependsOn(string $sInputName, string $sOutputBlockName, string $sOutputName): AbstractFormBlock
|
||||
{
|
||||
@@ -344,9 +348,9 @@ abstract class AbstractFormBlock implements IFormBlock
|
||||
* @param string $sParentInputName parent input name
|
||||
*
|
||||
* @return $this
|
||||
* @throws \Combodo\iTop\Forms\Block\FormBlockException
|
||||
* @throws \Combodo\iTop\Forms\IO\FormBlockIOException
|
||||
* @throws \Combodo\iTop\Forms\Register\RegisterException
|
||||
* @throws FormBlockException
|
||||
* @throws FormBlockIOException
|
||||
* @throws RegisterException
|
||||
*/
|
||||
public function InputDependsOnParent(string $sInputName, string $sParentInputName): AbstractFormBlock
|
||||
{
|
||||
@@ -361,9 +365,9 @@ abstract class AbstractFormBlock implements IFormBlock
|
||||
* @param string $sParentOutputName parent output name
|
||||
*
|
||||
* @return $this
|
||||
* @throws \Combodo\iTop\Forms\Block\FormBlockException
|
||||
* @throws \Combodo\iTop\Forms\IO\FormBlockIOException
|
||||
* @throws \Combodo\iTop\Forms\Register\RegisterException
|
||||
* @throws FormBlockException
|
||||
* @throws FormBlockIOException
|
||||
* @throws RegisterException
|
||||
*/
|
||||
public function OutputImpactParent(string $sOutputName, string $sParentOutputName): AbstractFormBlock
|
||||
{
|
||||
|
||||
@@ -12,6 +12,7 @@ use Combodo\iTop\Forms\FormType\Base\ChoiceFormType;
|
||||
use Combodo\iTop\Forms\IO\Converter\ChoiceValueToLabelConverter;
|
||||
use Combodo\iTop\Forms\IO\Format\StringIOFormat;
|
||||
use Combodo\iTop\Forms\Register\IORegister;
|
||||
use Combodo\iTop\Forms\Register\OptionsRegister;
|
||||
|
||||
/**
|
||||
* A block to manage a list of choices.
|
||||
@@ -32,11 +33,21 @@ class ChoiceFormBlock extends AbstractTypeFormBlock
|
||||
return ChoiceFormType::class;
|
||||
}
|
||||
|
||||
protected function RegisterOptions(OptionsRegister $oOptionsRegister): void
|
||||
{
|
||||
parent::RegisterOptions($oOptionsRegister);
|
||||
|
||||
$oOptionsRegister->SetOption('multiple', false);
|
||||
}
|
||||
|
||||
/** @inheritdoc */
|
||||
protected function RegisterIO(IORegister $oIORegister): void
|
||||
{
|
||||
parent::RegisterIO($oIORegister);
|
||||
$oIORegister->AddOutput(self::OUTPUT_LABEL, StringIOFormat::class, new ChoiceValueToLabelConverter($this));
|
||||
$oIORegister->AddOutput(self::OUTPUT_VALUE, StringIOFormat::class);
|
||||
|
||||
$bMultiple = $this->GetOption('multiple');
|
||||
|
||||
$oIORegister->AddOutput(self::OUTPUT_LABEL, StringIOFormat::class, $bMultiple, new ChoiceValueToLabelConverter($this));
|
||||
$oIORegister->AddOutput(self::OUTPUT_VALUE, StringIOFormat::class, $bMultiple);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,17 +7,16 @@
|
||||
|
||||
namespace Combodo\iTop\Forms\Block\DataModel;
|
||||
|
||||
use Combodo\iTop\Forms\Block\FormBlockException;
|
||||
use Combodo\iTop\Forms\IO\Format\StringIOFormat;
|
||||
use Combodo\iTop\Forms\Register\RegisterException;
|
||||
use Combodo\iTop\Service\DependencyInjection\DIException;
|
||||
use Combodo\iTop\Service\DependencyInjection\DIService;
|
||||
use Combodo\iTop\Forms\Block\Base\ChoiceFormBlock;
|
||||
use Combodo\iTop\Forms\Block\FormBlockException;
|
||||
use Combodo\iTop\Forms\IO\Format\AttributeIOFormat;
|
||||
use Combodo\iTop\Forms\IO\Format\AttributeTypeIOFormat;
|
||||
use Combodo\iTop\Forms\IO\Format\ClassIOFormat;
|
||||
use Combodo\iTop\Forms\Register\IORegister;
|
||||
use Combodo\iTop\Forms\Register\OptionsRegister;
|
||||
use ModelReflection;
|
||||
use Combodo\iTop\Forms\Register\RegisterException;
|
||||
use Combodo\iTop\Service\DependencyInjection\DIException;
|
||||
use Combodo\iTop\Service\DependencyInjection\DIService;
|
||||
use utils;
|
||||
|
||||
/**
|
||||
@@ -40,19 +39,23 @@ class AttributeChoiceFormBlock extends ChoiceFormBlock
|
||||
{
|
||||
parent::RegisterOptions($oOptionsRegister);
|
||||
$oOptionsRegister->SetOption('placeholder', 'Select an attribute...');
|
||||
$oOptionsRegister->SetOption('choices', []);
|
||||
}
|
||||
|
||||
/** @inheritdoc
|
||||
* @throws \Combodo\iTop\Forms\Register\RegisterException
|
||||
* @throws RegisterException
|
||||
*/
|
||||
protected function RegisterIO(IORegister $oIORegister): void
|
||||
{
|
||||
parent::RegisterIO($oIORegister);
|
||||
|
||||
$bMultiple = $this->GetOption('multiple');
|
||||
|
||||
$oIORegister->AddInput(self::INPUT_CLASS_NAME, ClassIOFormat::class);
|
||||
$oIORegister->AddInput(self::INPUT_CATEGORY, StringIOFormat::class);
|
||||
$oIORegister->AddInput(self::INPUT_CATEGORY, AttributeTypeIOFormat::class);
|
||||
// Default value
|
||||
$this->SetInputValue(self::INPUT_CATEGORY, '');
|
||||
$oIORegister->AddOutput(self::OUTPUT_ATTRIBUTE, AttributeIOFormat::class);
|
||||
$oIORegister->AddOutput(self::OUTPUT_ATTRIBUTE, AttributeIOFormat::class, $bMultiple);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -7,13 +7,8 @@
|
||||
|
||||
namespace Combodo\iTop\Forms\Block\DataModel;
|
||||
|
||||
use AttributeClass;
|
||||
use Combodo\iTop\Core\AttributeDefinition\AttributeBoolean;
|
||||
use Combodo\iTop\Core\AttributeDefinition\AttributeDate;
|
||||
use Combodo\iTop\Core\AttributeDefinition\AttributeEnum;
|
||||
use Combodo\iTop\Core\AttributeDefinition\AttributeString;
|
||||
use Combodo\iTop\Forms\IO\Format\AttributeTypeIOFormat;
|
||||
use Combodo\iTop\Forms\Block\Base\ChoiceFormBlock;
|
||||
use Combodo\iTop\Forms\IO\Format\AttributeTypeIOFormat;
|
||||
use Combodo\iTop\Forms\Register\IORegister;
|
||||
use Combodo\iTop\Forms\Register\OptionsRegister;
|
||||
|
||||
@@ -34,11 +29,10 @@ class AttributeTypeChoiceFormBlock extends ChoiceFormBlock
|
||||
parent::RegisterOptions($oOptionsRegister);
|
||||
$oOptionsRegister->SetOption('placeholder', 'Select a type...');
|
||||
$oOptionsRegister->SetOption('choices', [
|
||||
'enum' => AttributeEnum::class,
|
||||
'string' => AttributeString::class,
|
||||
'date' => AttributeDate::class,
|
||||
'boolean' => AttributeBoolean::class,
|
||||
'class' => AttributeClass::class,
|
||||
'numeric' => 'numeric',
|
||||
'group_by' => 'group_by',
|
||||
'date' => 'date',
|
||||
'enum' => 'enum',
|
||||
]);
|
||||
|
||||
}
|
||||
|
||||
@@ -7,13 +7,13 @@
|
||||
|
||||
namespace Combodo\iTop\Forms\Block\DataModel;
|
||||
|
||||
use Combodo\iTop\Service\DependencyInjection\DIService;
|
||||
use Combodo\iTop\Forms\Block\Base\ChoiceFormBlock;
|
||||
use Combodo\iTop\Forms\Block\FormBlockException;
|
||||
use Combodo\iTop\Forms\IO\Format\AttributeIOFormat;
|
||||
use Combodo\iTop\Forms\IO\Format\ClassIOFormat;
|
||||
use Combodo\iTop\Forms\Register\IORegister;
|
||||
use Combodo\iTop\Forms\Register\OptionsRegister;
|
||||
use Combodo\iTop\Service\DependencyInjection\DIService;
|
||||
use Exception;
|
||||
|
||||
/**
|
||||
@@ -42,7 +42,7 @@ class AttributeValueChoiceFormBlock extends ChoiceFormBlock
|
||||
{
|
||||
parent::RegisterIO($oIORegister);
|
||||
$oIORegister->AddInput(self::INPUT_CLASS_NAME, ClassIOFormat::class);
|
||||
$oIORegister->AddInput(self::INPUT_ATTRIBUTE, AttributeIOFormat::class);
|
||||
$oIORegister->AddInput(self::INPUT_ATTRIBUTE, AttributeIOFormat::class, true);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -43,7 +43,7 @@ class OqlFormBlock extends TextAreaFormBlock
|
||||
protected function RegisterIO(IORegister $oIORegister): void
|
||||
{
|
||||
parent::RegisterIO($oIORegister);
|
||||
$oIORegister->AddOutput(self::OUTPUT_SELECTED_CLASS, ClassIOFormat::class, new OqlToClassConverter());
|
||||
$oIORegister->AddOutput(self::OUTPUT_SELECTED_CLASS, ClassIOFormat::class, false, new OqlToClassConverter());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -32,6 +32,9 @@ class AbstractFormIO
|
||||
/** @var string Type of the IO data */
|
||||
private string $sType;
|
||||
|
||||
/** @var bool array */
|
||||
private bool $bIsArray;
|
||||
|
||||
/** @var array Stored values */
|
||||
private array $aValues = [];
|
||||
|
||||
@@ -46,19 +49,25 @@ class AbstractFormIO
|
||||
*
|
||||
* @param string $sName name of the IO
|
||||
* @param string $sType type of the IO
|
||||
* @param bool $bIsArray indicates if the IO is an array
|
||||
*
|
||||
* @throws FormBlockIOException
|
||||
*/
|
||||
public function __construct(string $sName, string $sType, AbstractFormBlock $oOwnerBlock)
|
||||
public function __construct(string $sName, string $sType, bool $bIsArray = false)
|
||||
{
|
||||
if (!is_a($sType, AbstractIOFormat::class, true)) {
|
||||
throw new FormBlockIOException('invalid form format type '.json_encode($sType).' given');
|
||||
}
|
||||
$this->sType = $sType;
|
||||
$this->oOwnerBlock = $oOwnerBlock;
|
||||
$this->bIsArray = $bIsArray;
|
||||
$this->SetName($sName);
|
||||
}
|
||||
|
||||
public function SetOwnerBlock(AbstractFormBlock $oOwnerBlock): void
|
||||
{
|
||||
$this->oOwnerBlock = $oOwnerBlock;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the owner block.
|
||||
*
|
||||
@@ -95,13 +104,13 @@ class AbstractFormIO
|
||||
if ($sParsedName !== $sName) {
|
||||
$sName = json_encode($sName);
|
||||
$sParsedName = json_encode($sParsedName);
|
||||
$sBlockName = json_encode($this->GetOwnerBlock()->GetName());
|
||||
throw new FormBlockIOException("Input $sName does not match $sParsedName for block $sBlockName.");
|
||||
// $sBlockName = json_encode($this->GetOwnerBlock()->GetName());
|
||||
throw new FormBlockIOException("Input $sName does not match $sParsedName for block.");
|
||||
}
|
||||
} else {
|
||||
$sName = json_encode($sName);
|
||||
$sBlockName = json_encode($this->GetOwnerBlock()->GetName());
|
||||
throw new FormBlockIOException("Input $sName is not valid for block $sBlockName.");
|
||||
// $sBlockName = json_encode($this->GetOwnerBlock()->GetName());
|
||||
throw new FormBlockIOException("Input $sName is not valid for block.");
|
||||
}
|
||||
|
||||
// Name is valid
|
||||
@@ -120,6 +129,16 @@ class AbstractFormIO
|
||||
return $this->sType;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return true if is array.
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function IsArray(): bool
|
||||
{
|
||||
return $this->bIsArray;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the IO value.
|
||||
*
|
||||
|
||||
@@ -7,8 +7,8 @@
|
||||
|
||||
namespace Combodo\iTop\Forms\IO;
|
||||
|
||||
use Combodo\iTop\Forms\Block\AbstractFormBlock;
|
||||
use Combodo\iTop\Forms\IO\Converter\AbstractConverter;
|
||||
use IssueLog;
|
||||
|
||||
/**
|
||||
* Form output IO.
|
||||
@@ -29,14 +29,14 @@ class FormOutput extends AbstractFormIO
|
||||
*
|
||||
* @param string $sName
|
||||
* @param string $sType
|
||||
* @param AbstractFormBlock $oOwnerBlock
|
||||
* @param bool $bIsArray
|
||||
* @param AbstractConverter|null $oConverter
|
||||
*
|
||||
* @throws FormBlockIOException
|
||||
*/
|
||||
public function __construct(string $sName, string $sType, AbstractFormBlock $oOwnerBlock, AbstractConverter $oConverter = null)
|
||||
public function __construct(string $sName, string $sType, bool $bIsArray = false, AbstractConverter $oConverter = null)
|
||||
{
|
||||
parent::__construct($sName, $sType, $oOwnerBlock);
|
||||
parent::__construct($sName, $sType, $bIsArray);
|
||||
$this->oConverter = $oConverter;
|
||||
}
|
||||
|
||||
@@ -48,6 +48,23 @@ class FormOutput extends AbstractFormIO
|
||||
* @return mixed
|
||||
*/
|
||||
public function ConvertValue(mixed $oData): mixed
|
||||
{
|
||||
IssueLog::Error($this->GetName().' array:'.$this->IsArray());
|
||||
if ($this->IsArray()) {
|
||||
return $this->ConvertArrayValue($oData);
|
||||
} else {
|
||||
return $this->ConvertSingleValue($oData);
|
||||
}
|
||||
}
|
||||
|
||||
private function ConvertArrayValue(array $aData): array
|
||||
{
|
||||
return array_map(function ($v) {
|
||||
return $this->ConvertSingleValue($v);
|
||||
}, $aData);
|
||||
}
|
||||
|
||||
private function ConvertSingleValue(mixed $oData): mixed
|
||||
{
|
||||
if (is_null($this->oConverter)) {
|
||||
$sType = $this->GetDataType();
|
||||
|
||||
@@ -8,10 +8,8 @@
|
||||
namespace Combodo\iTop\Forms\Register;
|
||||
|
||||
use Combodo\iTop\Forms\Block\AbstractFormBlock;
|
||||
use Combodo\iTop\Forms\Block\Base\FormBlock;
|
||||
use Combodo\iTop\Forms\Block\FormBlockException;
|
||||
use Combodo\iTop\Forms\Block\FormBlockHelper;
|
||||
use Combodo\iTop\Forms\FormType\FormTypeHelper;
|
||||
use Combodo\iTop\Forms\IO\Converter\AbstractConverter;
|
||||
use Combodo\iTop\Forms\IO\FormBlockIOException;
|
||||
use Combodo\iTop\Forms\IO\FormInput;
|
||||
@@ -41,13 +39,16 @@ class IORegister
|
||||
/**
|
||||
* @param string $sName
|
||||
* @param string $sType
|
||||
* @param bool $bIsArray
|
||||
*
|
||||
* @return $this
|
||||
* @throws FormBlockIOException
|
||||
* @throws RegisterException
|
||||
*/
|
||||
public function AddInput(string $sName, string $sType): self
|
||||
public function AddInput(string $sName, string $sType, bool $bIsArray = false): self
|
||||
{
|
||||
$oFormInput = new FormInput($sName, $sType, $this->oFormBlock);
|
||||
$oFormInput = new FormInput($sName, $sType, $bIsArray);
|
||||
$oFormInput->SetOwnerBlock($this->oFormBlock);
|
||||
if (array_key_exists($oFormInput->GetName(), $this->aInputs)) {
|
||||
throw new RegisterException('Input already exists '.json_encode($oFormInput->GetName()).' for '.json_encode($this->oFormBlock->GetName()));
|
||||
}
|
||||
@@ -73,7 +74,7 @@ class IORegister
|
||||
$oOutputBlock = $this->oFormBlock->GetParent()->Get($sOutputBlockName);
|
||||
$oBlockOutput = $oOutputBlock->GetOutput($sOutputName);
|
||||
|
||||
$this->AddInput($sName, $oBlockOutput->GetDataType());
|
||||
$this->AddInput($sName, $oBlockOutput->GetDataType(), $oBlockOutput->IsArray());
|
||||
$this->InputDependsOn($sName, $sOutputBlockName, $sOutputName);
|
||||
|
||||
return $this;
|
||||
@@ -111,7 +112,6 @@ class IORegister
|
||||
* @param string $sParentOutputName parent output name
|
||||
*
|
||||
* @return $this
|
||||
* @throws FormBlockException
|
||||
* @throws FormBlockIOException
|
||||
* @throws RegisterException
|
||||
*/
|
||||
@@ -127,14 +127,17 @@ class IORegister
|
||||
/**
|
||||
* @param string $sName
|
||||
* @param string $sType
|
||||
* @param bool $bIsArray
|
||||
* @param AbstractConverter|null $oConverter
|
||||
*
|
||||
* @return void
|
||||
* @throws FormBlockIOException
|
||||
* @throws RegisterException
|
||||
*/
|
||||
public function AddOutput(string $sName, string $sType, AbstractConverter $oConverter = null): void
|
||||
public function AddOutput(string $sName, string $sType, bool $bIsArray = false, AbstractConverter $oConverter = null): void
|
||||
{
|
||||
$oFormOutput = new FormOutput($sName, $sType, $this->oFormBlock, $oConverter);
|
||||
$oFormOutput = new FormOutput($sName, $sType, $bIsArray, $oConverter);
|
||||
$oFormOutput->SetOwnerBlock($this->oFormBlock);
|
||||
if (array_key_exists($oFormOutput->GetName(), $this->aOutputs)) {
|
||||
throw new RegisterException('Output already exists '.json_encode($oFormOutput->GetName()).' for '.json_encode($this->oFormBlock->GetName()).' in block '.FormBlockHelper::GetFormId($this->oFormBlock).' of class '.get_class($this->oFormBlock));
|
||||
}
|
||||
|
||||
@@ -10,6 +10,7 @@ namespace Combodo\iTop\Test\UnitTest\sources\Forms;
|
||||
use Combodo\iTop\Forms\Block\AbstractFormBlock;
|
||||
use Combodo\iTop\Forms\Block\Base\FormBlock;
|
||||
use Combodo\iTop\Forms\IO\Format\StringIOFormat;
|
||||
use Combodo\iTop\Forms\IO\FormBlockIOException;
|
||||
use Combodo\iTop\Forms\IO\FormInput;
|
||||
use Combodo\iTop\Forms\IO\FormOutput;
|
||||
use Combodo\iTop\Forms\Register\IORegister;
|
||||
@@ -23,18 +24,30 @@ use ReflectionClass;
|
||||
|
||||
abstract class AbstractFormsTest extends ItopDataTestCase
|
||||
{
|
||||
/**
|
||||
* @throws FormBlockIOException
|
||||
*/
|
||||
public function GivenInput(string $sName, string $sType = StringIOFormat::class): FormInput
|
||||
{
|
||||
$oBlock = $this->GivenFormBlock($sName);
|
||||
|
||||
return new FormInput($sName, $sType, $oBlock);
|
||||
$oInput = new FormInput($sName, $sType);
|
||||
$oInput->SetOwnerBlock($oBlock);
|
||||
|
||||
return $oInput;
|
||||
}
|
||||
|
||||
/**
|
||||
* @throws FormBlockIOException
|
||||
*/
|
||||
public function GivenOutput(string $sName, string $sType = StringIOFormat::class): FormOutput
|
||||
{
|
||||
$oBlock = $this->GivenFormBlock($sName);
|
||||
|
||||
return new FormOutput($sName, $sType, $oBlock);
|
||||
$oOutput = new FormOutput($sName, $sType);
|
||||
$oOutput->SetOwnerBlock($oBlock);
|
||||
|
||||
return $oOutput;
|
||||
}
|
||||
|
||||
public function GivenFormBlock(string $sName): FormBlock
|
||||
|
||||
@@ -5,15 +5,15 @@
|
||||
* @license http://opensource.org/licenses/AGPL-3.0
|
||||
*/
|
||||
|
||||
namespace Forms\Block;
|
||||
namespace Combodo\iTop\Test\UnitTest\Sources\Forms\Block;
|
||||
|
||||
use Combodo\iTop\Forms\Block\AbstractTypeFormBlock;
|
||||
use Combodo\iTop\Forms\Block\Base\CheckboxFormBlock;
|
||||
use Combodo\iTop\Forms\Block\Base\FormBlock;
|
||||
use Combodo\iTop\Forms\Block\Base\TextFormBlock;
|
||||
use Combodo\iTop\Forms\Block\FormBlockException;
|
||||
use Combodo\iTop\Forms\Forms;
|
||||
use Combodo\iTop\Forms\Block\IFormBlock;
|
||||
use Combodo\iTop\Forms\Forms;
|
||||
use Combodo\iTop\Service\InterfaceDiscovery\InterfaceDiscovery;
|
||||
use Combodo\iTop\Test\UnitTest\sources\Forms\AbstractFormsTest;
|
||||
use OutOfBoundsException;
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
* @license http://opensource.org/licenses/AGPL-3.0
|
||||
*/
|
||||
|
||||
namespace Combodo\iTop\Test\UnitTest\Forms\IO;
|
||||
namespace Combodo\iTop\Test\UnitTest\Sources\Forms\IO;
|
||||
|
||||
use Combodo\iTop\Forms\IO\Format\AttributeIOFormat;
|
||||
use Combodo\iTop\Forms\IO\Format\BooleanIOFormat;
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
* @license http://opensource.org/licenses/AGPL-3.0
|
||||
*/
|
||||
|
||||
namespace Forms\Register;
|
||||
namespace Combodo\iTop\Test\UnitTest\Sources\Forms\Register;
|
||||
|
||||
use Combodo\iTop\Forms\Block\Base\CheckboxFormBlock;
|
||||
use Combodo\iTop\Forms\Block\Base\FormBlock;
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
* @license http://opensource.org/licenses/AGPL-3.0
|
||||
*/
|
||||
|
||||
namespace Forms\Register;
|
||||
namespace Combodo\iTop\Test\UnitTest\Sources\Forms\Register;
|
||||
|
||||
use Combodo\iTop\Forms\Register\OptionsRegister;
|
||||
use Combodo\iTop\Forms\Register\RegisterException;
|
||||
|
||||
Reference in New Issue
Block a user