|
|
|
@ -11,8 +11,9 @@ use Chamilo\CoreBundle\Form\Type\IllustrationType; |
|
|
|
|
use Chamilo\CoreBundle\Repository\LanguageRepository; |
|
|
|
|
use Chamilo\CoreBundle\Settings\SettingsManager; |
|
|
|
|
use Symfony\Component\Form\AbstractType; |
|
|
|
|
use Symfony\Component\Form\Extension\Core\Type\ChoiceType; |
|
|
|
|
use Symfony\Component\Form\Extension\Core\Type\EmailType; |
|
|
|
|
use Symfony\Component\Form\Extension\Core\Type\LocaleType; |
|
|
|
|
use Symfony\Component\Form\Extension\Core\Type\PasswordType; |
|
|
|
|
use Symfony\Component\Form\Extension\Core\Type\TextType; |
|
|
|
|
use Symfony\Component\Form\Extension\Core\Type\TimezoneType; |
|
|
|
|
use Symfony\Component\Form\FormBuilderInterface; |
|
|
|
@ -23,20 +24,16 @@ use Symfony\Component\OptionsResolver\OptionsResolver; |
|
|
|
|
*/ |
|
|
|
|
class ProfileType extends AbstractType |
|
|
|
|
{ |
|
|
|
|
private LanguageRepository $languageRepository; |
|
|
|
|
|
|
|
|
|
public function __construct( |
|
|
|
|
LanguageRepository $languageRepository, |
|
|
|
|
private readonly SettingsManager $settingsManager |
|
|
|
|
) { |
|
|
|
|
$this->languageRepository = $languageRepository; |
|
|
|
|
} |
|
|
|
|
private readonly LanguageRepository $languageRepository, |
|
|
|
|
private readonly SettingsManager $settingsManager, |
|
|
|
|
) {} |
|
|
|
|
|
|
|
|
|
public function buildForm(FormBuilderInterface $builder, array $options): void |
|
|
|
|
{ |
|
|
|
|
$changeableOptions = $this->settingsManager->getSetting('profile.changeable_options') ?? []; |
|
|
|
|
$visibleOptions = $this->settingsManager->getSetting('profile.visible_options') ?? []; |
|
|
|
|
$languages = array_flip($this->languageRepository->getAllAvailableToArray()); |
|
|
|
|
$changeableOptions = $this->settingsManager->getSetting('profile.changeable_options', true) ?? []; |
|
|
|
|
$visibleOptions = $this->settingsManager->getSetting('profile.visible_options', true) ?? []; |
|
|
|
|
$languages = array_flip($this->languageRepository->getAllAvailableToArray(true)); |
|
|
|
|
|
|
|
|
|
$fieldsMap = [ |
|
|
|
|
'name' => ['field' => 'firstname', 'type' => TextType::class, 'label' => 'Firstname'], |
|
|
|
@ -49,10 +46,16 @@ class ProfileType extends AbstractType |
|
|
|
|
'mapped' => false, |
|
|
|
|
], |
|
|
|
|
'login' => ['field' => 'login', 'type' => TextType::class, 'label' => 'Login'], |
|
|
|
|
'password' => ['field' => 'password', 'type' => TextType::class, 'label' => 'Password'], |
|
|
|
|
'password' => [ |
|
|
|
|
'field' => 'password', |
|
|
|
|
'type' => PasswordType::class, |
|
|
|
|
'label' => 'Password', |
|
|
|
|
'mapped' => false, |
|
|
|
|
'required' => false, |
|
|
|
|
], |
|
|
|
|
'language' => [ |
|
|
|
|
'field' => 'locale', |
|
|
|
|
'type' => LocaleType::class, |
|
|
|
|
'type' => ChoiceType::class, |
|
|
|
|
'label' => 'Language', |
|
|
|
|
'choices' => $languages, |
|
|
|
|
], |
|
|
|
@ -69,7 +72,8 @@ class ProfileType extends AbstractType |
|
|
|
|
array_merge( |
|
|
|
|
[ |
|
|
|
|
'label' => $fieldConfig['label'], |
|
|
|
|
'required' => false, |
|
|
|
|
'required' => $fieldConfig['required'] ?? false, |
|
|
|
|
'mapped' => $fieldConfig['mapped'] ?? true, |
|
|
|
|
'attr' => !$isEditable ? ['readonly' => true] : [], |
|
|
|
|
], |
|
|
|
|
isset($fieldConfig['choices']) ? ['choices' => $fieldConfig['choices']] : [] |
|
|
|
|