176 lines
6.6 KiB
PHP
176 lines
6.6 KiB
PHP
<?php
|
|
|
|
namespace App\Form;
|
|
|
|
use FOS\CKEditorBundle\Form\Type\CKEditorType;
|
|
use Symfony\Component\Form\AbstractType;
|
|
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
|
|
use Symfony\Component\Form\Extension\Core\Type\HiddenType;
|
|
use Symfony\Component\Form\Extension\Core\Type\IntegerType;
|
|
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
|
|
use Symfony\Component\Form\Extension\Core\Type\TextareaType;
|
|
use Symfony\Component\Form\Extension\Core\Type\TextType;
|
|
use Symfony\Component\Form\FormBuilderInterface;
|
|
use Symfony\Component\OptionsResolver\OptionsResolver;
|
|
|
|
class ConfigType extends AbstractType
|
|
{
|
|
public function buildForm(FormBuilderInterface $builder, array $options)
|
|
{
|
|
$builder->add('submit',
|
|
SubmitType::class, [
|
|
'label' => 'Valider',
|
|
'attr' => ['class' => 'btn btn-success'],
|
|
]
|
|
);
|
|
|
|
$builder->add('id',
|
|
TextType::class,
|
|
['label' => 'Clé',
|
|
'disabled' => true, ]);
|
|
|
|
switch ($options['type']) {
|
|
case 'string':
|
|
$builder->add('value',
|
|
TextType::class,
|
|
['label' => 'Valeur',
|
|
'required' => (0 == $options['required'] ? false : true), ]);
|
|
break;
|
|
|
|
case 'boolean':
|
|
$choices = ['oui' => '1', 'non' => '0'];
|
|
$builder->add('value', ChoiceType::class,
|
|
['label' => 'Valeur',
|
|
'required' => (0 == $options['required'] ? false : true),
|
|
'choices' => $choices, ]);
|
|
break;
|
|
|
|
case 'integer':
|
|
$builder->add('value',
|
|
IntegerType::class, [
|
|
'label' => 'Valeur',
|
|
'attr' => ['min' => '0'],
|
|
'required' => (0 == $options['required'] ? false : true),
|
|
]
|
|
);
|
|
break;
|
|
|
|
case 'pourcentage':
|
|
$builder->add('value',
|
|
IntegerType::class, [
|
|
'label' => 'Valeur',
|
|
'attr' => ['min' => '0', 'max' => '100'],
|
|
'required' => (0 == $options['required'] ? false : true),
|
|
]
|
|
);
|
|
break;
|
|
|
|
case 'font':
|
|
$choices = [
|
|
'ABeeZee-Regular' => 'ABeeZee-Regular',
|
|
'Acme-Regular' => 'Acme-Regular',
|
|
'AlfaSlabOne-Regular' => 'AlfaSlabOne-Regular',
|
|
'Anton-Regular' => 'Anton-Regular',
|
|
'Baloo-Regular' => 'Baloo-Regular',
|
|
'CarterOne-Regular' => 'CarterOne-Regular',
|
|
'Chewy-Regular' => 'Chewy-Regular',
|
|
'Courgette-Regular' => 'Courgette-Regular',
|
|
'FredokaOne-Regular' => 'FredokaOne-Regular',
|
|
'Futura-Condensed-Extra-Bold' => 'Futura-Condensed-Extra-Bold',
|
|
'Grandstander' => 'Grandstander',
|
|
'Helvetica' => 'Helvetica',
|
|
'Justanotherhand-Regular' => 'Justanotherhand-Regular',
|
|
'Lato-Regular' => 'Lato-Regular',
|
|
'LexendDeca-Regular' => 'LexendDeca-Regular',
|
|
'LuckiestGuy-Regular' => 'LuckiestGuy-Regular',
|
|
'Overpass-Black' => 'Overpass-Black',
|
|
'PassionOne' => 'PassionOne',
|
|
'Peacesans' => 'Peacesans',
|
|
'Redressed' => 'Redressed',
|
|
'Righteous-Regular' => 'Righteous-Regular',
|
|
'Roboto-Regular' => 'Roboto-Regular',
|
|
'RubikMonoOne-Regular' => 'RubikMonoOne-Regular',
|
|
'SigmarOne-Regular' => 'SigmarOne-Regular',
|
|
'Signika-Regular' => 'Signika-Regular',
|
|
'Teko-Bold' => 'Teko-Bold',
|
|
'Theboldfont' => 'Theboldfont',
|
|
'Viga-Regular' => 'Viga-Regular',
|
|
];
|
|
|
|
$builder->add('value', ChoiceType::class,
|
|
['label' => 'Valeur',
|
|
'required' => (0 == $options['required'] ? false : true),
|
|
'choices' => $choices, ]);
|
|
break;
|
|
|
|
case 'editor':
|
|
$builder->add('value',
|
|
CKEditorType::class, [
|
|
'required' => (0 == $options['required'] ? false : true),
|
|
'config_name' => 'full_config',
|
|
'config' => [
|
|
'height' => 600,
|
|
'filebrowserUploadRoute' => 'app_ckeditor_upload',
|
|
],
|
|
]
|
|
);
|
|
break;
|
|
|
|
case 'role':
|
|
$choices = [
|
|
'NO_BODY' => 'NO_BODY',
|
|
'ROLE_USER' => 'ROLE_USER',
|
|
'ROLE_MASTER' => 'ROLE_MASTER',
|
|
'ROLE_MANAGER' => 'ROLE_MANAGER',
|
|
'ROLE_MODO' => 'ROLE_MODO',
|
|
];
|
|
|
|
$builder->add('value', ChoiceType::class,
|
|
['label' => 'Valeur',
|
|
'label_attr' => ['style' => 'margin-top:15px;'],
|
|
'attr' => ['class' => 'form-control'],
|
|
'required' => (0 == $options['required'] ? false : true),
|
|
'choices' => $choices, ]);
|
|
break;
|
|
|
|
case 'logo':
|
|
$builder->add('value', HiddenType::class);
|
|
break;
|
|
|
|
case 'header':
|
|
$builder->add('value', HiddenType::class);
|
|
break;
|
|
|
|
case 'image':
|
|
$builder->add('value', HiddenType::class);
|
|
break;
|
|
|
|
case 'color':
|
|
$builder->add('value',
|
|
TextType::class,
|
|
['label' => 'Valeur',
|
|
'attr' => ['class' => 'pick-a-color'],
|
|
'required' => (0 == $options['required'] ? false : true), ]);
|
|
break;
|
|
}
|
|
|
|
$builder->add('help',
|
|
TextareaType::class,
|
|
['label' => 'Aide',
|
|
'attr' => ['style' => 'height: 200px;'],
|
|
'required' => false,
|
|
'disabled' => true, ]);
|
|
}
|
|
|
|
public function configureOptions(OptionsResolver $resolver)
|
|
{
|
|
$resolver->setDefaults([
|
|
'data_class' => 'App\Entity\Config',
|
|
'mode' => 'string',
|
|
'id' => 'string',
|
|
'type' => 'string',
|
|
'required' => 'string',
|
|
]);
|
|
}
|
|
}
|