N°6041 - Introduce dynamic register of fields and renderers in Bootstrap form renderers

This commit is contained in:
Molkobain
2023-03-09 10:42:36 +01:00
parent 7d01030d7c
commit 9023e338a5
4 changed files with 177 additions and 34 deletions

View File

@@ -418,6 +418,7 @@ return array(
'Combodo\\iTop\\Form\\Validator\\NotEmptyExtKeyValidator' => $baseDir . '/sources/Form/Validator/NotEmptyExtKeyValidator.php',
'Combodo\\iTop\\Form\\Validator\\Validator' => $baseDir . '/sources/Form/Validator/Validator.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',
'Combodo\\iTop\\Renderer\\Bootstrap\\FieldRenderer\\BsFieldRenderer' => $baseDir . '/sources/Renderer/Bootstrap/FieldRenderer/BsFieldRenderer.php',
'Combodo\\iTop\\Renderer\\Bootstrap\\FieldRenderer\\BsFileUploadFieldRenderer' => $baseDir . '/sources/Renderer/Bootstrap/FieldRenderer/BsFileUploadFieldRenderer.php',
@@ -2926,6 +2927,7 @@ return array(
'iDBObjectSetIterator' => $baseDir . '/core/dbobjectiterator.php',
'iDBObjectURLMaker' => $baseDir . '/application/applicationcontext.class.inc.php',
'iDisplay' => $baseDir . '/core/dbobject.class.php',
'iFieldRendererMappingsExtension' => $baseDir . '/application/applicationextension.inc.php',
'iKeyboardShortcut' => $baseDir . '/sources/Application/UI/Hook/iKeyboardShortcut.php',
'iLogFileNameBuilder' => $baseDir . '/core/log.class.inc.php',
'iLoginExtension' => $baseDir . '/application/applicationextension.inc.php',

View File

@@ -783,6 +783,7 @@ class ComposerStaticInit7f81b4a2a468a061c306af5e447a9a9f
'Combodo\\iTop\\Form\\Validator\\NotEmptyExtKeyValidator' => __DIR__ . '/../..' . '/sources/Form/Validator/NotEmptyExtKeyValidator.php',
'Combodo\\iTop\\Form\\Validator\\Validator' => __DIR__ . '/../..' . '/sources/Form/Validator/Validator.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',
'Combodo\\iTop\\Renderer\\Bootstrap\\FieldRenderer\\BsFieldRenderer' => __DIR__ . '/../..' . '/sources/Renderer/Bootstrap/FieldRenderer/BsFieldRenderer.php',
'Combodo\\iTop\\Renderer\\Bootstrap\\FieldRenderer\\BsFileUploadFieldRenderer' => __DIR__ . '/../..' . '/sources/Renderer/Bootstrap/FieldRenderer/BsFileUploadFieldRenderer.php',
@@ -3291,6 +3292,7 @@ class ComposerStaticInit7f81b4a2a468a061c306af5e447a9a9f
'iDBObjectSetIterator' => __DIR__ . '/../..' . '/core/dbobjectiterator.php',
'iDBObjectURLMaker' => __DIR__ . '/../..' . '/application/applicationcontext.class.inc.php',
'iDisplay' => __DIR__ . '/../..' . '/core/dbobject.class.php',
'iFieldRendererMappingsExtension' => __DIR__ . '/../..' . '/application/applicationextension.inc.php',
'iKeyboardShortcut' => __DIR__ . '/../..' . '/sources/Application/UI/Hook/iKeyboardShortcut.php',
'iLogFileNameBuilder' => __DIR__ . '/../..' . '/core/log.class.inc.php',
'iLoginExtension' => __DIR__ . '/../..' . '/application/applicationextension.inc.php',

View File

@@ -0,0 +1,173 @@
<?php
/*
* @copyright Copyright (C) 2010-2023 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*/
namespace Combodo\iTop\Renderer\Bootstrap;
use Combodo\iTop\Form\Field\BlobField;
use Combodo\iTop\Form\Field\CaseLogField;
use Combodo\iTop\Form\Field\CheckboxField;
use Combodo\iTop\Form\Field\DateTimeField;
use Combodo\iTop\Form\Field\DurationField;
use Combodo\iTop\Form\Field\EmailField;
use Combodo\iTop\Form\Field\FileUploadField;
use Combodo\iTop\Form\Field\HiddenField;
use Combodo\iTop\Form\Field\ImageField;
use Combodo\iTop\Form\Field\LabelField;
use Combodo\iTop\Form\Field\LinkedSetField;
use Combodo\iTop\Form\Field\MultipleSelectField;
use Combodo\iTop\Form\Field\PasswordField;
use Combodo\iTop\Form\Field\PhoneField;
use Combodo\iTop\Form\Field\RadioField;
use Combodo\iTop\Form\Field\SelectField;
use Combodo\iTop\Form\Field\SelectObjectField;
use Combodo\iTop\Form\Field\SetField;
use Combodo\iTop\Form\Field\StringField;
use Combodo\iTop\Form\Field\SubFormField;
use Combodo\iTop\Form\Field\TagSetField;
use Combodo\iTop\Form\Field\TextAreaField;
use Combodo\iTop\Form\Field\UrlField;
use Combodo\iTop\Renderer\Bootstrap\FieldRenderer\BsFileUploadFieldRenderer;
use Combodo\iTop\Renderer\Bootstrap\FieldRenderer\BsLinkedSetFieldRenderer;
use Combodo\iTop\Renderer\Bootstrap\FieldRenderer\BsSelectObjectFieldRenderer;
use Combodo\iTop\Renderer\Bootstrap\FieldRenderer\BsSetFieldRenderer;
use Combodo\iTop\Renderer\Bootstrap\FieldRenderer\BsSimpleFieldRenderer;
use Combodo\iTop\Renderer\Bootstrap\FieldRenderer\BsSubFormFieldRenderer;
use iFieldRendererMappingsExtension;
/**
* Class BsFieldRendererMappings
*
* @author Guillaume Lajarige <guillaume.lajarige@combodo.com>
* @package Combodo\iTop\Renderer\Bootstrap
* @since 3.1.0 N°6041
*/
class BsFieldRendererMappings implements iFieldRendererMappingsExtension
{
/**
* @inheritDoc
*/
public static function RegisterSupportedFields(): array
{
return [
[
HiddenField::class,
BsFormRenderer::class,
BsSimpleFieldRenderer::class,
],
[
LabelField::class,
BsFormRenderer::class,
BsSimpleFieldRenderer::class,
],
[
PasswordField::class,
BsFormRenderer::class,
BsSimpleFieldRenderer::class,
],
[
StringField::class,
BsFormRenderer::class,
BsSimpleFieldRenderer::class,
],
[
UrlField::class,
BsFormRenderer::class,
BsSimpleFieldRenderer::class,
],
[
EmailField::class,
BsFormRenderer::class,
BsSimpleFieldRenderer::class,
],
[
PhoneField::class,
BsFormRenderer::class,
BsSimpleFieldRenderer::class,
],
[
TextAreaField::class,
BsFormRenderer::class,
BsSimpleFieldRenderer::class,
],
[
CaseLogField::class,
BsFormRenderer::class,
BsSimpleFieldRenderer::class,
],
[
SelectField::class,
BsFormRenderer::class,
BsSimpleFieldRenderer::class,
],
[
MultipleSelectField::class,
BsFormRenderer::class,
BsSimpleFieldRenderer::class,
],
[
RadioField::class,
BsFormRenderer::class,
BsSimpleFieldRenderer::class,
],
[
CheckboxField::class,
BsFormRenderer::class,
BsSimpleFieldRenderer::class,
],
[
SubFormField::class,
BsFormRenderer::class,
BsSubFormFieldRenderer::class,
],
[
SelectObjectField::class,
BsFormRenderer::class,
BsSelectObjectFieldRenderer::class,
],
[
LinkedSetField::class,
BsFormRenderer::class,
BsLinkedSetFieldRenderer::class,
],
[
SetField::class,
BsFormRenderer::class,
BsSetFieldRenderer::class,
],
[
TagSetField::class,
BsFormRenderer::class,
BsSetFieldRenderer::class,
],
[
DateTimeField::class,
BsFormRenderer::class,
BsSimpleFieldRenderer::class,
],
[
DurationField::class,
BsFormRenderer::class,
BsSimpleFieldRenderer::class,
],
[
FileUploadField::class,
BsFormRenderer::class,
BsFileUploadFieldRenderer::class,
],
[
BlobField::class,
BsFormRenderer::class,
BsSimpleFieldRenderer::class,
],
[
ImageField::class,
BsFormRenderer::class,
BsSimpleFieldRenderer::class,
],
];
}
}

View File

@@ -30,38 +30,4 @@ use Combodo\iTop\Form\Form;
class BsFormRenderer extends FormRenderer
{
const DEFAULT_RENDERER_NAMESPACE = 'Combodo\\iTop\\Renderer\\Bootstrap\\FieldRenderer\\';
/**
* Default constructor
*
* @param \Combodo\iTop\Form\Form $oForm
*/
public function __construct(Form $oForm = null)
{
parent::__construct($oForm);
$this->AddSupportedField('HiddenField', 'BsSimpleFieldRenderer');
$this->AddSupportedField('LabelField', 'BsSimpleFieldRenderer');
$this->AddSupportedField('PasswordField', 'BsSimpleFieldRenderer');
$this->AddSupportedField('StringField', 'BsSimpleFieldRenderer');
$this->AddSupportedField('UrlField', 'BsSimpleFieldRenderer');
$this->AddSupportedField('EmailField', 'BsSimpleFieldRenderer');
$this->AddSupportedField('PhoneField', 'BsSimpleFieldRenderer');
$this->AddSupportedField('TextAreaField', 'BsSimpleFieldRenderer');
$this->AddSupportedField('CaseLogField', 'BsSimpleFieldRenderer');
$this->AddSupportedField('SelectField', 'BsSimpleFieldRenderer');
$this->AddSupportedField('MultipleSelectField', 'BsSimpleFieldRenderer');
$this->AddSupportedField('RadioField', 'BsSimpleFieldRenderer');
$this->AddSupportedField('CheckboxField', 'BsSimpleFieldRenderer');
$this->AddSupportedField('SubFormField', 'BsSubFormFieldRenderer');
$this->AddSupportedField('SelectObjectField', 'BsSelectObjectFieldRenderer');
$this->AddSupportedField('LinkedSetField', 'BsLinkedSetFieldRenderer');
$this->AddSupportedField('SetField', 'BsSetFieldRenderer');
$this->AddSupportedField('TagSetField', 'BsSetFieldRenderer');
$this->AddSupportedField('DateTimeField', 'BsSimpleFieldRenderer');
$this->AddSupportedField('DurationField', 'BsSimpleFieldRenderer');
$this->AddSupportedField('FileUploadField', 'BsFileUploadFieldRenderer');
$this->AddSupportedField('BlobField', 'BsSimpleFieldRenderer');
$this->AddSupportedField('ImageField', 'BsSimpleFieldRenderer');
}
}