You are here

function webform_form_alter in Webform 8.5

Same name and namespace in other branches
  1. 5.2 webform.module \webform_form_alter()
  2. 6.3 webform.module \webform_form_alter()
  3. 6.2 webform.module \webform_form_alter()
  4. 7.4 webform.module \webform_form_alter()
  5. 7.3 webform.module \webform_form_alter()
  6. 6.x includes/webform.form_alter.inc \webform_form_alter()

Implements hook_form_alter().

File

includes/webform.form_alter.inc, line 16
Webform module form alter hooks.

Code

function webform_form_alter(&$form, FormStateInterface $form_state, $form_id) {
  if (strpos($form_id, 'webform_') === FALSE || strpos($form_id, 'node_') === 0) {
    return;
  }

  // Get form object.
  $form_object = $form_state
    ->getFormObject();

  // Alter the webform submission form.
  if (strpos($form_id, 'webform_submission') === 0 && $form_object instanceof WebformSubmissionForm) {

    // Make sure webform libraries are always attached to submission form.
    _webform_page_attachments($form);

    // After build.
    $form['#after_build'][] = '_webform_form_webform_submission_form_after_build';
  }

  // Display editing original language warning.
  if (\Drupal::moduleHandler()
    ->moduleExists('config_translation') && preg_match('/^entity.webform.(?:edit|settings|assets|access|handlers|third_party_settings)_form$/', \Drupal::routeMatch()
    ->getRouteName())) {

    /** @var \Drupal\webform\WebformInterface $webform */
    $webform = \Drupal::routeMatch()
      ->getParameter('webform');

    /** @var \Drupal\Core\Language\LanguageManagerInterface $language_manager */
    $language_manager = \Drupal::service('language_manager');

    // If current webform is translated, load the base (default) webform and apply
    // the translation to the elements.
    if ($webform
      ->getLangcode() !== $language_manager
      ->getCurrentLanguage()
      ->getId()) {
      $original_language = $language_manager
        ->getLanguage($webform
        ->getLangcode());
      if ($original_language) {
        $form['langcode_message'] = [
          '#type' => 'webform_message',
          '#message_type' => 'warning',
          '#message_message' => t('You are editing the original %language language for this webform.', [
            '%language' => $original_language
              ->getName(),
          ]),
          '#message_close' => TRUE,
          '#message_storage' => WebformMessage::STORAGE_LOCAL,
          '#message_id' => $webform
            ->id() . '.original_language',
          '#weight' => -100,
        ];
      }
    }
  }

  // Add details 'toggle all' to all webforms (except submission forms).
  if (!$form_object instanceof WebformSubmissionForm) {
    $form['#attributes']['class'][] = 'js-webform-details-toggle';
    $form['#attributes']['class'][] = 'webform-details-toggle';
    $form['#attached']['library'][] = 'webform/webform.element.details.toggle';
    return;
  }
}