diff --git a/css/form-sdk/test.css b/css/form-sdk/test.css new file mode 100644 index 000000000..90d181997 --- /dev/null +++ b/css/form-sdk/test.css @@ -0,0 +1,79 @@ +.layout-grow{ + flex-grow: 1; +} + +.custom-container{ + position: relative; + border-radius: 10px; + padding: 20px; + /*margin-top: 25px;*/ +} + +.custom-container:before{ + content: 'Custom Layout CSS'; + font-weight: 500; + position: absolute; + left: 50%; + top: -10px; + transform: translateX(-50%); + /*border: 1px solid #9c21af;*/ + background-color: white; + padding: 5px 15px; + border-radius: 10px; +} + +.container-flower{ + background-color: #f3deff; + background-size: 500px; + background-repeat: no-repeat; + background-position-x: right; + background-position-y: bottom; + background: linear-gradient( to right bottom, rgb(248 242 251) 50%, rgb(241 187 255) ); +} +.container-flower fieldset{ + position: relative; + z-index: 1; +} +.container-flower:after{ + content: ''; + width: 300px; + height: 200px; + background-image: url('../../sources/FormImplementation/Resources/6662396.png'); + background-size: 300px; + position: absolute; + bottom: 0px; + right: 0px; + border-radius: 10px; +} + +.container-flower .col-form-label{ + color: #8d63b7; +} +.container-flower .form-layout-fieldset{ + border: 1px solid #8d63b7; +} + +.container-color{ + position: relative; + border-radius: 10px; + padding: 20px; + background-color: #faf7ff; +} + +.container-color .form-object-row{ + background-color: #ebe4f6; + border: none; +} + + +.container-color2{ + position: relative; + border-radius: 10px; + padding: 20px; + background-color: #f7f9ff; +} + +.container-color2 .form-object-row{ + background-color: #a7b4d9; + border: none; +} diff --git a/lib/composer/autoload_classmap.php b/lib/composer/autoload_classmap.php index aefabc474..da3924076 100644 --- a/lib/composer/autoload_classmap.php +++ b/lib/composer/autoload_classmap.php @@ -413,6 +413,9 @@ return array( 'Combodo\\iTop\\FormSDK\\Service\\FormManager' => $baseDir . '/sources/FormSDK/Service/FormManager.php', 'Combodo\\iTop\\FormSDK\\Symfony\\SymfonyBridge' => $baseDir . '/sources/FormSDK/Symfony/SymfonyBridge.php', 'Combodo\\iTop\\FormSDK\\Symfony\\Type\\Compound\\FormObjectType' => $baseDir . '/sources/FormSDK/Symfony/Type/Compound/FormObjectType.php', + 'Combodo\\iTop\\FormSDK\\Symfony\\Type\\Layout\\ColumnType' => $baseDir . '/sources/FormSDK/Symfony/Type/Layout/ColumnType.php', + 'Combodo\\iTop\\FormSDK\\Symfony\\Type\\Layout\\FieldsetType' => $baseDir . '/sources/FormSDK/Symfony/Type/Layout/FieldsetType.php', + 'Combodo\\iTop\\FormSDK\\Symfony\\Type\\Layout\\RowType' => $baseDir . '/sources/FormSDK/Symfony/Type/Layout/RowType.php', 'Combodo\\iTop\\Form\\Field\\AbstractSimpleField' => $baseDir . '/sources/Form/Field/AbstractSimpleField.php', 'Combodo\\iTop\\Form\\Field\\BlobField' => $baseDir . '/sources/Form/Field/BlobField.php', 'Combodo\\iTop\\Form\\Field\\CaseLogField' => $baseDir . '/sources/Form/Field/CaseLogField.php', diff --git a/lib/composer/autoload_static.php b/lib/composer/autoload_static.php index fba35ca9d..3fe907901 100644 --- a/lib/composer/autoload_static.php +++ b/lib/composer/autoload_static.php @@ -822,6 +822,9 @@ class ComposerStaticInit7f81b4a2a468a061c306af5e447a9a9f 'Combodo\\iTop\\FormSDK\\Service\\FormManager' => __DIR__ . '/../..' . '/sources/FormSDK/Service/FormManager.php', 'Combodo\\iTop\\FormSDK\\Symfony\\SymfonyBridge' => __DIR__ . '/../..' . '/sources/FormSDK/Symfony/SymfonyBridge.php', 'Combodo\\iTop\\FormSDK\\Symfony\\Type\\Compound\\FormObjectType' => __DIR__ . '/../..' . '/sources/FormSDK/Symfony/Type/Compound/FormObjectType.php', + 'Combodo\\iTop\\FormSDK\\Symfony\\Type\\Layout\\ColumnType' => __DIR__ . '/../..' . '/sources/FormSDK/Symfony/Type/Layout/ColumnType.php', + 'Combodo\\iTop\\FormSDK\\Symfony\\Type\\Layout\\FieldsetType' => __DIR__ . '/../..' . '/sources/FormSDK/Symfony/Type/Layout/FieldsetType.php', + 'Combodo\\iTop\\FormSDK\\Symfony\\Type\\Layout\\RowType' => __DIR__ . '/../..' . '/sources/FormSDK/Symfony/Type/Layout/RowType.php', 'Combodo\\iTop\\Form\\Field\\AbstractSimpleField' => __DIR__ . '/../..' . '/sources/Form/Field/AbstractSimpleField.php', 'Combodo\\iTop\\Form\\Field\\BlobField' => __DIR__ . '/../..' . '/sources/Form/Field/BlobField.php', 'Combodo\\iTop\\Form\\Field\\CaseLogField' => __DIR__ . '/../..' . '/sources/Form/Field/CaseLogField.php', diff --git a/lib/composer/installed.php b/lib/composer/installed.php index 9a9090512..2392d0ca3 100644 --- a/lib/composer/installed.php +++ b/lib/composer/installed.php @@ -3,7 +3,7 @@ 'name' => 'combodo/itop', 'pretty_version' => 'dev-develop', 'version' => 'dev-develop', - 'reference' => '2bcc4d99896aab3e70ed0d7aa5f43d661b5bbeb5', + 'reference' => '75fde4c9a3fb4b46ae8765e961d0f590bdad199b', 'type' => 'project', 'install_path' => __DIR__ . '/../../', 'aliases' => array(), @@ -22,7 +22,7 @@ 'combodo/itop' => array( 'pretty_version' => 'dev-develop', 'version' => 'dev-develop', - 'reference' => '2bcc4d99896aab3e70ed0d7aa5f43d661b5bbeb5', + 'reference' => '75fde4c9a3fb4b46ae8765e961d0f590bdad199b', 'type' => 'project', 'install_path' => __DIR__ . '/../../', 'aliases' => array(), diff --git a/sources/FormImplementation/Helper/FormHelper.php b/sources/FormImplementation/Helper/FormHelper.php index cc1104bf6..3dd8486c6 100644 --- a/sources/FormImplementation/Helper/FormHelper.php +++ b/sources/FormImplementation/Helper/FormHelper.php @@ -13,6 +13,8 @@ use Symfony\Component\Validator\Constraints\Regex; class FormHelper { + static private int $PERSON_COUNT = 5; + /** * Create a sample form factory for demo purpose. * @@ -29,7 +31,7 @@ class FormHelper $oFormFactory = $oFormManager->CreateFactory(); // add X person forms... - for($i = 0 ; $i < 5 ; $i++){ + for($i = 0 ; $i < self::$PERSON_COUNT ; $i++){ // retrieve person $oPerson = MetaModel::GetObject('Person', $i+1); @@ -52,7 +54,7 @@ class FormHelper 'label' => 'Tel', 'constraints' => new Regex(['pattern' => '/\+33\(\d\) \d\d \d\d \d\d \d\d/'], null, '+{33}(0) 00 00 00 00'), 'required' => false - ], null); + ], '+33(6) 35 57 48 77'); // birthday - date $oFormFactory->AddDateField('birthday', [ @@ -147,6 +149,27 @@ class FormHelper ] ], ['0', '2','4']); + // layout description + $oFormFactory->SetLayoutDescription([ + + 'row__1' => [ + 'column__1' => [ + 'css_classes' => 'custom-container container-flower layout-grow', + 'fieldset__1' => [ 'birthday', 'city', 'tel'], + ], + 'column__2' => [ + 'css_classes' => 'custom-container container-color', + 'fieldset__2' => ['mode', 'interval', 'Person_2'], + ], + + ], + 'row__2' => [ + 'css_classes' => 'custom-container container-color2', + 'fieldset__1' => [ 'Person_1', 'Person_3'], + 'fieldset__2' => [ 'Person_1_name'], + ] + ]); + return $oFormFactory; } diff --git a/sources/FormImplementation/Resources/6662396.jpg b/sources/FormImplementation/Resources/6662396.jpg new file mode 100644 index 000000000..68cb1509c Binary files /dev/null and b/sources/FormImplementation/Resources/6662396.jpg differ diff --git a/sources/FormImplementation/Resources/6662396.png b/sources/FormImplementation/Resources/6662396.png new file mode 100644 index 000000000..6c0055715 Binary files /dev/null and b/sources/FormImplementation/Resources/6662396.png differ diff --git a/sources/FormSDK/Service/FactoryAdapter/FormFactoryObjectAdapter.php b/sources/FormSDK/Service/FactoryAdapter/FormFactoryObjectAdapter.php index 6862d76c6..b86f95a56 100644 --- a/sources/FormSDK/Service/FactoryAdapter/FormFactoryObjectAdapter.php +++ b/sources/FormSDK/Service/FactoryAdapter/FormFactoryObjectAdapter.php @@ -136,7 +136,21 @@ final class FormFactoryObjectAdapter implements FormFactoryAdapterInterface */ private function GetAttributeName(string $sAttributeCode) : string { - return $this->bGroup ? $sAttributeCode : $this->GetIdentifier() . '-' . $sAttributeCode; + return $this->bGroup ? $sAttributeCode : $this->GetIdentifier() . '_' . $sAttributeCode; + } + + public function GetLayoutDescription() + { + return [ + 'row__1' => [ + 'column__1' => [ + 'fieldset__1' => [ 'name'], + ], + 'column__2' => [ + 'fieldset__2' => ['mobile_phone'], + ], + ], + ]; } /** @inheritdoc */ diff --git a/sources/FormSDK/Service/FormFactoryBuilderTrait.php b/sources/FormSDK/Service/FormFactoryBuilderTrait.php index a9179660e..cc621be25 100644 --- a/sources/FormSDK/Service/FormFactoryBuilderTrait.php +++ b/sources/FormSDK/Service/FormFactoryBuilderTrait.php @@ -56,6 +56,7 @@ trait FormFactoryBuilderTrait */ public function AddNumberField(string $sKey, array $aOptions, mixed $oData = null) : FormFactory { +// $aOptions['property_path'] = $sKey; $this->aFieldsDescriptions[$sKey] = new FormFieldDescription($sKey, FormFieldTypeEnumeration::NUMBER, $aOptions); $this->aFieldsData[$sKey] = $oData; @@ -104,7 +105,6 @@ trait FormFactoryBuilderTrait return $this; } - /** * Add duration field. * diff --git a/symfony/.env b/symfony/.env index c4cb030ca..74f5e24f5 100644 --- a/symfony/.env +++ b/symfony/.env @@ -15,6 +15,6 @@ # https://symfony.com/doc/current/best_practices.html#use-environment-variables-for-infrastructure-configuration ###> symfony/framework-bundle ### -#APP_ENV=dev +APP_ENV=dev #APP_SECRET=extracted from iTop general configuration in ./symfony/packages/itop_configuration_bridge.php ###< symfony/framework-bundle ### diff --git a/templates/base.html.twig b/templates/base.html.twig index 7e9085890..25795248a 100644 --- a/templates/base.html.twig +++ b/templates/base.html.twig @@ -11,6 +11,7 @@ {# internal #} + {% block stylesheets %} {% endblock %} {# lib #}