public function onPreSetData(FormEvent $event) { $form = $event->getForm(); $parent = $this->translatableFormHelper->getFirstTranslatableParent($form); if ($this->translatableFormHelper->isFormPropertyPathTranslatable($form) && !$this->translatableFormHelper->isFormDataInCurrentLocale($parent)) { $event->setData(null); } }
public function it_clear_data_if_translatable_and_in_different_locale(TranslatableFormHelper $translatableFormHelper, FormEvent $event, FormInterface $form, FormInterface $parentForm) { $translatableFormHelper->isFormPropertyPathTranslatable($form)->willReturn(true); $translatableFormHelper->isFormDataInCurrentLocale($parentForm)->willReturn(false); $event->setData(Argument::any())->shouldBeCalled(); $this->onPreSetData($event); }
function it_sets_not_translated_attribute_when_property_no_translation(FSiFilePathResolver $filePathResolver, File $uploadableFile, FormInterface $form, FormInterface $parentForm, TranslatableFormHelper $translatableFormHelper) { $view = new FormView(); $fileView = new FormView($view); $removeView = new FormView($view); $view->children['translatable_property'] = $fileView; $view->children['remove'] = $removeView; $translatableFormHelper->getFirstTranslatableParent($form)->willReturn($parentForm); $translatableFormHelper->isFormPropertyPathTranslatable($form)->willReturn(true); $translatableFormHelper->isFormDataInCurrentLocale($parentForm)->willReturn(false); $translatableFormHelper->getFormNormDataLocale($parentForm)->willReturn('en'); $form->getName()->willReturn('translatable_property'); $data = new \stdClass(); $view->vars['value'] = $data; $fileView->vars['value'] = $uploadableFile->getWrappedObject(); $fileView->vars['data'] = $uploadableFile->getWrappedObject(); $filePathResolver->fileBasename($uploadableFile->getWrappedObject())->willReturn('default-locale-filename'); $filePathResolver->fileUrl($uploadableFile->getWrappedObject())->willReturn('default-locale-url'); $this->finishView($view, $form, array('remove_name' => 'remove')); expect($view->vars['translatable'])->toBe(true); expect($view->vars['not_translated'])->toBe(true); expect($view->vars['label_attr']['data-default-locale'])->toBe('en'); expect($view->vars['label_attr']['data-default-locale-value'])->toBe('default-locale-filename'); expect($view->vars['label_attr']['data-default-locale-url'])->toBe('default-locale-url'); expect($fileView->vars['value'])->toBe(null); expect($fileView->vars['data'])->toBe(null); expect($removeView->vars['checked'])->toBe(true); }
/** * {@inheritdoc} */ public function finishView(FormView $view, FormInterface $form, array $options) { $view->vars['translatable'] = false; $view->vars['not_translated'] = false; if (!$this->translatableFormHelper->isFormPropertyPathTranslatable($form)) { return; } $parent = $this->translatableFormHelper->getFirstTranslatableParent($form); if (!$parent) { return; } $view->vars['translatable'] = true; if (!$this->hasCurrentValue($view, $form, $options) || $this->translatableFormHelper->isFormDataInCurrentLocale($parent)) { return; } $view->vars['not_translated'] = true; $view->vars['label_attr']['data-default-locale'] = $this->translatableFormHelper->getFormNormDataLocale($parent); $this->moveCurrentValueToDefaultLocaleValue($view, $form, $options); }
function it_sets_not_translated_attribute_when_property_no_translation(FormInterface $form, FormInterface $parentForm, TranslatableFormHelper $translatableFormHelper) { $translatableFormHelper->getFirstTranslatableParent($form)->willReturn($parentForm); $translatableFormHelper->isFormPropertyPathTranslatable($form)->willReturn(true); $translatableFormHelper->isFormDataInCurrentLocale($parentForm)->willReturn(false); $translatableFormHelper->getFormNormDataLocale($parentForm)->willReturn('en'); $view = new FormView(); $view->vars['value'] = 'default-locale-value'; $this->finishView($view, $form, array()); expect($view->vars['translatable'])->toBe(true); expect($view->vars['not_translated'])->toBe(true); expect($view->vars['label_attr']['data-default-locale'])->toBe('en'); expect($view->vars['label_attr']['data-default-locale-value'])->toBe('default-locale-value'); expect($view->vars['value'])->toBe(null); }