Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
EZP-29757: As an administrator, I want to be able to translate a cont…
…ent type (AdminUI frontend) (#263)

* EZP-29757: As an administrator, I want to be able to translate a content type (AdminUI frontend)

* EZP-29757: unit tests fixed

* Update lib/Data/ContentTypeData.php

Co-Authored-By: ViniTou <vinniczek@gmail.com>

* EZP-29757: Code review fix

* EZP-29757: trailing whitespaces

* EZP-29757: Change how fields are disabled when translating content type

* EZP-29757: cs fixes
  • Loading branch information
ViniTou authored and Łukasz Serwatka committed Dec 14, 2018
1 parent c803137 commit b9d291e
Show file tree
Hide file tree
Showing 37 changed files with 324 additions and 78 deletions.
8 changes: 4 additions & 4 deletions bundle/Resources/config/validation.yml
Expand Up @@ -25,11 +25,11 @@ EzSystems\RepositoryForms\Data\ContentTypeData:
choices: [0, 1] choices: [0, 1]
names: names:
- Expression: - Expression:
expression: "value and value[this.mainLanguageCode] matches '/^.{1,255}$/'" expression: "value and value[this.languageCode] matches '/^.{1,255}$/'"
message: "ez.content_type.names" message: "ez.content_type.names"
descriptions: descriptions:
- Expression: - Expression:
expression: "!value or value[this.mainLanguageCode] matches '/^.{0,255}$/'" expression: "!value or value[this.languageCode] matches '/^.{0,255}$/'"
message: "ez.content_type.descriptions" message: "ez.content_type.descriptions"
fieldDefinitionsData: fieldDefinitionsData:
- Valid: ~ - Valid: ~
Expand All @@ -50,11 +50,11 @@ EzSystems\RepositoryForms\Data\FieldDefinitionData:
message: "ez.content_type.identifier.pattern" message: "ez.content_type.identifier.pattern"
names: names:
- Expression: - Expression:
expression: "value and value[this.contentTypeData.mainLanguageCode] matches '/^.{1,255}$/'" expression: "value and value[this.contentTypeData.languageCode] matches '/^.{1,255}$/'"
message: "ez.field_definition.names" message: "ez.field_definition.names"
descriptions: descriptions:
- Expression: - Expression:
expression: "!value or value[this.contentTypeData.mainLanguageCode] matches '/^.{0,255}$/'" expression: "!value or value[this.contentTypeData.languageCode] matches '/^.{0,255}$/'"
message: "ez.field_definition.descriptions" message: "ez.field_definition.descriptions"
position: position:
- Type: - Type:
Expand Down
7 changes: 4 additions & 3 deletions lib/Content/View/Builder/ContentEditViewBuilder.php
Expand Up @@ -82,7 +82,7 @@ public function buildView(array $parameters)
$location = $this->resolveLocation($parameters); $location = $this->resolveLocation($parameters);
$content = $this->resolveContent($parameters, $location, $language); $content = $this->resolveContent($parameters, $location, $language);
$contentInfo = $content->contentInfo; $contentInfo = $content->contentInfo;
$contentType = $this->loadContentType((int) $contentInfo->contentTypeId); $contentType = $this->loadContentType((int) $contentInfo->contentTypeId, $language->languageCode);
$form = $parameters['form']; $form = $parameters['form'];
$isPublished = null !== $contentInfo->mainLocationId && $contentInfo->published; $isPublished = null !== $contentInfo->mainLocationId && $contentInfo->published;


Expand Down Expand Up @@ -178,14 +178,15 @@ private function loadLanguage(string $languageCode): Language
* Loads ContentType with id $contentTypeId. * Loads ContentType with id $contentTypeId.
* *
* @param int $contentTypeId * @param int $contentTypeId
* @param string $languageCode
* *
* @return \eZ\Publish\API\Repository\Values\ContentType\ContentType * @return \eZ\Publish\API\Repository\Values\ContentType\ContentType
* *
* @throws \eZ\Publish\API\Repository\Exceptions\NotFoundException * @throws \eZ\Publish\API\Repository\Exceptions\NotFoundException
*/ */
private function loadContentType(int $contentTypeId): ContentType private function loadContentType(int $contentTypeId, string $languageCode): ContentType
{ {
return $this->repository->getContentTypeService()->loadContentType($contentTypeId); return $this->repository->getContentTypeService()->loadContentType($contentTypeId, [$languageCode]);
} }


/** /**
Expand Down
19 changes: 19 additions & 0 deletions lib/Data/ContentTypeData.php
Expand Up @@ -33,6 +33,13 @@ class ContentTypeData extends ContentTypeUpdateStruct implements NewnessCheckabl
*/ */
protected $fieldDefinitionsData = []; protected $fieldDefinitionsData = [];


/**
* Language Code of currently edited contentTypeDraft.
*
* @var string|null
*/
public $languageCode = null;

protected function getIdentifierValue() protected function getIdentifierValue()
{ {
return $this->contentTypeDraft->identifier; return $this->contentTypeDraft->identifier;
Expand All @@ -43,6 +50,18 @@ public function addFieldDefinitionData(FieldDefinitionData $fieldDefinitionData)
$this->fieldDefinitionsData[] = $fieldDefinitionData; $this->fieldDefinitionsData[] = $fieldDefinitionData;
} }


public function replaceFieldDefinitionData(string $fieldDefinitionIdentifier, FieldDefinitionData $fieldDefinitionData)
{
$currentFieldDefinition = array_filter(
$this->fieldDefinitionsData,
function (FieldDefinitionData $fieldDefinitionData) use ($fieldDefinitionIdentifier) {
return $fieldDefinitionIdentifier === $fieldDefinitionData->identifier;
}
);

$this->fieldDefinitionsData[key($currentFieldDefinition)] = $fieldDefinitionData;
}

/** /**
* Sort $this->fieldDefinitionsData first by position, then by identifier. * Sort $this->fieldDefinitionsData first by position, then by identifier.
*/ */
Expand Down
45 changes: 43 additions & 2 deletions lib/Data/Mapper/ContentTypeDraftMapper.php
Expand Up @@ -8,9 +8,11 @@
*/ */
namespace EzSystems\RepositoryForms\Data\Mapper; namespace EzSystems\RepositoryForms\Data\Mapper;


use eZ\Publish\API\Repository\Values\Content\Language;
use eZ\Publish\API\Repository\Values\ValueObject; use eZ\Publish\API\Repository\Values\ValueObject;
use EzSystems\RepositoryForms\Data\ContentTypeData; use EzSystems\RepositoryForms\Data\ContentTypeData;
use EzSystems\RepositoryForms\Data\FieldDefinitionData; use EzSystems\RepositoryForms\Data\FieldDefinitionData;
use Symfony\Component\OptionsResolver\OptionsResolver;


class ContentTypeDraftMapper implements FormDataMapperInterface class ContentTypeDraftMapper implements FormDataMapperInterface
{ {
Expand All @@ -24,6 +26,16 @@ class ContentTypeDraftMapper implements FormDataMapperInterface
*/ */
public function mapToFormData(ValueObject $contentTypeDraft, array $params = []) public function mapToFormData(ValueObject $contentTypeDraft, array $params = [])
{ {
$optionsResolver = new OptionsResolver();
$this->configureOptions($optionsResolver);
$params = $optionsResolver->resolve($params);

/** @var \eZ\Publish\API\Repository\Values\Content\Language $language */
$language = $params['language'] ?? null;

/** @var \eZ\Publish\API\Repository\Values\Content\Language|null $baseLanguage */
$baseLanguage = $params['baseLanguage'] ?? null;

$contentTypeData = new ContentTypeData(['contentTypeDraft' => $contentTypeDraft]); $contentTypeData = new ContentTypeData(['contentTypeDraft' => $contentTypeDraft]);
if (!$contentTypeData->isNew()) { if (!$contentTypeData->isNew()) {
$contentTypeData->identifier = $contentTypeDraft->identifier; $contentTypeData->identifier = $contentTypeDraft->identifier;
Expand All @@ -40,13 +52,27 @@ public function mapToFormData(ValueObject $contentTypeDraft, array $params = [])
$contentTypeData->names = $contentTypeDraft->getNames(); $contentTypeData->names = $contentTypeDraft->getNames();
$contentTypeData->descriptions = $contentTypeDraft->getDescriptions(); $contentTypeData->descriptions = $contentTypeDraft->getDescriptions();


$contentTypeData->languageCode = $language ? $language->languageCode : $contentTypeDraft->mainLanguageCode;

if ($baseLanguage && $language) {
$contentTypeData->names[$language->languageCode] = $contentTypeDraft->getName($baseLanguage->languageCode);
$contentTypeData->descriptions[$language->languageCode] = $contentTypeDraft->getDescription($baseLanguage->languageCode);
}

foreach ($contentTypeDraft->fieldDefinitions as $fieldDef) { foreach ($contentTypeDraft->fieldDefinitions as $fieldDef) {
$names = $fieldDef->getNames();
$descriptions = $fieldDef->getDescriptions();
if ($baseLanguage && $language) {
$names[$language->languageCode] = $fieldDef->getName($baseLanguage->languageCode);
$descriptions[$language->languageCode] = $fieldDef->getDescription($baseLanguage->languageCode);
}

$contentTypeData->addFieldDefinitionData(new FieldDefinitionData([ $contentTypeData->addFieldDefinitionData(new FieldDefinitionData([
'fieldDefinition' => $fieldDef, 'fieldDefinition' => $fieldDef,
'contentTypeData' => $contentTypeData, 'contentTypeData' => $contentTypeData,
'identifier' => $fieldDef->identifier, 'identifier' => $fieldDef->identifier,
'names' => $fieldDef->getNames(), 'names' => $names,
'descriptions' => $fieldDef->getDescriptions(), 'descriptions' => $descriptions,
'fieldGroup' => $fieldDef->fieldGroup, 'fieldGroup' => $fieldDef->fieldGroup,
'position' => $fieldDef->position, 'position' => $fieldDef->position,
'isTranslatable' => $fieldDef->isTranslatable, 'isTranslatable' => $fieldDef->isTranslatable,
Expand All @@ -62,4 +88,19 @@ public function mapToFormData(ValueObject $contentTypeDraft, array $params = [])


return $contentTypeData; return $contentTypeData;
} }

/**
* @param \Symfony\Component\OptionsResolver\OptionsResolver $optionsResolver
*
* @throws \Symfony\Component\OptionsResolver\Exception\UndefinedOptionsException
* @throws \Symfony\Component\OptionsResolver\Exception\AccessException
*/
private function configureOptions(OptionsResolver $optionsResolver)
{
$optionsResolver
->setDefined(['language'])
->setDefined(['baseLanguage'])
->setAllowedTypes('baseLanguage', ['null', Language::class])
->setAllowedTypes('language', Language::class);
}
} }
7 changes: 5 additions & 2 deletions lib/FieldType/Mapper/AuthorFormMapper.php
Expand Up @@ -29,6 +29,7 @@ class AuthorFormMapper implements FieldDefinitionFormMapperInterface, FieldValue
*/ */
public function mapFieldDefinitionForm(FormInterface $fieldDefinitionForm, FieldDefinitionData $data) public function mapFieldDefinitionForm(FormInterface $fieldDefinitionForm, FieldDefinitionData $data)
{ {
$isTranslation = $data->contentTypeData->languageCode !== $data->contentTypeData->mainLanguageCode;
$fieldDefinitionForm $fieldDefinitionForm
->add( ->add(
'defaultAuthor', 'defaultAuthor',
Expand All @@ -44,6 +45,7 @@ public function mapFieldDefinitionForm(FormInterface $fieldDefinitionForm, Field
'property_path' => 'fieldSettings[defaultAuthor]', 'property_path' => 'fieldSettings[defaultAuthor]',
'label' => 'field_definition.ezauthor.default_author', 'label' => 'field_definition.ezauthor.default_author',
'translation_domain' => 'ezrepoforms_content_type', 'translation_domain' => 'ezrepoforms_content_type',
'disabled' => $isTranslation,
] ]
); );
} }
Expand All @@ -58,15 +60,16 @@ public function mapFieldValueForm(FormInterface $fieldForm, FieldData $data)
$fieldSettings = $fieldDefinition->getFieldSettings(); $fieldSettings = $fieldDefinition->getFieldSettings();
$formConfig = $fieldForm->getConfig(); $formConfig = $fieldForm->getConfig();
$names = $fieldDefinition->getNames(); $names = $fieldDefinition->getNames();
$label = $fieldDefinition->getName($formConfig->getOption('mainLanguageCode')) ?: reset($names); $label = $fieldDefinition->getName($formConfig->getOption('languageCode'))
?: $fieldDefinition->getName($formConfig->getOption('mainLanguageCode'));


$fieldForm $fieldForm
->add( ->add(
$formConfig->getFormFactory()->createBuilder() $formConfig->getFormFactory()->createBuilder()
->create('value', AuthorFieldType::class, [ ->create('value', AuthorFieldType::class, [
'default_author' => $fieldSettings['defaultAuthor'], 'default_author' => $fieldSettings['defaultAuthor'],
'required' => $fieldDefinition->isRequired, 'required' => $fieldDefinition->isRequired,
'label' => $label, 'label' => $label ?? reset($names),
]) ])
->setAutoInitialize(false) ->setAutoInitialize(false)
->getForm() ->getForm()
Expand Down
7 changes: 5 additions & 2 deletions lib/FieldType/Mapper/BinaryFileFormMapper.php
Expand Up @@ -35,6 +35,7 @@ public function __construct(FieldTypeService $fieldTypeService, MaxUploadSize $m


public function mapFieldDefinitionForm(FormInterface $fieldDefinitionForm, FieldDefinitionData $data) public function mapFieldDefinitionForm(FormInterface $fieldDefinitionForm, FieldDefinitionData $data)
{ {
$isTranslation = $data->contentTypeData->languageCode !== $data->contentTypeData->mainLanguageCode;
$fieldDefinitionForm $fieldDefinitionForm
->add('maxSize', IntegerType::class, [ ->add('maxSize', IntegerType::class, [
'required' => false, 'required' => false,
Expand All @@ -51,6 +52,7 @@ public function mapFieldDefinitionForm(FormInterface $fieldDefinitionForm, Field
'min' => 0, 'min' => 0,
'max' => $this->maxUploadSize->get(MaxUploadSize::MEGABYTES), 'max' => $this->maxUploadSize->get(MaxUploadSize::MEGABYTES),
], ],
'disabled' => $isTranslation,
]); ]);
} }


Expand All @@ -60,7 +62,8 @@ public function mapFieldValueForm(FormInterface $fieldForm, FieldData $data)
$formConfig = $fieldForm->getConfig(); $formConfig = $fieldForm->getConfig();
$fieldType = $this->fieldTypeService->getFieldType($fieldDefinition->fieldTypeIdentifier); $fieldType = $this->fieldTypeService->getFieldType($fieldDefinition->fieldTypeIdentifier);
$names = $fieldDefinition->getNames(); $names = $fieldDefinition->getNames();
$label = $fieldDefinition->getName($formConfig->getOption('mainLanguageCode')) ?: reset($names); $label = $fieldDefinition->getName($formConfig->getOption('languageCode'))
?: $fieldDefinition->getName($formConfig->getOption('mainLanguageCode'));


$fieldForm $fieldForm
->add( ->add(
Expand All @@ -70,7 +73,7 @@ public function mapFieldValueForm(FormInterface $fieldForm, FieldData $data)
BinaryFileFieldType::class, BinaryFileFieldType::class,
[ [
'required' => $fieldDefinition->isRequired, 'required' => $fieldDefinition->isRequired,
'label' => $label, 'label' => $label ?? reset($names),
] ]
) )
->addModelTransformer(new BinaryFileValueTransformer($fieldType, $data->value, Value::class)) ->addModelTransformer(new BinaryFileValueTransformer($fieldType, $data->value, Value::class))
Expand Down
7 changes: 5 additions & 2 deletions lib/FieldType/Mapper/CheckboxFormMapper.php
Expand Up @@ -23,13 +23,15 @@ class CheckboxFormMapper implements FieldDefinitionFormMapperInterface, FieldVal
{ {
public function mapFieldDefinitionForm(FormInterface $fieldDefinitionForm, FieldDefinitionData $fieldDefinition) public function mapFieldDefinitionForm(FormInterface $fieldDefinitionForm, FieldDefinitionData $fieldDefinition)
{ {
$isTranslation = $fieldDefinition->contentTypeData->languageCode !== $fieldDefinition->contentTypeData->mainLanguageCode;
$defaultValueForm = $fieldDefinitionForm $defaultValueForm = $fieldDefinitionForm
->getConfig() ->getConfig()
->getFormFactory() ->getFormFactory()
->createBuilder() ->createBuilder()
->create('defaultValue', CheckboxFieldType::class, [ ->create('defaultValue', CheckboxFieldType::class, [
'required' => false, 'required' => false,
'label' => /** @Desc("Default value") */'field_definition.ezboolean.default_value', 'label' => /** @Desc("Default value") */'field_definition.ezboolean.default_value',
'disabled' => $isTranslation,
]) ])
->setAutoInitialize(false) ->setAutoInitialize(false)
->getForm(); ->getForm();
Expand All @@ -42,7 +44,8 @@ public function mapFieldValueForm(FormInterface $fieldForm, FieldData $data)
$fieldDefinition = $data->fieldDefinition; $fieldDefinition = $data->fieldDefinition;
$formConfig = $fieldForm->getConfig(); $formConfig = $fieldForm->getConfig();
$names = $fieldDefinition->getNames(); $names = $fieldDefinition->getNames();
$label = $fieldDefinition->getName($formConfig->getOption('mainLanguageCode')) ?: reset($names); $label = $fieldDefinition->getName($formConfig->getOption('languageCode'))
?: $fieldDefinition->getName($formConfig->getOption('mainLanguageCode'));


$fieldForm $fieldForm
->add( ->add(
Expand All @@ -52,7 +55,7 @@ public function mapFieldValueForm(FormInterface $fieldForm, FieldData $data)
CheckboxFieldType::class, CheckboxFieldType::class,
[ [
'required' => $fieldDefinition->isRequired, 'required' => $fieldDefinition->isRequired,
'label' => $label, 'label' => $label ?? reset($names),
] ]
) )
->setAutoInitialize(false) ->setAutoInitialize(false)
Expand Down
8 changes: 6 additions & 2 deletions lib/FieldType/Mapper/CountryFormMapper.php
Expand Up @@ -21,13 +21,15 @@ class CountryFormMapper implements FieldDefinitionFormMapperInterface, FieldValu
{ {
public function mapFieldDefinitionForm(FormInterface $fieldDefinitionForm, FieldDefinitionData $data) public function mapFieldDefinitionForm(FormInterface $fieldDefinitionForm, FieldDefinitionData $data)
{ {
$isTranslation = $data->contentTypeData->languageCode !== $data->contentTypeData->mainLanguageCode;
$fieldDefinitionForm $fieldDefinitionForm
->add( ->add(
'isMultiple', 'isMultiple',
CheckboxType::class, [ CheckboxType::class, [
'required' => false, 'required' => false,
'property_path' => 'fieldSettings[isMultiple]', 'property_path' => 'fieldSettings[isMultiple]',
'label' => 'field_definition.ezcountry.is_multiple', 'label' => 'field_definition.ezcountry.is_multiple',
'disabled' => $isTranslation,
] ]
) )
->add( ->add(
Expand All @@ -41,6 +43,7 @@ public function mapFieldDefinitionForm(FormInterface $fieldDefinitionForm, Field
'expanded' => false, 'expanded' => false,
'required' => false, 'required' => false,
'label' => 'field_definition.ezcountry.default_value', 'label' => 'field_definition.ezcountry.default_value',
'disabled' => $isTranslation,
] ]
) )
// Deactivate auto-initialize as we're not on the root form. // Deactivate auto-initialize as we're not on the root form.
Expand All @@ -54,15 +57,16 @@ public function mapFieldValueForm(FormInterface $fieldForm, FieldData $data)
$fieldSettings = $fieldDefinition->getFieldSettings(); $fieldSettings = $fieldDefinition->getFieldSettings();
$formConfig = $fieldForm->getConfig(); $formConfig = $fieldForm->getConfig();
$names = $fieldDefinition->getNames(); $names = $fieldDefinition->getNames();
$label = $fieldDefinition->getName($formConfig->getOption('mainLanguageCode')) ?: reset($names); $label = $fieldDefinition->getName($formConfig->getOption('languageCode'))
?: $fieldDefinition->getName($formConfig->getOption('mainLanguageCode'));


$fieldForm $fieldForm
->add( ->add(
$formConfig->getFormFactory()->createBuilder() $formConfig->getFormFactory()->createBuilder()
->create('value', CountryFieldType::class, [ ->create('value', CountryFieldType::class, [
'multiple' => $fieldSettings['isMultiple'], 'multiple' => $fieldSettings['isMultiple'],
'required' => $fieldDefinition->isRequired, 'required' => $fieldDefinition->isRequired,
'label' => $label, 'label' => $label ?? reset($names),
]) ])
->setAutoInitialize(false) ->setAutoInitialize(false)
->getForm() ->getForm()
Expand Down
7 changes: 5 additions & 2 deletions lib/FieldType/Mapper/DateFormMapper.php
Expand Up @@ -25,6 +25,7 @@ class DateFormMapper implements FieldDefinitionFormMapperInterface, FieldValueFo
{ {
public function mapFieldDefinitionForm(FormInterface $fieldDefinitionForm, FieldDefinitionData $data) public function mapFieldDefinitionForm(FormInterface $fieldDefinitionForm, FieldDefinitionData $data)
{ {
$isTranslation = $data->contentTypeData->languageCode !== $data->contentTypeData->mainLanguageCode;
$fieldDefinitionForm $fieldDefinitionForm
->add( ->add(
'defaultType', 'defaultType',
Expand All @@ -40,6 +41,7 @@ public function mapFieldDefinitionForm(FormInterface $fieldDefinitionForm, Field
'property_path' => 'fieldSettings[defaultType]', 'property_path' => 'fieldSettings[defaultType]',
'label' => 'field_definition.ezdate.default_type', 'label' => 'field_definition.ezdate.default_type',
'translation_domain' => 'ezrepoforms_content_type', 'translation_domain' => 'ezrepoforms_content_type',
'disabled' => $isTranslation,
] ]
); );
} }
Expand All @@ -49,7 +51,8 @@ public function mapFieldValueForm(FormInterface $fieldForm, FieldData $data)
$fieldDefinition = $data->fieldDefinition; $fieldDefinition = $data->fieldDefinition;
$formConfig = $fieldForm->getConfig(); $formConfig = $fieldForm->getConfig();
$names = $fieldDefinition->getNames(); $names = $fieldDefinition->getNames();
$label = $fieldDefinition->getName($formConfig->getOption('mainLanguageCode')) ?: reset($names); $label = $fieldDefinition->getName($formConfig->getOption('languageCode'))
?: $fieldDefinition->getName($formConfig->getOption('mainLanguageCode'));


$fieldForm $fieldForm
->add( ->add(
Expand All @@ -59,7 +62,7 @@ public function mapFieldValueForm(FormInterface $fieldForm, FieldData $data)
DateFieldType::class, DateFieldType::class,
[ [
'required' => $fieldDefinition->isRequired, 'required' => $fieldDefinition->isRequired,
'label' => $label, 'label' => $label ?? reset($names),
] ]
) )
->setAutoInitialize(false) ->setAutoInitialize(false)
Expand Down
9 changes: 7 additions & 2 deletions lib/FieldType/Mapper/DateTimeFormMapper.php
Expand Up @@ -27,11 +27,13 @@ class DateTimeFormMapper implements FieldDefinitionFormMapperInterface, FieldVal
{ {
public function mapFieldDefinitionForm(FormInterface $fieldDefinitionForm, FieldDefinitionData $data) public function mapFieldDefinitionForm(FormInterface $fieldDefinitionForm, FieldDefinitionData $data)
{ {
$isTranslation = $data->contentTypeData->languageCode !== $data->contentTypeData->mainLanguageCode;
$fieldDefinitionForm $fieldDefinitionForm
->add('useSeconds', CheckboxType::class, [ ->add('useSeconds', CheckboxType::class, [
'required' => false, 'required' => false,
'property_path' => 'fieldSettings[useSeconds]', 'property_path' => 'fieldSettings[useSeconds]',
'label' => 'field_definition.ezdatetime.use_seconds', 'label' => 'field_definition.ezdatetime.use_seconds',
'disabled' => $isTranslation,
]) ])
->add('defaultType', ChoiceType::class, [ ->add('defaultType', ChoiceType::class, [
'choices' => [ 'choices' => [
Expand All @@ -44,11 +46,13 @@ public function mapFieldDefinitionForm(FormInterface $fieldDefinitionForm, Field
'required' => true, 'required' => true,
'property_path' => 'fieldSettings[defaultType]', 'property_path' => 'fieldSettings[defaultType]',
'label' => 'field_definition.ezdatetime.default_type', 'label' => 'field_definition.ezdatetime.default_type',
'disabled' => $isTranslation,
]) ])
->add('dateInterval', DateTimeIntervalType::class, [ ->add('dateInterval', DateTimeIntervalType::class, [
'required' => false, 'required' => false,
'property_path' => 'fieldSettings[dateInterval]', 'property_path' => 'fieldSettings[dateInterval]',
'label' => 'field_definition.ezdatetime.date_interval', 'label' => 'field_definition.ezdatetime.date_interval',
'disabled' => $isTranslation,
]); ]);
} }


Expand All @@ -58,7 +62,8 @@ public function mapFieldValueForm(FormInterface $fieldForm, FieldData $data)
$fieldSettings = $fieldDefinition->getFieldSettings(); $fieldSettings = $fieldDefinition->getFieldSettings();
$formConfig = $fieldForm->getConfig(); $formConfig = $fieldForm->getConfig();
$names = $fieldDefinition->getNames(); $names = $fieldDefinition->getNames();
$label = $fieldDefinition->getName($formConfig->getOption('mainLanguageCode')) ?: reset($names); $label = $fieldDefinition->getName($formConfig->getOption('languageCode'))
?: $fieldDefinition->getName($formConfig->getOption('mainLanguageCode'));


$fieldForm $fieldForm
->add( ->add(
Expand All @@ -69,7 +74,7 @@ public function mapFieldValueForm(FormInterface $fieldForm, FieldData $data)
[ [
'with_seconds' => $fieldSettings['useSeconds'], 'with_seconds' => $fieldSettings['useSeconds'],
'required' => $fieldDefinition->isRequired, 'required' => $fieldDefinition->isRequired,
'label' => $label, 'label' => $label ?? reset($names),
] ]
) )
->setAutoInitialize(false) ->setAutoInitialize(false)
Expand Down

0 comments on commit b9d291e

Please sign in to comment.