public function NodeTranslationHandler::entityFormAlter in Drupal 9
Same name and namespace in other branches
- 8 core/modules/node/src/NodeTranslationHandler.php \Drupal\node\NodeTranslationHandler::entityFormAlter()
Performs the needed alterations to the entity form.
Parameters
array $form: The entity form to be altered to provide the translation workflow.
\Drupal\Core\Form\FormStateInterface $form_state: The current state of the form.
\Drupal\Core\Entity\EntityInterface $entity: The entity being created or edited.
Overrides ContentTranslationHandler::entityFormAlter
File
- core/
modules/ node/ src/ NodeTranslationHandler.php, line 17
Class
- NodeTranslationHandler
- Defines the translation handler for nodes.
Namespace
Drupal\nodeCode
public function entityFormAlter(array &$form, FormStateInterface $form_state, EntityInterface $entity) {
parent::entityFormAlter($form, $form_state, $entity);
if (isset($form['content_translation'])) {
// We do not need to show these values on node forms: they inherit the
// basic node property values.
$form['content_translation']['status']['#access'] = FALSE;
$form['content_translation']['name']['#access'] = FALSE;
$form['content_translation']['created']['#access'] = FALSE;
}
$form_object = $form_state
->getFormObject();
$form_langcode = $form_object
->getFormLangcode($form_state);
$translations = $entity
->getTranslationLanguages();
$status_translatable = NULL;
// Change the submit button labels if there was a status field they affect
// in which case their publishing / unpublishing may or may not apply
// to all translations.
if (!$entity
->isNew() && (!isset($translations[$form_langcode]) || count($translations) > 1)) {
foreach ($entity
->getFieldDefinitions() as $property_name => $definition) {
if ($property_name == 'status') {
$status_translatable = $definition
->isTranslatable();
}
}
if (isset($status_translatable)) {
if (isset($form['actions']['submit'])) {
$form['actions']['submit']['#value'] .= ' ' . ($status_translatable ? t('(this translation)') : t('(all translations)'));
}
}
}
}