mirror of
https://github.com/Combodo/iTop.git
synced 2026-04-20 00:58:48 +02:00
N°8771 - Add Symfony form component to iTop core
- WIP
This commit is contained in:
57
sources/Forms/Block/AbstractFormBlock.php
Normal file
57
sources/Forms/Block/AbstractFormBlock.php
Normal file
@@ -0,0 +1,57 @@
|
||||
<?php
|
||||
|
||||
namespace Combodo\iTop\Forms\Block;
|
||||
|
||||
abstract class AbstractFormBlock
|
||||
{
|
||||
|
||||
private array $aOptions = [];
|
||||
|
||||
private array $aSubFormBlocks = [];
|
||||
|
||||
private array $aFormInputs = [];
|
||||
|
||||
private array $aFormOutputs = [];
|
||||
|
||||
public function __construct(array $aOptions = [])
|
||||
{
|
||||
$this->aOptions = $aOptions;
|
||||
}
|
||||
|
||||
public function GetOptions(): array
|
||||
{
|
||||
return $this->aOptions;
|
||||
}
|
||||
|
||||
public function AddSubFormBlock(AbstractFormBlock $oSubFormBlock): void
|
||||
{
|
||||
$this->aSubFormBlocks[] = $oSubFormBlock;
|
||||
}
|
||||
|
||||
public function GetSubFormBlocks(): array
|
||||
{
|
||||
return $this->aSubFormBlocks;
|
||||
}
|
||||
|
||||
public function AddInput(FormInput $oFormInput): void
|
||||
{
|
||||
$this->aFormInputs[$oFormInput->GetName()] = $oFormInput;
|
||||
}
|
||||
|
||||
public function GetInput(string $sName): FormInput
|
||||
{
|
||||
return $this->aFormInputs[$sName];
|
||||
}
|
||||
|
||||
public function AddOutput(FormOutput $oFormOutput): void
|
||||
{
|
||||
$this->aFormOutputs[$oFormOutput->GetName()] = $oFormOutput;
|
||||
}
|
||||
|
||||
public function GetOutput(string $sName): FormOutput
|
||||
{
|
||||
return $this->aFormOutputs[$sName];
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
16
sources/Forms/Block/Base/ChoiceFormBlock.php
Normal file
16
sources/Forms/Block/Base/ChoiceFormBlock.php
Normal file
@@ -0,0 +1,16 @@
|
||||
<?php
|
||||
|
||||
namespace Combodo\iTop\Forms\Block\Base;
|
||||
|
||||
use Combodo\iTop\Forms\Block\FormBlock;
|
||||
|
||||
class ChoiceFormBlock extends FormBlock
|
||||
{
|
||||
|
||||
public function __construct(array $aOptions = [])
|
||||
{
|
||||
parent::__construct($aOptions);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
11
sources/Forms/Block/Base/StringFormBlock.php
Normal file
11
sources/Forms/Block/Base/StringFormBlock.php
Normal file
@@ -0,0 +1,11 @@
|
||||
<?php
|
||||
|
||||
namespace Combodo\iTop\Forms\Block\Base;
|
||||
|
||||
use Combodo\iTop\Forms\Block\FormBlock;
|
||||
|
||||
class StringFormBlock extends FormBlock
|
||||
{
|
||||
|
||||
|
||||
}
|
||||
20
sources/Forms/Block/DataModel/AttributeChoiceFormBlock.php
Normal file
20
sources/Forms/Block/DataModel/AttributeChoiceFormBlock.php
Normal file
@@ -0,0 +1,20 @@
|
||||
<?php
|
||||
|
||||
namespace Combodo\iTop\Forms\Block\DataModel;
|
||||
|
||||
use Combodo\iTop\Forms\Block\FormBlock;
|
||||
use Combodo\iTop\Forms\Block\FormInput;
|
||||
|
||||
class AttributeChoiceFormBlock extends FormBlock
|
||||
{
|
||||
|
||||
|
||||
public function __construct(array $aOptions = [])
|
||||
{
|
||||
parent::__construct($aOptions);
|
||||
|
||||
$this->AddInput(new FormInput('class_name', 'string'));
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
21
sources/Forms/Block/DataModel/OqlFormBlock.php
Normal file
21
sources/Forms/Block/DataModel/OqlFormBlock.php
Normal file
@@ -0,0 +1,21 @@
|
||||
<?php
|
||||
|
||||
namespace Combodo\iTop\Forms\Block\DataModel;
|
||||
|
||||
use Combodo\iTop\Forms\Block\FormBlock;
|
||||
use Combodo\iTop\Forms\Block\FormOutput;
|
||||
|
||||
class OqlFormBlock extends FormBlock
|
||||
{
|
||||
|
||||
|
||||
public function __construct(array $aOptions = [])
|
||||
{
|
||||
parent::__construct($aOptions);
|
||||
|
||||
$this->AddOutput(new FormOutput('selected_class', 'string'));
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
10
sources/Forms/Block/FormBlock.php
Normal file
10
sources/Forms/Block/FormBlock.php
Normal file
@@ -0,0 +1,10 @@
|
||||
<?php
|
||||
|
||||
namespace Combodo\iTop\Forms\Block;
|
||||
|
||||
class FormBlock extends AbstractFormBlock
|
||||
{
|
||||
|
||||
|
||||
|
||||
}
|
||||
36
sources/Forms/Block/FormInput.php
Normal file
36
sources/Forms/Block/FormInput.php
Normal file
@@ -0,0 +1,36 @@
|
||||
<?php
|
||||
|
||||
namespace Combodo\iTop\Forms\Block;
|
||||
|
||||
class FormInput
|
||||
{
|
||||
private string $sName;
|
||||
|
||||
private string $sType;
|
||||
|
||||
public function __construct(string $sName, string $sType)
|
||||
{
|
||||
$this->sName = $sName;
|
||||
$this->sType = $sName;
|
||||
}
|
||||
|
||||
public function GetName(): string
|
||||
{
|
||||
return $this->sName;
|
||||
}
|
||||
|
||||
public function SetName(string $sName): void
|
||||
{
|
||||
$this->sName = $sName;
|
||||
}
|
||||
|
||||
public function GetType(): string
|
||||
{
|
||||
return $this->sType;
|
||||
}
|
||||
|
||||
public function SetType(string $sType): void
|
||||
{
|
||||
$this->sType = $sType;
|
||||
}
|
||||
}
|
||||
48
sources/Forms/Block/FormOutput.php
Normal file
48
sources/Forms/Block/FormOutput.php
Normal file
@@ -0,0 +1,48 @@
|
||||
<?php
|
||||
|
||||
namespace Combodo\iTop\Forms\Block;
|
||||
|
||||
use Combodo\iTop\Forms\Converter\AbstractConverter;
|
||||
|
||||
class FormOutput
|
||||
{
|
||||
private string $sName;
|
||||
|
||||
private string $sType;
|
||||
|
||||
private AbstractConverter $oConverter;
|
||||
|
||||
public function __construct(string $sName, string $sType, AbstractConverter $oConverter = null)
|
||||
{
|
||||
$this->sName = $sName;
|
||||
$this->sType = $sName;
|
||||
$this->oConverter = $oConverter;
|
||||
}
|
||||
|
||||
public function GetName(): string
|
||||
{
|
||||
return $this->sName;
|
||||
}
|
||||
|
||||
public function SetName(string $sName): void
|
||||
{
|
||||
$this->sName = $sName;
|
||||
}
|
||||
|
||||
public function GetType(): string
|
||||
{
|
||||
return $this->sType;
|
||||
}
|
||||
|
||||
public function SetType(string $sType): void
|
||||
{
|
||||
$this->sType = $sType;
|
||||
}
|
||||
|
||||
public function GetOutputValue(mixed $oData): mixed
|
||||
{
|
||||
$this->oConverter->Convert($oData);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
8
sources/Forms/Converter/AbstractConverter.php
Normal file
8
sources/Forms/Converter/AbstractConverter.php
Normal file
@@ -0,0 +1,8 @@
|
||||
<?php
|
||||
|
||||
namespace Combodo\iTop\Forms\Converter;
|
||||
|
||||
abstract class AbstractConverter
|
||||
{
|
||||
abstract public function Convert(mixed $oData): mixed;
|
||||
}
|
||||
16
sources/Forms/Converter/OqlToClassName.php
Normal file
16
sources/Forms/Converter/OqlToClassName.php
Normal file
@@ -0,0 +1,16 @@
|
||||
<?php
|
||||
|
||||
namespace Combodo\iTop\Forms\Converter;
|
||||
|
||||
class OqlToClassName extends AbstractConverter
|
||||
{
|
||||
|
||||
public function Convert(mixed $oData): ?string
|
||||
{
|
||||
if($oData === null)
|
||||
return null;
|
||||
// extract selected class
|
||||
preg_match('/SELECT\s+(\w+)/', $oData, $aMatches);
|
||||
return $aMatches[1] ?? null;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user