diff --git a/lib/composer/autoload_classmap.php b/lib/composer/autoload_classmap.php index 86a9504bf4..7b4426514a 100644 --- a/lib/composer/autoload_classmap.php +++ b/lib/composer/autoload_classmap.php @@ -402,6 +402,7 @@ return array( 'Combodo\\iTop\\FormSDK\\Controller\\TestController' => $baseDir . '/sources/FormSDK/Controller/TestController.php', 'Combodo\\iTop\\FormSDK\\Field\\Description\\FormFieldDescription' => $baseDir . '/sources/FormSDK/Field/Description/FormFieldDescription.php', 'Combodo\\iTop\\FormSDK\\Field\\Description\\FormFieldTypeEnumeration' => $baseDir . '/sources/FormSDK/Field/Description/FormFieldTypeEnumeration.php', + 'Combodo\\iTop\\FormSDK\\Helper\\SelectHelper' => $baseDir . '/sources/FormSDK/Helper/SelectHelper.php', 'Combodo\\iTop\\FormSDK\\Service\\FactoryPlugin\\FormFactoryObjectPlugin' => $baseDir . '/sources/FormSDK/Service/FactoryPlugin/FormFactoryObjectPlugin.php', 'Combodo\\iTop\\FormSDK\\Service\\FactoryPlugin\\FormFactoryPluginInterface' => $baseDir . '/sources/FormSDK/Service/FactoryPlugin/FormFactoryPluginInterface.php', 'Combodo\\iTop\\FormSDK\\Service\\FormFactory' => $baseDir . '/sources/FormSDK/Service/FormFactory.php', diff --git a/lib/composer/autoload_static.php b/lib/composer/autoload_static.php index b11aa4e5e7..39b71f3652 100644 --- a/lib/composer/autoload_static.php +++ b/lib/composer/autoload_static.php @@ -801,6 +801,7 @@ class ComposerStaticInit7f81b4a2a468a061c306af5e447a9a9f 'Combodo\\iTop\\FormSDK\\Controller\\TestController' => __DIR__ . '/../..' . '/sources/FormSDK/Controller/TestController.php', 'Combodo\\iTop\\FormSDK\\Field\\Description\\FormFieldDescription' => __DIR__ . '/../..' . '/sources/FormSDK/Field/Description/FormFieldDescription.php', 'Combodo\\iTop\\FormSDK\\Field\\Description\\FormFieldTypeEnumeration' => __DIR__ . '/../..' . '/sources/FormSDK/Field/Description/FormFieldTypeEnumeration.php', + 'Combodo\\iTop\\FormSDK\\Helper\\SelectHelper' => __DIR__ . '/../..' . '/sources/FormSDK/Helper/SelectHelper.php', 'Combodo\\iTop\\FormSDK\\Service\\FactoryPlugin\\FormFactoryObjectPlugin' => __DIR__ . '/../..' . '/sources/FormSDK/Service/FactoryPlugin/FormFactoryObjectPlugin.php', 'Combodo\\iTop\\FormSDK\\Service\\FactoryPlugin\\FormFactoryPluginInterface' => __DIR__ . '/../..' . '/sources/FormSDK/Service/FactoryPlugin/FormFactoryPluginInterface.php', 'Combodo\\iTop\\FormSDK\\Service\\FormFactory' => __DIR__ . '/../..' . '/sources/FormSDK/Service/FormFactory.php', diff --git a/lib/composer/installed.php b/lib/composer/installed.php index 54ffbe449e..ceefdfe495 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' => '7b12398ea847dd7fb39463568c3be6849b3bd1d6', + 'reference' => '12f3e5ed4ca8538b4646ca04d1d5abd7f37f3f67', 'type' => 'project', 'install_path' => __DIR__ . '/../../', 'aliases' => array(), @@ -22,7 +22,7 @@ 'combodo/itop' => array( 'pretty_version' => 'dev-develop', 'version' => 'dev-develop', - 'reference' => '7b12398ea847dd7fb39463568c3be6849b3bd1d6', + 'reference' => '12f3e5ed4ca8538b4646ca04d1d5abd7f37f3f67', 'type' => 'project', 'install_path' => __DIR__ . '/../../', 'aliases' => array(), diff --git a/sources/FormSDK/Controller/TestController.php b/sources/FormSDK/Controller/TestController.php index f56949abb3..c732c9f002 100644 --- a/sources/FormSDK/Controller/TestController.php +++ b/sources/FormSDK/Controller/TestController.php @@ -3,7 +3,9 @@ namespace Combodo\iTop\FormSDK\Controller; use Combodo\iTop\Controller\AbstractAppController; +use Combodo\iTop\FormSDK\Helper\SelectHelper; use Combodo\iTop\FormSDK\Service\FormManager; +use Dict; use Exception; use MetaModel; use Symfony\Component\HttpFoundation\Request; @@ -50,6 +52,7 @@ class TestController extends AbstractAppController // others data $oFormFactory->AddText('data1', ['label' => 'Ma ville'], 'Autun'); $oFormFactory->AddText('data2', ['label' => 'Pays'], 'FRANCE'); + $oFormFactory->AddSelect('data3', ['label' => 'Language', 'choices' => SelectHelper::GetApplicationLanguages()], 'FR FR'); // get the form $oForm = $oFormFactory->GetForm(); @@ -70,7 +73,7 @@ class TestController extends AbstractAppController return $this->render('formSDK/form.html.twig', [ 'form' => $oFormFactory->GetForm(), - 'theme' => 'formSDK/theme/portal.html.twig' + 'theme' => 'formSDK/themes/portal.html.twig' ]); } diff --git a/sources/FormSDK/Helper/SelectHelper.php b/sources/FormSDK/Helper/SelectHelper.php new file mode 100644 index 0000000000..4c40610e7e --- /dev/null +++ b/sources/FormSDK/Helper/SelectHelper.php @@ -0,0 +1,42 @@ + $aInfo){ + $sLanguageLabel = $aInfo['description'].' ('.$aInfo['localized_description'].')'; + $aLanguageCodes[$sLanguageLabel] = $sLangCode; + } + + return $aLanguageCodes; + } +} \ No newline at end of file diff --git a/sources/FormSDK/Service/FormFactory.php b/sources/FormSDK/Service/FormFactory.php index 97effe3075..a722dd7ff8 100644 --- a/sources/FormSDK/Service/FormFactory.php +++ b/sources/FormSDK/Service/FormFactory.php @@ -74,6 +74,23 @@ class FormFactory return $this; } + /** + * Add select. + * + * @param string $sKey + * @param array $aOptions + * @param mixed $oData + * + * @return $this + */ + public function AddSelect(string $sKey, array $aOptions, mixed $oData) : FormFactory + { + $this->aDescriptions[$sKey] = new FormFieldDescription($sKey, FormFieldTypeEnumeration::SELECT, $aOptions); + $this->aData[$sKey] = $oData; + + return $this; + } + /** * @return array{descriptions:array, data:array} */ diff --git a/sources/FormSDK/Symfony/SymfonyBridge.php b/sources/FormSDK/Symfony/SymfonyBridge.php index d188a762ee..bdf74d2f97 100644 --- a/sources/FormSDK/Symfony/SymfonyBridge.php +++ b/sources/FormSDK/Symfony/SymfonyBridge.php @@ -23,6 +23,7 @@ use Combodo\iTop\FormSDK\Symfony\Type\Compound\FormObjectType; use Combodo\iTop\FormSDK\Field\Description\FormFieldDescription; use Combodo\iTop\FormSDK\Field\Description\FormFieldTypeEnumeration; use LogAPI; +use Symfony\Component\Form\Extension\Core\Type\ChoiceType; use Symfony\Component\Form\Extension\Core\Type\FormType; use Symfony\Component\Form\Extension\Core\Type\TextType; use Symfony\Component\Form\FormFactoryInterface; @@ -64,6 +65,13 @@ class SymfonyBridge 'options' => $oFormDescription->GetOptions() ]; + case FormFieldTypeEnumeration::SELECT: + return [ + 'path' => $oFormDescription->GetPath(), + 'type' => ChoiceType::class, + 'options' => $oFormDescription->GetOptions() + ]; + case FormFieldTypeEnumeration::DB_OBJECT: $aOptions = $oFormDescription->GetOptions(); $aItems = []; diff --git a/templates/formSDK/theme/console.html.twig b/templates/formSDK/themes/console.html.twig similarity index 100% rename from templates/formSDK/theme/console.html.twig rename to templates/formSDK/themes/console.html.twig diff --git a/templates/formSDK/theme/portal.html.twig b/templates/formSDK/themes/portal.html.twig similarity index 100% rename from templates/formSDK/theme/portal.html.twig rename to templates/formSDK/themes/portal.html.twig