N°8772 - Form dependencies manager implementation - WIP

This commit is contained in:
Eric Espie
2025-10-23 15:11:14 +02:00
parent 98c0b11db7
commit fd449d195d
13 changed files with 133 additions and 55 deletions

View File

@@ -32,9 +32,10 @@ abstract class AbstractFormBlock
return $this->aOptions;
}
public function AddSubFormBlock(AbstractFormBlock $oSubFormBlock): void
public function AddSubFormBlock(AbstractFormBlock $oSubFormBlock): AbstractFormBlock
{
$this->aSubFormBlocks[] = $oSubFormBlock;
return $this;
}
public function GetSubFormBlocks(): array
@@ -57,11 +58,40 @@ abstract class AbstractFormBlock
$this->aFormOutputs[$oFormOutput->GetName()] = $oFormOutput;
}
public function GetOutput(string $sName): FormOutput
public function GetOutput(string $sName): ?FormOutput
{
return $this->aFormOutputs[$sName];
}
/**
* @param string $sInputName
* @param string $sOutputBlockName
* @param string $sOutputName
*
* @return $this
* @throws \Combodo\iTop\Forms\Block\FormsBlockException
*/
public function DependsOn(string $sInputName, string $sOutputBlockName, string $sOutputName): AbstractFormBlock
{
$oFormInput = $this->GetInput($sInputName);
if (is_null($oFormInput)) {
throw new FormsBlockException('Missing input ' . $sInputName . ' for ' . $this->sName);
}
$oFormInput->Connect($sOutputBlockName, $sOutputName);
return $this;
}
public function HasConnections(): bool
{
foreach ($this->aFormInputs as $oFormInput) {
if ($oFormInput->HasConnections()) {
return true;
}
}
return false;
}
abstract public function GetFormType(): string;
abstract public function InitInputs(): void;