From 9023e338a5c60f7c95740d73204844fcfbee5e0b Mon Sep 17 00:00:00 2001 From: Molkobain Date: Thu, 9 Mar 2023 10:42:36 +0100 Subject: [PATCH] =?UTF-8?q?N=C2=B06041=20-=20Introduce=20dynamic=20registe?= =?UTF-8?q?r=20of=20fields=20and=20renderers=20in=20Bootstrap=20form=20ren?= =?UTF-8?q?derers?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/composer/autoload_classmap.php | 2 + lib/composer/autoload_static.php | 2 + .../Bootstrap/BsFieldRendererMappings.php | 173 ++++++++++++++++++ sources/Renderer/Bootstrap/BsFormRenderer.php | 34 ---- 4 files changed, 177 insertions(+), 34 deletions(-) create mode 100644 sources/Renderer/Bootstrap/BsFieldRendererMappings.php diff --git a/lib/composer/autoload_classmap.php b/lib/composer/autoload_classmap.php index 3e2cd91b2..48ddcbb84 100644 --- a/lib/composer/autoload_classmap.php +++ b/lib/composer/autoload_classmap.php @@ -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', diff --git a/lib/composer/autoload_static.php b/lib/composer/autoload_static.php index e70be59aa..dbdabe040 100644 --- a/lib/composer/autoload_static.php +++ b/lib/composer/autoload_static.php @@ -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', diff --git a/sources/Renderer/Bootstrap/BsFieldRendererMappings.php b/sources/Renderer/Bootstrap/BsFieldRendererMappings.php new file mode 100644 index 000000000..31e46a932 --- /dev/null +++ b/sources/Renderer/Bootstrap/BsFieldRendererMappings.php @@ -0,0 +1,173 @@ + + * @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, + ], + ]; + } +} \ No newline at end of file diff --git a/sources/Renderer/Bootstrap/BsFormRenderer.php b/sources/Renderer/Bootstrap/BsFormRenderer.php index 763db696f..f5b7d5c04 100644 --- a/sources/Renderer/Bootstrap/BsFormRenderer.php +++ b/sources/Renderer/Bootstrap/BsFormRenderer.php @@ -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'); - } - }