$arguments = [];
}
+ $originalFormIdentifier = null;
+ if (isset($formRuntime->getRenderingOptions()['_originalIdentifier'])) {
+ $originalFormIdentifier = $formRuntime->getRenderingOptions()['_originalIdentifier'];
+ }
+
$translationKeyChain = [];
foreach ($translationFiles as $translationFile) {
+ if (!empty($originalFormIdentifier)) {
+ $translationKeyChain[] = sprintf('%s:%s.finisher.%s.%s', $translationFile, $originalFormIdentifier, $finisherIdentifier, $optionKey);
+ }
$translationKeyChain[] = sprintf('%s:%s.finisher.%s.%s', $translationFile, $formRuntime->getIdentifier(), $finisherIdentifier, $optionKey);
$translationKeyChain[] = sprintf('%s:finisher.%s.%s', $translationFile, $finisherIdentifier, $optionKey);
}
$arguments = [];
}
+ $originalFormIdentifier = null;
+ if (isset($formRuntime->getRenderingOptions()['_originalIdentifier'])) {
+ $originalFormIdentifier = $formRuntime->getRenderingOptions()['_originalIdentifier'];
+ }
+
if ($property === 'options' && is_array($defaultValue)) {
foreach ($defaultValue as $optionValue => &$optionLabel) {
$translationKeyChain = [];
foreach ($translationFiles as $translationFile) {
+ if (!empty($originalFormIdentifier)) {
+ if ($element instanceof FormRuntime) {
+ $translationKeyChain[] = sprintf('%s:%s.element.%s.%s.%s.%s', $translationFile, $originalFormIdentifier, $originalFormIdentifier, $propertyType, $property, $optionValue);
+ $translationKeyChain[] = sprintf('%s:element.%s.%s.%s.%s', $translationFile, $originalFormIdentifier, $propertyType, $property, $optionValue);
+ } else {
+ $translationKeyChain[] = sprintf('%s:%s.element.%s.%s.%s.%s', $translationFile, $originalFormIdentifier, $element->getIdentifier(), $propertyType, $property, $optionValue);
+ }
+ }
$translationKeyChain[] = sprintf('%s:%s.element.%s.%s.%s.%s', $translationFile, $formRuntime->getIdentifier(), $element->getIdentifier(), $propertyType, $property, $optionValue);
$translationKeyChain[] = sprintf('%s:element.%s.%s.%s.%s', $translationFile, $element->getIdentifier(), $propertyType, $property, $optionValue);
$translationKeyChain[] = sprintf('%s:element.%s.%s.%s.%s', $translationFile, $element->getType(), $propertyType, $property, $optionValue);
foreach ($defaultValue as $propertyName => &$propertyValue) {
$translationKeyChain = [];
foreach ($translationFiles as $translationFile) {
+ if (!empty($originalFormIdentifier)) {
+ if ($element instanceof FormRuntime) {
+ $translationKeyChain[] = sprintf('%s:%s.element.%s.%s.%s', $translationFile, $originalFormIdentifier, $originalFormIdentifier, $propertyType, $propertyName);
+ $translationKeyChain[] = sprintf('%s:element.%s.%s.%s', $translationFile, $originalFormIdentifier, $propertyType, $propertyName);
+ } else {
+ $translationKeyChain[] = sprintf('%s:%s.element.%s.%s.%s', $translationFile, $originalFormIdentifier, $element->getIdentifier(), $propertyType, $propertyName);
+ }
+ }
$translationKeyChain[] = sprintf('%s:%s.element.%s.%s.%s', $translationFile, $formRuntime->getIdentifier(), $element->getIdentifier(), $propertyType, $propertyName);
$translationKeyChain[] = sprintf('%s:element.%s.%s.%s', $translationFile, $element->getIdentifier(), $propertyType, $propertyName);
$translationKeyChain[] = sprintf('%s:element.%s.%s.%s', $translationFile, $element->getType(), $propertyType, $propertyName);
} else {
$translationKeyChain = [];
foreach ($translationFiles as $translationFile) {
+ if (!empty($originalFormIdentifier)) {
+ if ($element instanceof FormRuntime) {
+ $translationKeyChain[] = sprintf('%s:%s.element.%s.%s.%s', $translationFile, $originalFormIdentifier, $originalFormIdentifier, $propertyType, $property);
+ $translationKeyChain[] = sprintf('%s:element.%s.%s.%s', $translationFile, $originalFormIdentifier, $propertyType, $property);
+ } else {
+ $translationKeyChain[] = sprintf('%s:%s.element.%s.%s.%s', $translationFile, $originalFormIdentifier, $element->getIdentifier(), $propertyType, $property);
+ }
+ }
$translationKeyChain[] = sprintf('%s:%s.element.%s.%s.%s', $translationFile, $formRuntime->getIdentifier(), $element->getIdentifier(), $propertyType, $property);
$translationKeyChain[] = sprintf('%s:element.%s.%s.%s', $translationFile, $element->getIdentifier(), $propertyType, $property);
$translationKeyChain[] = sprintf('%s:element.%s.%s.%s', $translationFile, $element->getType(), $propertyType, $property);
throw new \InvalidArgumentException('The argument "code" is empty', 1489272978);
}
- $validationErrors = $element->getProperties()['validationErrorMessages'];
+ $validationErrors = $element->getProperties()['validationErrorMessages'] ?? null;
if (is_array($validationErrors)) {
foreach ($validationErrors as $validationError) {
if ((int)$validationError['code'] === $code) {
}
$renderingOptions = $element->getRenderingOptions();
- $translationFile = $renderingOptions['translation']['translationFile'];
+ $translationFile = $renderingOptions['translation']['translationFile'] ?? null;
if (empty($translationFile)) {
$translationFile = $formRuntime->getRenderingOptions()['translation']['translationFile'];
}
$language = $renderingOptions['language'];
}
+ $originalFormIdentifier = null;
+ if (isset($formRuntime->getRenderingOptions()['_originalIdentifier'])) {
+ $originalFormIdentifier = $formRuntime->getRenderingOptions()['_originalIdentifier'];
+ }
+
$translationKeyChain = [];
foreach ($translationFiles as $translationFile) {
+ if (!empty($originalFormIdentifier)) {
+ if ($element instanceof FormRuntime) {
+ $translationKeyChain[] = sprintf('%s:%s.validation.error.%s.%s', $translationFile, $originalFormIdentifier, $originalFormIdentifier, $code);
+ $translationKeyChain[] = sprintf('%s:validation.error.%s.%s', $translationFile, $originalFormIdentifier, $code);
+ } else {
+ $translationKeyChain[] = sprintf('%s:%s.validation.error.%s.%s', $translationFile, $originalFormIdentifier, $element->getIdentifier(), $code);
+ }
+ $translationKeyChain[] = sprintf('%s:%s.validation.error.%s', $translationFile, $originalFormIdentifier, $code);
+ }
$translationKeyChain[] = sprintf('%s:%s.validation.error.%s.%s', $translationFile, $formRuntime->getIdentifier(), $element->getIdentifier(), $code);
$translationKeyChain[] = sprintf('%s:%s.validation.error.%s', $translationFile, $formRuntime->getIdentifier(), $code);
$translationKeyChain[] = sprintf('%s:validation.error.%s.%s', $translationFile, $element->getIdentifier(), $code);
$this->assertEquals($expected, $this->mockTranslationService->_call('translateFormElementValue', $mockFormElement, ['label'], $mockFormRuntime));
}
+
+ /**
+ * @test
+ */
+ public function translateFormElementTranslateFormWithContentElementUidIfFormContainsNoOriginalIdentifier(): void
+ {
+ $formRuntimeXlfPath = 'EXT:form/Tests/Unit/Service/Fixtures/locallang_ceuid_suffix_01.xlf';
+
+ $formRuntimeIdentifier = 'form-runtime-identifier-42';
+ $formElementIdentifier = 'form-element-identifier';
+
+ $formRuntimeRenderingOptions = [
+ 'submitButtonLabel' => '',
+ 'translation' => [
+ 'translationFile' => $formRuntimeXlfPath,
+ 'translatePropertyValueIfEmpty' => true
+ ],
+ ];
+
+ $this->store->flushData($formRuntimeXlfPath);
+
+ $mockFormRuntime = $this->getAccessibleMock(FormRuntime::class, ['getIdentifier', 'getRenderingOptions', 'getType'], [], '', false);
+
+ $mockFormRuntime->expects($this->any())->method('getIdentifier')->willReturn($formRuntimeIdentifier);
+ $mockFormRuntime->expects($this->any())->method('getRenderingOptions')->willReturn($formRuntimeRenderingOptions);
+ $mockFormRuntime->expects($this->any())->method('getType')->willReturn('Form');
+
+ $mockFormElement = $this->getAccessibleMock(GenericFormElement::class, ['dummy'], [], '', false);
+
+ $mockFormElement->_set('type', 'Text');
+ $mockFormElement->_set('identifier', $formElementIdentifier);
+ $mockFormElement->_set('label', '');
+
+ $expected = 'form-runtime-identifier-42 submitButtonLabel EN';
+ $this->assertEquals($expected, $this->mockTranslationService->_call('translateFormElementValue', $mockFormRuntime, ['submitButtonLabel'], $mockFormRuntime));
+
+ $expected = 'form-runtime-identifier-42 form-element-identifierlabel EN';
+ $this->assertEquals($expected, $this->mockTranslationService->_call('translateFormElementValue', $mockFormElement, ['label'], $mockFormRuntime));
+ }
+
+ /**
+ * @test
+ */
+ public function translateFormElementTranslateFormWithContentElementUidIfFormContainsOriginalIdentifier(): void
+ {
+ $formRuntimeXlfPath = 'EXT:form/Tests/Unit/Service/Fixtures/locallang_ceuid_suffix_02.xlf';
+
+ $formRuntimeIdentifier = 'form-runtime-identifier-42';
+ $formElementIdentifier = 'form-element-identifier';
+
+ $formRuntimeRenderingOptions = [
+ 'submitButtonLabel' => '',
+ '_originalIdentifier' => 'form-runtime-identifier',
+ 'translation' => [
+ 'translationFile' => $formRuntimeXlfPath,
+ 'translatePropertyValueIfEmpty' => true
+ ],
+ ];
+
+ $this->store->flushData($formRuntimeXlfPath);
+
+ $mockFormRuntime = $this->getAccessibleMock(FormRuntime::class, ['getIdentifier', 'getRenderingOptions', 'getType'], [], '', false);
+
+ $mockFormRuntime->expects($this->any())->method('getIdentifier')->willReturn($formRuntimeIdentifier);
+ $mockFormRuntime->expects($this->any())->method('getRenderingOptions')->willReturn($formRuntimeRenderingOptions);
+ $mockFormRuntime->expects($this->any())->method('getType')->willReturn('Form');
+
+ $mockFormElement = $this->getAccessibleMock(GenericFormElement::class, ['dummy'], [], '', false);
+
+ $mockFormElement->_set('type', 'Text');
+ $mockFormElement->_set('identifier', $formElementIdentifier);
+ $mockFormElement->_set('label', '');
+
+ $expected = 'form-runtime-identifier submitButtonLabel EN';
+ $this->assertEquals($expected, $this->mockTranslationService->_call('translateFormElementValue', $mockFormRuntime, ['submitButtonLabel'], $mockFormRuntime));
+
+ $expected = 'form-runtime-identifier form-element-identifierlabel EN';
+ $this->assertEquals($expected, $this->mockTranslationService->_call('translateFormElementValue', $mockFormElement, ['label'], $mockFormRuntime));
+ }
+
+ /**
+ * @test
+ */
+ public function translateFormElementErrorTranslateErrorFromFormWithContentElementUidIfFormContainsNoOriginalIdentifier(): void
+ {
+ $formRuntimeXlfPath = 'EXT:form/Tests/Unit/Service/Fixtures/locallang_ceuid_suffix_01.xlf';
+
+ $formRuntimeIdentifier = 'form-runtime-identifier-42';
+ $formElementIdentifier = 'form-element-identifier';
+
+ $formRuntimeRenderingOptions = [
+ 'translation' => [
+ 'translationFile' => $formRuntimeXlfPath,
+ 'translatePropertyValueIfEmpty' => true
+ ],
+ ];
+
+ $this->store->flushData($formRuntimeXlfPath);
+
+ $mockFormRuntime = $this->getAccessibleMock(FormRuntime::class, ['getIdentifier', 'getRenderingOptions', 'getType', 'getProperties'], [], '', false);
+
+ $mockFormRuntime->expects($this->any())->method('getIdentifier')->willReturn($formRuntimeIdentifier);
+ $mockFormRuntime->expects($this->any())->method('getRenderingOptions')->willReturn($formRuntimeRenderingOptions);
+ $mockFormRuntime->expects($this->any())->method('getType')->willReturn('Form');
+ $mockFormRuntime->expects($this->any())->method('getProperties')->willReturn([]);
+
+ $mockFormElement = $this->getAccessibleMock(GenericFormElement::class, ['dummy'], [], '', false);
+
+ $mockFormElement->_set('type', 'Text');
+ $mockFormElement->_set('identifier', $formElementIdentifier);
+ $mockFormElement->_set('label', '');
+ $mockFormElement->_set('properties', []);
+
+ $expected = 'form-runtime-identifier-42 error 123 EN';
+ $this->assertEquals($expected, $this->mockTranslationService->_call('translateFormElementError', $mockFormRuntime, 123, [], 'default value', $mockFormRuntime));
+
+ $expected = 'form-runtime-identifier-42 form-element-identifier error 123 EN';
+ $this->assertEquals($expected, $this->mockTranslationService->_call('translateFormElementError', $mockFormElement, 123, [], 'default value', $mockFormRuntime));
+ }
+
+ /**
+ * @test
+ */
+ public function translateFormElementErrorTranslateErrorFromFormWithContentElementUidIfFormContainsOriginalIdentifier(): void
+ {
+ $formRuntimeXlfPath = 'EXT:form/Tests/Unit/Service/Fixtures/locallang_ceuid_suffix_02.xlf';
+
+ $formRuntimeIdentifier = 'form-runtime-identifier-42';
+ $formElementIdentifier = 'form-element-identifier';
+
+ $formRuntimeRenderingOptions = [
+ '_originalIdentifier' => 'form-runtime-identifier',
+ 'translation' => [
+ 'translationFile' => $formRuntimeXlfPath,
+ 'translatePropertyValueIfEmpty' => true
+ ],
+ ];
+
+ $this->store->flushData($formRuntimeXlfPath);
+
+ $mockFormRuntime = $this->getAccessibleMock(FormRuntime::class, ['getIdentifier', 'getRenderingOptions', 'getType', 'getProperties'], [], '', false);
+
+ $mockFormRuntime->expects($this->any())->method('getIdentifier')->willReturn($formRuntimeIdentifier);
+ $mockFormRuntime->expects($this->any())->method('getRenderingOptions')->willReturn($formRuntimeRenderingOptions);
+ $mockFormRuntime->expects($this->any())->method('getType')->willReturn('Form');
+ $mockFormRuntime->expects($this->any())->method('getProperties')->willReturn([]);
+
+ $mockFormElement = $this->getAccessibleMock(GenericFormElement::class, ['dummy'], [], '', false);
+
+ $mockFormElement->_set('type', 'Text');
+ $mockFormElement->_set('identifier', $formElementIdentifier);
+ $mockFormElement->_set('label', '');
+ $mockFormElement->_set('properties', []);
+
+ $expected = 'form-runtime-identifier error 123 EN';
+ $this->assertEquals($expected, $this->mockTranslationService->_call('translateFormElementError', $mockFormRuntime, 123, [], 'default value', $mockFormRuntime));
+
+ $expected = 'form-runtime-identifier form-element-identifier error 123 EN';
+ $this->assertEquals($expected, $this->mockTranslationService->_call('translateFormElementError', $mockFormElement, 123, [], 'default value', $mockFormRuntime));
+ }
+
+ /**
+ * @test
+ */
+ public function translateFinisherOptionTranslateOptionFromFormWithContentElementUidIfFormContainsNoOriginalIdentifier(): void
+ {
+ $formRuntimeXlfPath = 'EXT:form/Tests/Unit/Service/Fixtures/locallang_ceuid_suffix_01.xlf';
+
+ $formRuntimeIdentifier = 'form-runtime-identifier-42';
+
+ $formRuntimeRenderingOptions = [
+ 'translation' => [
+ 'translationFile' => $formRuntimeXlfPath,
+ 'translatePropertyValueIfEmpty' => true
+ ],
+ ];
+
+ $this->store->flushData($formRuntimeXlfPath);
+
+ $mockFormRuntime = $this->getAccessibleMock(FormRuntime::class, ['getIdentifier', 'getRenderingOptions', 'getType', 'getProperties'], [], '', false);
+
+ $mockFormRuntime->expects($this->any())->method('getIdentifier')->willReturn($formRuntimeIdentifier);
+ $mockFormRuntime->expects($this->any())->method('getRenderingOptions')->willReturn($formRuntimeRenderingOptions);
+ $mockFormRuntime->expects($this->any())->method('getType')->willReturn('Form');
+ $mockFormRuntime->expects($this->any())->method('getProperties')->willReturn([]);
+
+ $expected = 'form-runtime-identifier-42 FooFinisher test EN';
+ $this->assertEquals($expected, $this->mockTranslationService->_call('translateFinisherOption', $mockFormRuntime, 'Foo', 'test', 'value', []));
+ }
+
+ /**
+ * @test
+ */
+ public function translateFinisherOptionTranslateOptionFromFormWithContentElementUidIfFormContainsOriginalIdentifier(): void
+ {
+ $formRuntimeXlfPath = 'EXT:form/Tests/Unit/Service/Fixtures/locallang_ceuid_suffix_02.xlf';
+
+ $formRuntimeIdentifier = 'form-runtime-identifier-42';
+
+ $formRuntimeRenderingOptions = [
+ '_originalIdentifier' => 'form-runtime-identifier',
+ 'translation' => [
+ 'translationFile' => $formRuntimeXlfPath,
+ 'translatePropertyValueIfEmpty' => true
+ ],
+ ];
+
+ $this->store->flushData($formRuntimeXlfPath);
+
+ $mockFormRuntime = $this->getAccessibleMock(FormRuntime::class, ['getIdentifier', 'getRenderingOptions', 'getType', 'getProperties'], [], '', false);
+
+ $mockFormRuntime->expects($this->any())->method('getIdentifier')->willReturn($formRuntimeIdentifier);
+ $mockFormRuntime->expects($this->any())->method('getRenderingOptions')->willReturn($formRuntimeRenderingOptions);
+ $mockFormRuntime->expects($this->any())->method('getType')->willReturn('Form');
+ $mockFormRuntime->expects($this->any())->method('getProperties')->willReturn([]);
+
+ $expected = 'form-runtime-identifier FooFinisher test EN';
+ $this->assertEquals($expected, $this->mockTranslationService->_call('translateFinisherOption', $mockFormRuntime, 'Foo', 'test', 'value', []));
+ }
}