N°6041 - Improve readability of the API

This commit is contained in:
Molkobain
2023-03-13 16:24:53 +01:00
parent 482261845c
commit 47399f083c
4 changed files with 118 additions and 106 deletions

View File

@@ -1653,16 +1653,22 @@ abstract class AbstractPortalUIExtension implements iPortalUIExtension
interface iFieldRendererMappingsExtension
{
/**
* @return array {string, string, string} List of field renderer mapping: FQCN field class, FQCN Form Renderer class, FQCN Field Renderer class
* @return array {
* array: {
* field: string,
* form_renderer: string,
* field_renderer: string
* }
* } List of field renderer mapping: FQCN field class, FQCN Form Renderer class, FQCN Field Renderer class
*
* Example:
*
* ```php
* [
* ['FQCN\FieldA', 'Combodo\iTop\Renderer\Console\ConsoleFormRenderer', 'FQCN\FieldRendererA'],
* ['FQCN\FieldB', 'Combodo\iTop\Renderer\Console\ConsoleFormRenderer', 'FQCN\FieldRendererB'],
* ['FQCN\FieldA', 'Combodo\iTop\Renderer\Bootstrap\BsFormRenderer', 'FQCN\FieldRendererA'],
* ['FQCN\FieldB', 'Combodo\iTop\Renderer\Bootstrap\BsFormRenderer', 'FQCN\FieldRendererB'],
* ['field' => 'FQCN\FieldA', 'form_renderer' => 'Combodo\iTop\Renderer\Console\ConsoleFormRenderer', 'field_renderer' => 'FQCN\FieldRendererA'],
* ['field' => 'FQCN\FieldB', 'form_renderer' => 'Combodo\iTop\Renderer\Console\ConsoleFormRenderer', 'field_renderer' => 'FQCN\FieldRendererB'],
* ['field' => 'FQCN\FieldA', 'form_renderer' => 'Combodo\iTop\Renderer\Bootstrap\BsFormRenderer', 'field_renderer' => 'FQCN\FieldRendererA'],
* ['field' => 'FQCN\FieldB', 'form_renderer' => 'Combodo\iTop\Renderer\Bootstrap\BsFormRenderer', 'field_renderer' => 'FQCN\FieldRendererB'],
* ]
* ```
*/

View File

@@ -54,119 +54,119 @@ class BsFieldRendererMappings implements iFieldRendererMappingsExtension
{
return [
[
HiddenField::class,
BsFormRenderer::class,
BsSimpleFieldRenderer::class,
'field' => HiddenField::class,
'form_renderer' => BsFormRenderer::class,
'field_renderer' => BsSimpleFieldRenderer::class,
],
[
LabelField::class,
BsFormRenderer::class,
BsSimpleFieldRenderer::class,
'field' => LabelField::class,
'form_renderer' => BsFormRenderer::class,
'field_renderer' => BsSimpleFieldRenderer::class,
],
[
PasswordField::class,
BsFormRenderer::class,
BsSimpleFieldRenderer::class,
'field' => PasswordField::class,
'form_renderer' => BsFormRenderer::class,
'field_renderer' => BsSimpleFieldRenderer::class,
],
[
StringField::class,
BsFormRenderer::class,
BsSimpleFieldRenderer::class,
'field' => StringField::class,
'form_renderer' => BsFormRenderer::class,
'field_renderer' => BsSimpleFieldRenderer::class,
],
[
UrlField::class,
BsFormRenderer::class,
BsSimpleFieldRenderer::class,
'field' => UrlField::class,
'form_renderer' => BsFormRenderer::class,
'field_renderer' => BsSimpleFieldRenderer::class,
],
[
EmailField::class,
BsFormRenderer::class,
BsSimpleFieldRenderer::class,
'field' => EmailField::class,
'form_renderer' => BsFormRenderer::class,
'field_renderer' => BsSimpleFieldRenderer::class,
],
[
PhoneField::class,
BsFormRenderer::class,
BsSimpleFieldRenderer::class,
'field' => PhoneField::class,
'form_renderer' => BsFormRenderer::class,
'field_renderer' => BsSimpleFieldRenderer::class,
],
[
TextAreaField::class,
BsFormRenderer::class,
BsSimpleFieldRenderer::class,
'field' => TextAreaField::class,
'form_renderer' => BsFormRenderer::class,
'field_renderer' => BsSimpleFieldRenderer::class,
],
[
CaseLogField::class,
BsFormRenderer::class,
BsSimpleFieldRenderer::class,
'field' => CaseLogField::class,
'form_renderer' => BsFormRenderer::class,
'field_renderer' => BsSimpleFieldRenderer::class,
],
[
SelectField::class,
BsFormRenderer::class,
BsSimpleFieldRenderer::class,
'field' => SelectField::class,
'form_renderer' => BsFormRenderer::class,
'field_renderer' => BsSimpleFieldRenderer::class,
],
[
MultipleSelectField::class,
BsFormRenderer::class,
BsSimpleFieldRenderer::class,
'field' => MultipleSelectField::class,
'form_renderer' => BsFormRenderer::class,
'field_renderer' => BsSimpleFieldRenderer::class,
],
[
RadioField::class,
BsFormRenderer::class,
BsSimpleFieldRenderer::class,
'field' => RadioField::class,
'form_renderer' => BsFormRenderer::class,
'field_renderer' => BsSimpleFieldRenderer::class,
],
[
CheckboxField::class,
BsFormRenderer::class,
BsSimpleFieldRenderer::class,
'field' => CheckboxField::class,
'form_renderer' => BsFormRenderer::class,
'field_renderer' => BsSimpleFieldRenderer::class,
],
[
SubFormField::class,
BsFormRenderer::class,
BsSubFormFieldRenderer::class,
'field' => SubFormField::class,
'form_renderer' => BsFormRenderer::class,
'field_renderer' => BsSubFormFieldRenderer::class,
],
[
SelectObjectField::class,
BsFormRenderer::class,
BsSelectObjectFieldRenderer::class,
'field' => SelectObjectField::class,
'form_renderer' => BsFormRenderer::class,
'field_renderer' => BsSelectObjectFieldRenderer::class,
],
[
LinkedSetField::class,
BsFormRenderer::class,
BsLinkedSetFieldRenderer::class,
'field' => LinkedSetField::class,
'form_renderer' => BsFormRenderer::class,
'field_renderer' => BsLinkedSetFieldRenderer::class,
],
[
SetField::class,
BsFormRenderer::class,
BsSetFieldRenderer::class,
'field' => SetField::class,
'form_renderer' => BsFormRenderer::class,
'field_renderer' => BsSetFieldRenderer::class,
],
[
TagSetField::class,
BsFormRenderer::class,
BsSetFieldRenderer::class,
'field' => TagSetField::class,
'form_renderer' => BsFormRenderer::class,
'field_renderer' => BsSetFieldRenderer::class,
],
[
DateTimeField::class,
BsFormRenderer::class,
BsSimpleFieldRenderer::class,
'field' => DateTimeField::class,
'form_renderer' => BsFormRenderer::class,
'field_renderer' => BsSimpleFieldRenderer::class,
],
[
DurationField::class,
BsFormRenderer::class,
BsSimpleFieldRenderer::class,
'field' => DurationField::class,
'form_renderer' => BsFormRenderer::class,
'field_renderer' => BsSimpleFieldRenderer::class,
],
[
FileUploadField::class,
BsFormRenderer::class,
BsFileUploadFieldRenderer::class,
'field' => FileUploadField::class,
'form_renderer' => BsFormRenderer::class,
'field_renderer' => BsFileUploadFieldRenderer::class,
],
[
BlobField::class,
BsFormRenderer::class,
BsSimpleFieldRenderer::class,
'field' => BlobField::class,
'form_renderer' => BsFormRenderer::class,
'field_renderer' => BsSimpleFieldRenderer::class,
],
[
ImageField::class,
BsFormRenderer::class,
BsSimpleFieldRenderer::class,
'field' => ImageField::class,
'form_renderer' => BsFormRenderer::class,
'field_renderer' => BsSimpleFieldRenderer::class,
],
];
}

View File

@@ -38,54 +38,54 @@ class ConsoleFieldRendererMappings implements iFieldRendererMappingsExtension
{
return [
[
HiddenField::class,
ConsoleFormRenderer::class,
ConsoleSimpleFieldRenderer::class,
'field' => HiddenField::class,
'form_renderer' => ConsoleFormRenderer::class,
'field_renderer' => ConsoleSimpleFieldRenderer::class,
],
[
LabelField::class,
ConsoleFormRenderer::class,
ConsoleSimpleFieldRenderer::class,
'field' => LabelField::class,
'form_renderer' => ConsoleFormRenderer::class,
'field_renderer' => ConsoleSimpleFieldRenderer::class,
],
[
StringField::class,
ConsoleFormRenderer::class,
ConsoleSimpleFieldRenderer::class,
'field' => StringField::class,
'form_renderer' => ConsoleFormRenderer::class,
'field_renderer' => ConsoleSimpleFieldRenderer::class,
],
[
SelectField::class,
ConsoleFormRenderer::class,
ConsoleSimpleFieldRenderer::class,
'field' => SelectField::class,
'form_renderer' => ConsoleFormRenderer::class,
'field_renderer' => ConsoleSimpleFieldRenderer::class,
],
[
TextAreaField::class,
ConsoleFormRenderer::class,
ConsoleSimpleFieldRenderer::class,
'field' => TextAreaField::class,
'form_renderer' => ConsoleFormRenderer::class,
'field_renderer' => ConsoleSimpleFieldRenderer::class,
],
[
RadioField::class,
ConsoleFormRenderer::class,
ConsoleSimpleFieldRenderer::class,
'field' => RadioField::class,
'form_renderer' => ConsoleFormRenderer::class,
'field_renderer' => ConsoleSimpleFieldRenderer::class,
],
[
DurationField::class,
ConsoleFormRenderer::class,
ConsoleSimpleFieldRenderer::class,
'field' => DurationField::class,
'form_renderer' => ConsoleFormRenderer::class,
'field_renderer' => ConsoleSimpleFieldRenderer::class,
],
[
SelectObjectField::class,
ConsoleFormRenderer::class,
ConsoleSelectObjectFieldRenderer::class,
'field' => SelectObjectField::class,
'form_renderer' => ConsoleFormRenderer::class,
'field_renderer' => ConsoleSelectObjectFieldRenderer::class,
],
[
SubFormField::class,
ConsoleFormRenderer::class,
ConsoleSubFormFieldRenderer::class,
'field' => SubFormField::class,
'form_renderer' => ConsoleFormRenderer::class,
'field_renderer' => ConsoleSubFormFieldRenderer::class,
],
[
DateTimeField::class,
ConsoleFormRenderer::class,
ConsoleSimpleFieldRenderer::class,
'field' => DateTimeField::class,
'form_renderer' => ConsoleFormRenderer::class,
'field_renderer' => ConsoleSimpleFieldRenderer::class,
],
];
}

View File

@@ -61,8 +61,14 @@ abstract class FormRenderer
/** @var \iFieldRendererMappingsExtension $sImplementingClass */
foreach (utils::GetClassesForInterface(iFieldRendererMappingsExtension::class, '', ['[\\\\/]lib[\\\\/]', '[\\\\/]node_modules[\\\\/]', '[\\\\/]test[\\\\/]', '[\\\\/]tests[\\\\/]']) as $sImplementingClass) {
$aFieldRendererMappings = $sImplementingClass::RegisterSupportedFields();
foreach ($aFieldRendererMappings as list($sFieldClass, $sFormRendererClass, $sFieldRendererClass)) {
if ($sFormRendererClass !== static::class) {
// For each mapping we need to check if it can be registered for the current form renderer or not
foreach ($aFieldRendererMappings as $aFieldRendererMapping) {
$sFieldClass = $aFieldRendererMapping['field'];
$sFormRendererClass = $aFieldRendererMapping['form_renderer'];
$sFieldRendererClass = $aFieldRendererMapping['field_renderer'];
// Mapping not concerning current form renderer, skip it
if (false === is_a(static::class, $sFormRendererClass, true)) {
continue;
}