You are here

public function NodeTranslationHandler::entityFormAlter in Drupal 9

Same name and namespace in other branches
  1. 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\node

Code

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)'));
      }
    }
  }
}