mirror of
https://github.com/Combodo/iTop.git
synced 2026-04-23 10:38:45 +02:00
N°8771 - Add Symfony form component to iTop core (#760)
- Add Symfony Form Component - Add Symfony CSRF security component - Add iTop default form template - Add Twig debug extension to Twig Environment - Add iTop abstract controller facility to get form builder - Add Twig filter to make trans an alias of dict_s filter
This commit is contained in:
118
lib/symfony/form/Console/Descriptor/JsonDescriptor.php
Normal file
118
lib/symfony/form/Console/Descriptor/JsonDescriptor.php
Normal file
@@ -0,0 +1,118 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of the Symfony package.
|
||||
*
|
||||
* (c) Fabien Potencier <fabien@symfony.com>
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Symfony\Component\Form\Console\Descriptor;
|
||||
|
||||
use Symfony\Component\Form\ResolvedFormTypeInterface;
|
||||
use Symfony\Component\OptionsResolver\OptionsResolver;
|
||||
|
||||
/**
|
||||
* @author Yonel Ceruto <yonelceruto@gmail.com>
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
class JsonDescriptor extends Descriptor
|
||||
{
|
||||
protected function describeDefaults(array $options): void
|
||||
{
|
||||
$data['builtin_form_types'] = $options['core_types'];
|
||||
$data['service_form_types'] = $options['service_types'];
|
||||
if (!$options['show_deprecated']) {
|
||||
$data['type_extensions'] = $options['extensions'];
|
||||
$data['type_guessers'] = $options['guessers'];
|
||||
}
|
||||
|
||||
$this->writeData($data, $options);
|
||||
}
|
||||
|
||||
protected function describeResolvedFormType(ResolvedFormTypeInterface $resolvedFormType, array $options = []): void
|
||||
{
|
||||
$this->collectOptions($resolvedFormType);
|
||||
|
||||
if ($options['show_deprecated']) {
|
||||
$this->filterOptionsByDeprecated($resolvedFormType);
|
||||
}
|
||||
|
||||
$formOptions = [
|
||||
'own' => $this->ownOptions,
|
||||
'overridden' => $this->overriddenOptions,
|
||||
'parent' => $this->parentOptions,
|
||||
'extension' => $this->extensionOptions,
|
||||
'required' => $this->requiredOptions,
|
||||
];
|
||||
$this->sortOptions($formOptions);
|
||||
|
||||
$data = [
|
||||
'class' => $resolvedFormType->getInnerType()::class,
|
||||
'block_prefix' => $resolvedFormType->getInnerType()->getBlockPrefix(),
|
||||
'options' => $formOptions,
|
||||
'parent_types' => $this->parents,
|
||||
'type_extensions' => $this->extensions,
|
||||
];
|
||||
|
||||
$this->writeData($data, $options);
|
||||
}
|
||||
|
||||
protected function describeOption(OptionsResolver $optionsResolver, array $options): void
|
||||
{
|
||||
$definition = $this->getOptionDefinition($optionsResolver, $options['option']);
|
||||
|
||||
$map = [];
|
||||
if ($definition['deprecated']) {
|
||||
$map['deprecated'] = 'deprecated';
|
||||
if (\is_string($definition['deprecationMessage'])) {
|
||||
$map['deprecation_message'] = 'deprecationMessage';
|
||||
}
|
||||
}
|
||||
$map += [
|
||||
'info' => 'info',
|
||||
'required' => 'required',
|
||||
'default' => 'default',
|
||||
'allowed_types' => 'allowedTypes',
|
||||
'allowed_values' => 'allowedValues',
|
||||
];
|
||||
foreach ($map as $label => $name) {
|
||||
if (\array_key_exists($name, $definition)) {
|
||||
$data[$label] = $definition[$name];
|
||||
|
||||
if ('default' === $name) {
|
||||
$data['is_lazy'] = isset($definition['lazy']);
|
||||
}
|
||||
}
|
||||
}
|
||||
$data['has_normalizer'] = isset($definition['normalizers']);
|
||||
|
||||
$this->writeData($data, $options);
|
||||
}
|
||||
|
||||
private function writeData(array $data, array $options): void
|
||||
{
|
||||
$flags = $options['json_encoding'] ?? 0;
|
||||
|
||||
$this->output->write(json_encode($data, $flags | \JSON_PRETTY_PRINT)."\n");
|
||||
}
|
||||
|
||||
private function sortOptions(array &$options): void
|
||||
{
|
||||
foreach ($options as &$opts) {
|
||||
$sorted = false;
|
||||
foreach ($opts as &$opt) {
|
||||
if (\is_array($opt)) {
|
||||
sort($opt);
|
||||
$sorted = true;
|
||||
}
|
||||
}
|
||||
if (!$sorted) {
|
||||
sort($opts);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user