remove %locale% from cf choice

refs #332
This commit is contained in:
Julien Fastré 2015-02-05 17:40:32 +01:00
parent 9a7b2e68b9
commit a2b3ff6d63
4 changed files with 19 additions and 14 deletions

View File

@ -30,6 +30,7 @@ use Chill\CustomFieldsBundle\Form\DataTransformer\CustomFieldDataTransformer;
use Chill\CustomFieldsBundle\Form\Type\ChoiceWithOtherType; use Chill\CustomFieldsBundle\Form\Type\ChoiceWithOtherType;
use Symfony\Bridge\Twig\TwigEngine; use Symfony\Bridge\Twig\TwigEngine;
use Chill\MainBundle\Templating\TranslatableStringHelper; use Chill\MainBundle\Templating\TranslatableStringHelper;
use Symfony\Component\Translation\Translator;
/** /**
* *
@ -51,7 +52,7 @@ class CustomFieldChoice implements CustomFieldInterface
*/ */
private $requestStack; private $requestStack;
private $defaultLocale; private $defaultLocales;
/** /**
* *
@ -64,11 +65,15 @@ class CustomFieldChoice implements CustomFieldInterface
*/ */
private $translatableStringHelper; private $translatableStringHelper;
public function __construct(RequestStack $requestStack, $defaultLocale, TwigEngine $templating, public function __construct(
TranslatableStringHelper $translatableStringHelper) RequestStack $requestStack,
Translator $translator,
TwigEngine $templating,
TranslatableStringHelper $translatableStringHelper
)
{ {
$this->requestStack = $requestStack; $this->requestStack = $requestStack;
$this->defaultLocale = $defaultLocale; $this->defaultLocales = $translator->getDefaultLocales();
$this->templating = $templating; $this->templating = $templating;
$this->translatableStringHelper = $translatableStringHelper; $this->translatableStringHelper = $translatableStringHelper;
} }
@ -157,7 +162,7 @@ class CustomFieldChoice implements CustomFieldInterface
->add(self::OTHER_VALUE_LABEL, 'translatable_string', array( ->add(self::OTHER_VALUE_LABEL, 'translatable_string', array(
'label' => 'Other value label (empty if use by default)')) 'label' => 'Other value label (empty if use by default)'))
->add(self::CHOICES, new ChoicesType(), array( ->add(self::CHOICES, new ChoicesType(), array(
'type' => new ChoicesListType($this->defaultLocale), 'type' => new ChoicesListType($this->defaultLocales),
'allow_add' => true 'allow_add' => true
)) ))
; ;
@ -200,7 +205,7 @@ class CustomFieldChoice implements CustomFieldInterface
'selected' => $selected, 'selected' => $selected,
'multiple' => $customField->getOptions()[self::MULTIPLE], 'multiple' => $customField->getOptions()[self::MULTIPLE],
'expanded' => $customField->getOptions()[self::EXPANDED], 'expanded' => $customField->getOptions()[self::EXPANDED],
'locale' => $this->defaultLocale 'locales' => $this->defaultLocales
) )
); );
} }

View File

@ -9,11 +9,11 @@ use Symfony\Component\Form\FormEvents;
class ChoicesListType extends AbstractType class ChoicesListType extends AbstractType
{ {
private $defaultLocale; private $defaultLocales;
public function __construct($defaultLocale) public function __construct($defaultLocales)
{ {
$this->defaultLocale = $defaultLocale; $this->defaultLocales = $defaultLocales;
} }
/* (non-PHPdoc) /* (non-PHPdoc)
@ -21,7 +21,7 @@ class ChoicesListType extends AbstractType
*/ */
public function buildForm(FormBuilderInterface $builder, array $options) public function buildForm(FormBuilderInterface $builder, array $options)
{ {
$locale = $this->defaultLocale; $locales = $this->defaultLocales;
$builder->add('name', 'translatable_string') $builder->add('name', 'translatable_string')
->add('active', 'checkbox', array( ->add('active', 'checkbox', array(
@ -31,14 +31,14 @@ class ChoicesListType extends AbstractType
->add('slug', 'hidden', array( ->add('slug', 'hidden', array(
)) ))
->addEventListener(FormEvents::SUBMIT, function(FormEvent $event) use ($locale){ ->addEventListener(FormEvents::SUBMIT, function(FormEvent $event) use ($locales){
$form = $event->getForm(); $form = $event->getForm();
$data = $event->getData(); $data = $event->getData();
$formData = $form->getData(); $formData = $form->getData();
if (NULL === $formData['slug']) { if (NULL === $formData['slug']) {
$slug = $form['name'][$locale]->getData(); $slug = $form['name'][$locales[0]]->getData();
$slug= strtolower($slug); $slug= strtolower($slug);
$slug= preg_replace('/[^a-zA-Z0-9 -]/','', $slug); // only take alphanumerical characters, but keep the spaces and dashes too... $slug= preg_replace('/[^a-zA-Z0-9 -]/','', $slug); // only take alphanumerical characters, but keep the spaces and dashes too...
$slug= str_replace(' ','-', $slug); // replace spaces by dashes $slug= str_replace(' ','-', $slug); // replace spaces by dashes

View File

@ -43,7 +43,7 @@ services:
class: Chill\CustomFieldsBundle\CustomFields\CustomFieldChoice class: Chill\CustomFieldsBundle\CustomFields\CustomFieldChoice
arguments: arguments:
- "@request_stack" - "@request_stack"
- %locale% - "@translator.default"
- "@templating" - "@templating"
- "@chill.main.helper.translatable_string" - "@chill.main.helper.translatable_string"
tags: tags:

View File

@ -10,7 +10,7 @@
<i class="fa fa-square-o"></i>&nbsp; <i class="fa fa-square-o"></i>&nbsp;
{%- endif -%} {%- endif -%}
{%- if choice['slug'] is not same as('_other') -%} {%- if choice['slug'] is not same as('_other') -%}
{{ choice['name'][app.request.locale]|default(choice['name'][locale]|default('Not available in your language'|trans)) }} {{ choice['name']|localize_translatable_string }}
{%- else -%} {%- else -%}
{{ choice['name'] }} {{ choice['name'] }}
{%- endif -%} {%- endif -%}