mirror of
https://github.com/Combodo/iTop.git
synced 2026-02-13 07:24:13 +01:00
✅ Fix CI
This commit is contained in:
@@ -515,6 +515,7 @@ return array(
|
||||
'Combodo\\iTop\\Forms\\Block\\Base\\CollectionBlock' => $baseDir . '/sources/Forms/Block/Base/CollectionBlock.php',
|
||||
'Combodo\\iTop\\Forms\\Block\\Base\\DateFormBlock' => $baseDir . '/sources/Forms/Block/Base/DateFormBlock.php',
|
||||
'Combodo\\iTop\\Forms\\Block\\Base\\DateTimeFormBlock' => $baseDir . '/sources/Forms/Block/Base/DateTimeFormBlock.php',
|
||||
'Combodo\\iTop\\Forms\\Block\\Base\\FileFormBlock' => $baseDir . '/sources/Forms/Block/Base/FileFormBlock.php',
|
||||
'Combodo\\iTop\\Forms\\Block\\Base\\FormBlock' => $baseDir . '/sources/Forms/Block/Base/FormBlock.php',
|
||||
'Combodo\\iTop\\Forms\\Block\\Base\\HiddenFormBlock' => $baseDir . '/sources/Forms/Block/Base/HiddenFormBlock.php',
|
||||
'Combodo\\iTop\\Forms\\Block\\Base\\IntegerFormBlock' => $baseDir . '/sources/Forms/Block/Base/IntegerFormBlock.php',
|
||||
|
||||
@@ -901,6 +901,7 @@ class ComposerStaticInit7f81b4a2a468a061c306af5e447a9a9f
|
||||
'Combodo\\iTop\\Forms\\Block\\Base\\CollectionBlock' => __DIR__ . '/../..' . '/sources/Forms/Block/Base/CollectionBlock.php',
|
||||
'Combodo\\iTop\\Forms\\Block\\Base\\DateFormBlock' => __DIR__ . '/../..' . '/sources/Forms/Block/Base/DateFormBlock.php',
|
||||
'Combodo\\iTop\\Forms\\Block\\Base\\DateTimeFormBlock' => __DIR__ . '/../..' . '/sources/Forms/Block/Base/DateTimeFormBlock.php',
|
||||
'Combodo\\iTop\\Forms\\Block\\Base\\FileFormBlock' => __DIR__ . '/../..' . '/sources/Forms/Block/Base/FileFormBlock.php',
|
||||
'Combodo\\iTop\\Forms\\Block\\Base\\FormBlock' => __DIR__ . '/../..' . '/sources/Forms/Block/Base/FormBlock.php',
|
||||
'Combodo\\iTop\\Forms\\Block\\Base\\HiddenFormBlock' => __DIR__ . '/../..' . '/sources/Forms/Block/Base/HiddenFormBlock.php',
|
||||
'Combodo\\iTop\\Forms\\Block\\Base\\IntegerFormBlock' => __DIR__ . '/../..' . '/sources/Forms/Block/Base/IntegerFormBlock.php',
|
||||
|
||||
@@ -39,11 +39,13 @@ class DashboardController extends Controller
|
||||
public const ROUTE_NAMESPACE = 'dashboard';
|
||||
|
||||
private FormBlockService $oFormBlockService;
|
||||
private XMLSerializer $oXMLSerializer;
|
||||
|
||||
public function __construct($sViewPath = '', $sModuleName = 'core', $aAdditionalPaths = [], array $aThemes = ['application/forms/itop_console_layout.html.twig', 'application/forms/wip_form_demonstrator.html.twig'])
|
||||
{
|
||||
parent::__construct($sViewPath, $sModuleName, $aAdditionalPaths, $aThemes);
|
||||
$this->oFormBlockService = MetaModel::GetService('FormBlockService');
|
||||
$this->oXMLSerializer = MetaModel::GetService('XMLSerializer');
|
||||
}
|
||||
|
||||
public function OperationGetDashlet()
|
||||
@@ -124,7 +126,7 @@ class DashboardController extends Controller
|
||||
$aModelData = $oForm->getData();
|
||||
$oDashboard = new RuntimeDashboard($aModelData['id']);
|
||||
$oDomNode = $oDashboard->CreateEmptyDashboard();
|
||||
XMLSerializer::GetInstance()->Serialize($aModelData, $oDomNode, 'DashboardGrid', 'Dashboard');
|
||||
$this->oXMLSerializer->Serialize($aModelData, $oDomNode, 'DashboardGrid', 'Dashboard');
|
||||
$sXml = $oDomNode->ownerDocument->saveXML();
|
||||
$oDashboard->PersistDashboard($sXml);
|
||||
$sStatus = 'ok';
|
||||
|
||||
@@ -56,6 +56,8 @@ abstract class Dashboard
|
||||
|
||||
protected $oDashletFactory;
|
||||
|
||||
private XMLSerializer $oXMLSerializer;
|
||||
|
||||
/**
|
||||
* Dashboard constructor.
|
||||
*
|
||||
@@ -71,6 +73,7 @@ abstract class Dashboard
|
||||
$this->oDOMNode = null;
|
||||
$this->sId = $sId;
|
||||
$this->oDashletFactory = DashletFactory::GetInstance();
|
||||
$this->oXMLSerializer = MetaModel::GetService('XMLSerializer');
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -170,7 +173,7 @@ abstract class Dashboard
|
||||
*/
|
||||
public function FromDOMDocumentV2(DesignElement $oDOMNode)
|
||||
{
|
||||
$aDashboardValues = XMLSerializer::GetInstance()->Deserialize($oDOMNode, 'DashboardGrid', 'Dashboard');
|
||||
$aDashboardValues = $this->oXMLSerializer->Deserialize($oDOMNode, 'DashboardGrid', 'Dashboard');
|
||||
$this->FromModelData($aDashboardValues);
|
||||
}
|
||||
|
||||
|
||||
@@ -14,8 +14,8 @@ class DashletFormBlock extends FormBlock
|
||||
|
||||
public function __construct(string $sName, array $aOptions = [])
|
||||
{
|
||||
parent::__construct($sName, $aOptions);
|
||||
$this->oPropertyTypeService = MetaModel::GetService('PropertyTypeService');
|
||||
parent::__construct($sName, $aOptions);
|
||||
}
|
||||
|
||||
protected function BuildForm(): void
|
||||
|
||||
22
sources/Forms/Block/Base/FileFormBlock.php
Normal file
22
sources/Forms/Block/Base/FileFormBlock.php
Normal file
@@ -0,0 +1,22 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* @copyright Copyright (C) 2010-2026 Combodo SAS
|
||||
* @license http://opensource.org/licenses/AGPL-3.0
|
||||
*/
|
||||
|
||||
namespace Combodo\iTop\Forms\Block\Base;
|
||||
|
||||
use Combodo\iTop\Forms\Block\AbstractTypeFormBlock;
|
||||
use Symfony\Component\Form\Extension\Core\Type\FileType;
|
||||
|
||||
class FileFormBlock extends AbstractTypeFormBlock
|
||||
{
|
||||
/**
|
||||
* @inheritDoc
|
||||
*/
|
||||
public function GetFormType(): string
|
||||
{
|
||||
return FileType::class;
|
||||
}
|
||||
}
|
||||
@@ -20,21 +20,10 @@ use utils;
|
||||
*/
|
||||
class PropertyTypeCompiler
|
||||
{
|
||||
private static PropertyTypeCompiler $oInstance;
|
||||
|
||||
protected function __construct()
|
||||
public function __construct()
|
||||
{
|
||||
}
|
||||
|
||||
final public static function GetInstance(): PropertyTypeCompiler
|
||||
{
|
||||
if (!isset(static::$oInstance)) {
|
||||
static::$oInstance = new PropertyTypeCompiler();
|
||||
}
|
||||
|
||||
return static::$oInstance;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $sXMLContent
|
||||
*
|
||||
|
||||
@@ -21,10 +21,12 @@ class PropertyTypeService
|
||||
public const FORM_CACHE_POOL = 'Forms';
|
||||
|
||||
private DataModelDependantCache $oCacheService;
|
||||
private PropertyTypeCompiler $oCompiler;
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
$this->oCacheService = MetaModel::GetService('DataModelDependantCache');
|
||||
$this->oCompiler = MetaModel::GetService('PropertyTypeCompiler');
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -44,7 +46,7 @@ class PropertyTypeService
|
||||
|
||||
if (!$this->oCacheService->HasEntry(self::FORM_CACHE_POOL, $sCacheKey) || utils::IsDevelopmentEnvironment()) {
|
||||
// Cache not found, compile the form
|
||||
$sPHPContent = PropertyTypeCompiler::GetInstance()->CompileForm($sFilteredId, $sType);
|
||||
$sPHPContent = $this->oCompiler->CompileForm($sFilteredId, $sType);
|
||||
$this->oCacheService->StorePhpContent(self::FORM_CACHE_POOL, $sCacheKey, "<?php\n\n$sPHPContent");
|
||||
}
|
||||
$this->oCacheService->FetchPHP(self::FORM_CACHE_POOL, $sCacheKey);
|
||||
@@ -63,14 +65,14 @@ class PropertyTypeService
|
||||
*/
|
||||
public function ListPropertyTypesByType(string $sType): array
|
||||
{
|
||||
return PropertyTypeCompiler::GetInstance()->ListPropertyTypesByType($sType);
|
||||
return $this->oCompiler->ListPropertyTypesByType($sType);
|
||||
}
|
||||
|
||||
public function GetPropertyType(string $sId, string $sType = 'Dashlet'): PropertyType
|
||||
{
|
||||
$sXML = PropertyTypeCompiler::GetInstance()->GetXMLContent($sId, $sType);
|
||||
$sXML = $this->oCompiler->GetXMLContent($sId, $sType);
|
||||
|
||||
return PropertyTypeCompiler::GetInstance()->CompilePropertyTypeFromXML($sXML);
|
||||
return $this->oCompiler->CompilePropertyTypeFromXML($sXML);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -14,45 +14,37 @@ use Combodo\iTop\PropertyType\ValueType\AbstractValueType;
|
||||
|
||||
class XMLSerializer
|
||||
{
|
||||
private static XMLSerializer $oInstance;
|
||||
private PropertyTypeCompiler $oCompiler;
|
||||
|
||||
protected function __construct()
|
||||
public function __construct()
|
||||
{
|
||||
}
|
||||
|
||||
final public static function GetInstance(): XMLSerializer
|
||||
{
|
||||
if (!isset(static::$oInstance)) {
|
||||
static::$oInstance = new XMLSerializer();
|
||||
}
|
||||
|
||||
return static::$oInstance;
|
||||
$this->oCompiler = \MetaModel::GetService('PropertyTypeCompiler');
|
||||
}
|
||||
|
||||
public function Serialize(mixed $value, DesignElement $oParentNode, string $sId, string $sType): void
|
||||
{
|
||||
$sPropertyTypeXML = PropertyTypeCompiler::GetInstance()->GetXMLContent($sId, $sType);
|
||||
$sPropertyTypeXML = $this->oCompiler->GetXMLContent($sId, $sType);
|
||||
|
||||
$this->SerializeForPropertyType($value, $oParentNode, $sPropertyTypeXML);
|
||||
}
|
||||
|
||||
public function Deserialize(DesignElement $oDOMNode, string $sId, string $sType): mixed
|
||||
{
|
||||
$sPropertyTypeXML = PropertyTypeCompiler::GetInstance()->GetXMLContent($sId, $sType);
|
||||
$sPropertyTypeXML = $this->oCompiler->GetXMLContent($sId, $sType);
|
||||
|
||||
return $this->DeserializeForPropertyType($oDOMNode, $sPropertyTypeXML);
|
||||
}
|
||||
|
||||
public function SerializeForPropertyType(mixed $value, DesignElement $oParentNode, string $sPropertyTypeXML): void
|
||||
{
|
||||
$oPropertyType = PropertyTypeCompiler::GetInstance()->CompilePropertyTypeFromXML($sPropertyTypeXML);
|
||||
$oPropertyType = $this->oCompiler->CompilePropertyTypeFromXML($sPropertyTypeXML);
|
||||
|
||||
$oPropertyType->SerializeToDOMNode($value, $oParentNode);
|
||||
}
|
||||
|
||||
public function DeserializeForPropertyType(DesignElement $oParentNode, string $sPropertyTypeXML): mixed
|
||||
{
|
||||
$oPropertyType = PropertyTypeCompiler::GetInstance()->CompilePropertyTypeFromXML($sPropertyTypeXML);
|
||||
$oPropertyType = $this->oCompiler->CompilePropertyTypeFromXML($sPropertyTypeXML);
|
||||
|
||||
return $oPropertyType->DeserializeFromDOMNode($oParentNode);
|
||||
}
|
||||
|
||||
@@ -8,14 +8,18 @@
|
||||
use Combodo\iTop\Application\Dashlet\Service\DashletService;
|
||||
use Combodo\iTop\Forms\Block\FormBlockService;
|
||||
use Combodo\iTop\Forms\FormBuilder\FormFactoryBuilderService;
|
||||
use Combodo\iTop\PropertyType\Compiler\PropertyTypeCompiler;
|
||||
use Combodo\iTop\PropertyType\PropertyTypeService;
|
||||
use Combodo\iTop\PropertyType\Serializer\XMLSerializer;
|
||||
use Combodo\iTop\Service\Cache\DataModelDependantCache;
|
||||
use Symfony\Component\Security\Csrf\CsrfTokenManager;
|
||||
|
||||
return [
|
||||
'ModelReflection' => ModelReflectionRuntime::class,
|
||||
'DashletService' => DashletService::class,
|
||||
'PropertyTypeCompiler' => PropertyTypeCompiler::class,
|
||||
'PropertyTypeService' => PropertyTypeService::class,
|
||||
'XMLSerializer' => XMLSerializer::class,
|
||||
'DataModelDependantCache' => DataModelDependantCache::class,
|
||||
'FormBlockService' => FormBlockService::class,
|
||||
'CsrfTokenManager' => CsrfTokenManager::class,
|
||||
|
||||
@@ -37,7 +37,8 @@ class DashboardSerializerTest extends ItopDataTestCase
|
||||
$oRootNode->setAttribute('xmlns:xsi', 'http://www.w3.org/2001/XMLSchema-instance');
|
||||
$oDOMDocument->appendChild($oRootNode);
|
||||
|
||||
Combodo\iTop\PropertyType\Serializer\XMLSerializer::GetInstance()->Serialize($normalizedValue, $oRootNode, 'DashboardGrid', 'Dashboard');
|
||||
$oXMLSerializer = MetaModel::GetService('XMLSerializer');
|
||||
$oXMLSerializer->Serialize($normalizedValue, $oRootNode, 'DashboardGrid', 'Dashboard');
|
||||
|
||||
$sActualXML = $oDOMDocument->saveXML();
|
||||
|
||||
|
||||
@@ -24,7 +24,8 @@ class FormsCompilerTest extends ItopDataTestCase
|
||||
*/
|
||||
public function testCompileFormFromXML(string $sXMLContent, string $sExpectedPHP)
|
||||
{
|
||||
$sProducedPHP = PropertyTypeCompiler::GetInstance()->CompileFormFromXML($sXMLContent);
|
||||
$oCompiler = MetaModel::GetService('PropertyTypeCompiler');
|
||||
$sProducedPHP = $oCompiler->CompileFormFromXML($sXMLContent);
|
||||
|
||||
$this->AssertPHPCodeIsValid($sProducedPHP);
|
||||
$sMessage = $this->dataName();
|
||||
@@ -669,7 +670,8 @@ PHP,
|
||||
{
|
||||
$this->expectException($sExpectedClass);
|
||||
$this->expectExceptionMessage($sExpectedMessage);
|
||||
PropertyTypeCompiler::GetInstance()->CompileFormFromXML($sXMLContent);
|
||||
$oCompiler = MetaModel::GetService('PropertyTypeCompiler');
|
||||
$oCompiler->CompileFormFromXML($sXMLContent);
|
||||
}
|
||||
|
||||
public function CompileFormFromInvalidXMLProvider()
|
||||
@@ -885,7 +887,8 @@ class FormFor__basic_test_for_icon extends Combodo\iTop\Forms\Block\Base\FormBlo
|
||||
|
||||
PHP;
|
||||
|
||||
$sProducedPHP = PropertyTypeCompiler::GetInstance()->CompileFormFromXML($sXMLContent);
|
||||
$oCompiler = MetaModel::GetService('PropertyTypeCompiler');
|
||||
$sProducedPHP = $oCompiler->CompileFormFromXML($sXMLContent);
|
||||
|
||||
$this->AssertPHPCodeIsValid($sProducedPHP);
|
||||
$this->assertStringStartsWith($sExpectedStart, $sProducedPHP);
|
||||
@@ -920,7 +923,8 @@ class FormFor__basic_test_for_class extends Combodo\iTop\Forms\Block\Base\FormBl
|
||||
|
||||
PHP;
|
||||
|
||||
$sProducedPHP = PropertyTypeCompiler::GetInstance()->CompileFormFromXML($sXMLContent);
|
||||
$oCompiler = MetaModel::GetService('PropertyTypeCompiler');
|
||||
$sProducedPHP = $oCompiler->CompileFormFromXML($sXMLContent);
|
||||
|
||||
$this->AssertPHPCodeIsValid($sProducedPHP);
|
||||
$this->assertStringStartsWith($sExpectedStart, $sProducedPHP);
|
||||
|
||||
@@ -34,7 +34,8 @@ class XMLSerializerTest extends ItopDataTestCase
|
||||
|
||||
$oDOMDocument->appendChild($oRootNode);
|
||||
|
||||
Combodo\iTop\PropertyType\Serializer\XMLSerializer::GetInstance()->SerializeForPropertyType($normalizedValue, $oRootNode, $sPropertyTypeXML);
|
||||
$oXMLSerializer = MetaModel::GetService('XMLSerializer');
|
||||
$oXMLSerializer->SerializeForPropertyType($normalizedValue, $oRootNode, $sPropertyTypeXML);
|
||||
|
||||
$sActualXML = $oDOMDocument->saveXML();
|
||||
|
||||
@@ -372,7 +373,8 @@ XML,
|
||||
/** @var \Combodo\iTop\DesignElement $oRoot */
|
||||
$oRoot = $oDoc->firstChild;
|
||||
|
||||
$aActualValue = Combodo\iTop\PropertyType\Serializer\XMLSerializer::GetInstance()->DeserializeForPropertyType($oRoot, $sPropertyTypeXML);
|
||||
$oXMLSerializer = MetaModel::GetService('XMLSerializer');
|
||||
$aActualValue = $oXMLSerializer->DeserializeForPropertyType($oRoot, $sPropertyTypeXML);
|
||||
|
||||
$this->assertEquals($normalizedValue, $aActualValue);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user