Example #1
0
 /**
  * Overrides Drupal\Core\Entity\EntityForm::form().
  */
 public function form(array $form, FormStateInterface $form_state)
 {
     $job = $this->entity;
     // Handle source language.
     $available['source_language'] = tmgmt_available_languages();
     // Handle target language.
     $selected = $job->getSourceLangcode() != 'und' ?: array_keys(tmgmt_available_languages())[0];
     $selected_option = [$selected => tmgmt_available_languages()[$selected]];
     $available['target_language'] = array_diff(tmgmt_available_languages(), $selected_option);
     $this->entity->set('job_type', Job::TYPE_CONTINUOUS);
     $form = parent::form($form, $form_state);
     // Set the title of the page to the label and the current state of the job.
     $form['#title'] = t('@title', array('@title' => 'New Continuous Job'));
     $form['label']['widget'][0]['value']['#description'] = t('You need to provide a label for this job in order to identify it later on.');
     $form['label']['widget'][0]['value']['#required'] = TRUE;
     $form['info']['source_language'] = array('#title' => t('Source language'), '#type' => 'select', '#options' => $available['source_language'], '#default_value' => $job->getSourceLangcode(), '#required' => TRUE, '#prefix' => '<div id="tmgmt-ui-source-language" class="tmgmt-ui-source-language tmgmt-ui-info-item">', '#suffix' => '</div>', '#ajax' => array('callback' => array($this, 'ajaxSourceLanguageSelect'), 'wrapper' => 'tmgmt-ui-target-language', 'event' => 'change'));
     $form['info']['target_language'] = array('#title' => t('Target language'), '#type' => 'select', '#options' => $available['target_language'], '#default_value' => $job->getTargetLangcode(), '#required' => TRUE, '#prefix' => '<div id="tmgmt-ui-target-language" class="tmgmt-ui-target-language tmgmt-ui-info-item">', '#suffix' => '</div>', '#ajax' => array('callback' => array($this, 'ajaxLanguageSelect'), 'wrapper' => 'tmgmt-ui-target-language'), '#validated' => TRUE);
     return $form;
 }