diff --git a/CustomFields/CustomFieldChoice.php b/CustomFields/CustomFieldChoice.php index 8a0f809e3..cc4795963 100644 --- a/CustomFields/CustomFieldChoice.php +++ b/CustomFields/CustomFieldChoice.php @@ -1,7 +1,7 @@ * * This program is free software: you can redistribute it and/or modify @@ -29,11 +29,13 @@ use Chill\CustomFieldsBundle\Form\Type\ChoicesListType; use Chill\CustomFieldsBundle\Form\DataTransformer\CustomFieldDataTransformer; use Chill\CustomFieldsBundle\Form\Type\ChoiceWithOtherType; use Symfony\Bridge\Twig\TwigEngine; +use Chill\MainBundle\Templating\TranslatableStringHelper; /** * * * @author Julien Fastré + * @author Marc Ducobu */ class CustomFieldChoice implements CustomFieldInterface { @@ -55,16 +57,21 @@ class CustomFieldChoice implements CustomFieldInterface * @var TwigEngine */ private $templating; + + /** + * @var TranslatableStringHelper Helper that find the string in current locale from an array of translation + */ + private $translatableStringHelper; - public function __construct(RequestStack $requestStack, $defaultLocale, TwigEngine $templating) + public function __construct(RequestStack $requestStack, $defaultLocale, TwigEngine $templating, + TranslatableStringHelper $translatableStringHelper) { $this->requestStack = $requestStack; $this->defaultLocale = $defaultLocale; $this->templating = $templating; + $this->translatableStringHelper = $translatableStringHelper; } - - public function buildForm(FormBuilderInterface $builder, CustomField $customField) { //prepare choices @@ -72,16 +79,16 @@ class CustomFieldChoice implements CustomFieldInterface $choices = array(); foreach($customField->getOptions()[self::CHOICES] as $persistedChoices) { if ($persistedChoices['active']){ - $choices[$persistedChoices['slug']] = $persistedChoices['name'][$locale]; + $choices[$persistedChoices['slug']] = $this->translatableStringHelper->localize($persistedChoices['name']); } } //prepare $options $options = array( 'multiple' => $customField->getOptions()[self::MULTIPLE], - 'choices' => $choices, + 'choices' => $choices, 'required' => false, - 'label' => $customField->getName()[$locale] + 'label' => $this->translatableStringHelper->localize($customField->getName()) ); //if allow_other = true diff --git a/CustomFields/CustomFieldText.php b/CustomFields/CustomFieldText.php index 966c1c194..a08a00f36 100644 --- a/CustomFields/CustomFieldText.php +++ b/CustomFields/CustomFieldText.php @@ -1,6 +1,23 @@ + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ namespace Chill\CustomFieldsBundle\CustomFields; @@ -9,11 +26,11 @@ use Chill\CustomFieldsBundle\Entity\CustomField; use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\HttpFoundation\RequestStack; use Symfony\Bundle\TwigBundle\TwigEngine; +use Chill\MainBundle\Templating\TranslatableStringHelper; /** - * - * * @author Julien Fastré + * @author Marc Ducobu */ class CustomFieldText implements CustomFieldInterface { @@ -26,11 +43,18 @@ class CustomFieldText implements CustomFieldInterface */ private $templating; + /** + * @var TranslatableStringHelper Helper that find the string in current locale from an array of translation + */ + private $translatableStringHelper; + - public function __construct(RequestStack $requestStack, TwigEngine $templating) + public function __construct(RequestStack $requestStack, TwigEngine $templating, + TranslatableStringHelper $translatableStringHelper) { $this->requestStack = $requestStack; $this->templating = $templating; + $this->translatableStringHelper = $translatableStringHelper; } const MAX_LENGTH = 'maxLength'; @@ -50,7 +74,7 @@ class CustomFieldText implements CustomFieldInterface : 'textarea'; $builder->add($customField->getSlug(), $type, array( - 'label' => $customField->getName()[$this->requestStack->getCurrentRequest()->getLocale()], + 'label' => $this->translatableStringHelper->localize($customField->getName()), 'required' => false )); } diff --git a/CustomFields/CustomFieldTitle.php b/CustomFields/CustomFieldTitle.php index e8948e42c..7b86fc554 100644 --- a/CustomFields/CustomFieldTitle.php +++ b/CustomFields/CustomFieldTitle.php @@ -26,6 +26,7 @@ use Chill\CustomFieldsBundle\Entity\CustomField; use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\HttpFoundation\RequestStack; use Symfony\Bundle\TwigBundle\TwigEngine; +use Chill\MainBundle\Templating\TranslatableStringHelper; class CustomFieldTitle implements CustomFieldInterface { @@ -41,10 +42,17 @@ class CustomFieldTitle implements CustomFieldInterface */ private $templating; - public function __construct(RequestStack $requestStack, TwigEngine $templating) + /** + * @var TranslatableStringHelper Helper that find the string in current locale from an array of translation + */ + private $translatableStringHelper; + + public function __construct(RequestStack $requestStack, TwigEngine $templating, + TranslatableStringHelper $translatableStringHelper) { $this->requestStack = $requestStack; $this->templating = $templating; + $this->translatableStringHelper = $translatableStringHelper; } public function buildForm(FormBuilderInterface $builder, CustomField $customField) @@ -53,7 +61,7 @@ class CustomFieldTitle implements CustomFieldInterface 'label' => false, 'attr' => array( 'class' => 'no-label', - 'title' => $customField->getName()[$this->requestStack->getCurrentRequest()->getLocale()], + 'title' => $this->translatableStringHelper->localize($customField->getName()), self::TYPE => $customField->getOptions()[self::TYPE ] ) )); diff --git a/Resources/config/services.yml b/Resources/config/services.yml index 07751df71..35fd5a583 100644 --- a/Resources/config/services.yml +++ b/Resources/config/services.yml @@ -40,6 +40,7 @@ services: arguments: - "@request_stack" - "@templating" + - "@chill.main.helper.translatable_string" tags: - { name: 'chill.custom_field', type: 'text' } @@ -49,6 +50,7 @@ services: - "@request_stack" - %locale% - "@templating" + - "@chill.main.helper.translatable_string" tags: - { name: 'chill.custom_field', type: 'choice' } @@ -69,6 +71,7 @@ services: arguments: - "@request_stack" - "@templating" + - "@chill.main.helper.translatable_string" tags: - { name: 'chill.custom_field', type: 'title' }