getLanguageService(); $result = $this->initializeResultArray(); $fieldName = $this->data['fieldName']; $fieldId = StringUtility::getUniqueId('formengine-localization-state-selector-'); $l10nStateFieldName = 'l10n_state'; $localizationState = State::fromJSON( $this->data['tableName'], $this->data['databaseRow'][$l10nStateFieldName] ?? null ); if ( $localizationState === null || !isset($this->data['defaultLanguageRow']) || !isset($this->data['processedTca']['columns'][$fieldName]['config']['behaviour']['allowLanguageSynchronization']) || !$this->data['processedTca']['columns'][$fieldName]['config']['behaviour']['allowLanguageSynchronization'] ) { return $result; } $l10nParentFieldName = $this->data['processedTca']['ctrl']['transOrigPointerField'] ?? null; $l10nSourceFieldName = $this->data['processedTca']['ctrl']['translationSource'] ?? null; $sourceLanguageTitle = ''; $fieldValueInParentRow = ''; $fieldValueInSourceRow = null; if ($l10nParentFieldName && $this->data['databaseRow'][$l10nParentFieldName] > 0) { if ($l10nSourceFieldName && $this->data['databaseRow'][$l10nSourceFieldName] > 0) { $languageField = $this->data['processedTca']['ctrl']['languageField'] ?? null; if ($languageField && isset($this->data['sourceLanguageRow'][$languageField]) && $this->data['sourceLanguageRow'][$languageField] > 0 ) { $languageUidOfSourceRow = $this->data['sourceLanguageRow'][$languageField]; $sourceLanguageTitle = $this->data['systemLanguageRows'][$languageUidOfSourceRow]['title'] ?? ''; $fieldValueInSourceRow = $this->data['sourceLanguageRow'][$fieldName] ?? null; } } $fieldValueInParentRow = (string)$this->data['defaultLanguageRow'][$fieldName]; } $fieldElementName = 'data[' . htmlspecialchars($this->data['tableName']) . ']' . '[' . htmlspecialchars((string)$this->data['databaseRow']['uid']) . ']' . '[' . htmlspecialchars($l10nStateFieldName) . ']' . '[' . htmlspecialchars($this->data['fieldName']) . ']'; $html = []; $html[] = '
'; $html[] = '
'; $html[] = $languageService->sL('LLL:EXT:core/Resources/Private/Language/locallang_wizards.xlf:localizationStateSelector.header'); $html[] = '
'; $html[] = '
'; $html[] = 'isCustomState($fieldName) ? ' checked="checked"' : ''; $html[] = ' data-original-language-value=""'; $html[] = '>'; $html[] = 'sL('LLL:EXT:core/Resources/Private/Language/locallang_wizards.xlf:localizationStateSelector.customValue'); $html[] = ''; $html[] = '
'; $html[] = '
'; $html[] = 'isParentState($fieldName) ? ' checked="checked"' : ''; $html[] = ' data-original-language-value="' . htmlspecialchars((string)$fieldValueInParentRow) . '"'; $html[] = '>'; $html[] = 'sL('LLL:EXT:core/Resources/Private/Language/locallang_wizards.xlf:localizationStateSelector.defaultLanguageValue'); $html[] = ''; $html[] = '
'; if ($fieldValueInSourceRow !== null) { $html[] = '
'; $html[] = 'isSourceState($fieldName) ? ' checked="checked"' : ''; $html[] = ' data-original-language-value="' . htmlspecialchars((string)$fieldValueInSourceRow) . '"'; $html[] = '>'; $html[] = 'sL('LLL:EXT:core/Resources/Private/Language/locallang_wizards.xlf:localizationStateSelector.sourceLanguageValue'), htmlspecialchars($sourceLanguageTitle)); $html[] = ''; $html[] = '
'; } $html[] = '
'; $result['javaScriptModules'][] = JavaScriptModuleInstruction::create( '@typo3/backend/form-engine/field-wizard/localization-state-selector.js' )->instance($fieldElementName); $result['html'] = implode(LF, $html); return $result; } protected function getLanguageService(): LanguageService { return $GLOBALS['LANG']; } }