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 Symfony\Bridge\Twig\TwigEngine;
use Chill\MainBundle\Templating\TranslatableStringHelper;
use Symfony\Component\Translation\Translator;
/**
*
@ -51,7 +52,7 @@ class CustomFieldChoice implements CustomFieldInterface
*/
private $requestStack;
private $defaultLocale;
private $defaultLocales;
/**
*
@ -64,11 +65,15 @@ class CustomFieldChoice implements CustomFieldInterface
*/
private $translatableStringHelper;
public function __construct(RequestStack $requestStack, $defaultLocale, TwigEngine $templating,
TranslatableStringHelper $translatableStringHelper)
public function __construct(
RequestStack $requestStack,
Translator $translator,
TwigEngine $templating,
TranslatableStringHelper $translatableStringHelper
)
{
$this->requestStack = $requestStack;
$this->defaultLocale = $defaultLocale;
$this->defaultLocales = $translator->getDefaultLocales();
$this->templating = $templating;
$this->translatableStringHelper = $translatableStringHelper;
}
@ -157,7 +162,7 @@ class CustomFieldChoice implements CustomFieldInterface
->add(self::OTHER_VALUE_LABEL, 'translatable_string', array(
'label' => 'Other value label (empty if use by default)'))
->add(self::CHOICES, new ChoicesType(), array(
'type' => new ChoicesListType($this->defaultLocale),
'type' => new ChoicesListType($this->defaultLocales),
'allow_add' => true
))
;
@ -200,7 +205,7 @@ class CustomFieldChoice implements CustomFieldInterface
'selected' => $selected,
'multiple' => $customField->getOptions()[self::MULTIPLE],
'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
{
private $defaultLocale;
private $defaultLocales;
public function __construct($defaultLocale)
public function __construct($defaultLocales)
{
$this->defaultLocale = $defaultLocale;
$this->defaultLocales = $defaultLocales;
}
/* (non-PHPdoc)
@ -21,7 +21,7 @@ class ChoicesListType extends AbstractType
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$locale = $this->defaultLocale;
$locales = $this->defaultLocales;
$builder->add('name', 'translatable_string')
->add('active', 'checkbox', array(
@ -31,14 +31,14 @@ class ChoicesListType extends AbstractType
->add('slug', 'hidden', array(
))
->addEventListener(FormEvents::SUBMIT, function(FormEvent $event) use ($locale){
->addEventListener(FormEvents::SUBMIT, function(FormEvent $event) use ($locales){
$form = $event->getForm();
$data = $event->getData();
$formData = $form->getData();
if (NULL === $formData['slug']) {
$slug = $form['name'][$locale]->getData();
$slug = $form['name'][$locales[0]]->getData();
$slug= strtolower($slug);
$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

View File

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

View File

@ -10,7 +10,7 @@
<i class="fa fa-square-o"></i>&nbsp;
{%- endif -%}
{%- 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 -%}
{{ choice['name'] }}
{%- endif -%}