View source
<?php
namespace Drupal\entity_translation_unified_form\Plugin\EntityTranslationUnifiedFormMode;
use Drupal\Core\Render\Element;
use Drupal\entity_translation_unified_form\EntityTranslationUnifiedFormModeInterface;
class EntityTranslationUnifiedFormInlineMode implements EntityTranslationUnifiedFormModeInterface {
public function fieldFormAlter($form, $form_state, &$field, $field_name, $language) {
$this
->alterTitle($form, $form_state, $field, $field_name, $language);
}
public function getFieldGroupThemeWrapper($form, $form_state, $field, $field_name) {
return 'entity_translation_unified_form__inline__wrapper';
}
public function getFieldThemeWrapper($form, $form_state, $field, $field_name, $language) {
return 'entity_translation_unified_form__inline__field_wrapper';
}
protected function alterTitle($form, $form_state, &$field, $field_name, $language) {
if (!isset($field['widget']) || !is_object($language)) {
return;
}
$form_object = $form_state
->getFormObject();
$entity = $form_object
->getEntity();
$entity_type_id = $entity
->getEntityTypeId();
$bundle = $entity
->bundle();
$language_display = entity_translation_unified_form_language_display($entity_type_id, $bundle);
if ($language_display == 'native') {
$language_manager = \Drupal::languageManager();
$native_languages = $language_manager
->getNativeLanguages();
$current_language = $native_languages[$language
->getId()];
$text = ' (' . t($current_language
->getName(), [], [
'langcode' => $language
->getId(),
]) . ')';
}
elseif ($language_display == 'current') {
$text = ' (' . t($language
->getName()) . ')';
}
else {
$text = ' (' . $language
->getId() . ')';
}
$widget =& $field['widget'];
$this
->addTranslatabilityClue($widget, $text);
}
protected function addTranslatabilityClue(&$element, $suffix) {
static $fapi_title_elements;
$done = true;
if (!isset($fapi_title_elements)) {
$fapi_title_elements = array_flip([
'checkbox',
'checkboxes',
'date',
'details',
'fieldset',
'file',
'item',
'password',
'password_confirm',
'radio',
'radios',
'select',
'text_format',
'textarea',
'textfield',
'weight',
]);
}
if (isset($element['#type']) && isset($fapi_title_elements[$element['#type']]) && isset($element['#title'])) {
$element['#title'] .= $suffix;
if (isset($element['#title_display']) && $element['#title_display'] == 'invisible') {
return false;
}
else {
return true;
}
}
if ($children = Element::children($element)) {
foreach ($children as $delta) {
if (!$this
->addTranslatabilityClue($element[$delta], $suffix)) {
$done = false;
}
}
}
if (!$done && isset($element['#title'])) {
$element['#title'] .= $suffix;
}
}
}