You are here

function contact_ajax_form_contact_message_form_alter in Contact ajax 8

Implements hook_form_FORM_ID_alter() for contact_form_form().

File

./contact_ajax.module, line 188
Overrides core contact form functionality

Code

function contact_ajax_form_contact_message_form_alter(&$form, &$form_state, $form_id) {

  /** @var \Drupal\Core\Entity\ContentEntityForm $form_object */
  $form_object = $form_state
    ->getFormObject();

  /* @var \Drupal\contact\MessageInterface $contact_message */
  $contact_message = $form_object
    ->getEntity();
  $contact_form = ContactForm::load($contact_message
    ->bundle());

  /** @var \Drupal\Core\Entity\Display\EntityFormDisplayInterface $form_mode */
  if ($form_object instanceof MessageForm) {
    $ajax_enabled = $contact_form
      ->getThirdPartySetting('contact_ajax', 'enabled', FALSE);
    $prefix_id = $contact_form
      ->getThirdPartySetting('contact_ajax', 'prefix_id');
    $element_id = $prefix_id ? $prefix_id : CONTACT_AJAX_PREFIX . $form_id;
    if ($ajax_enabled) {
      $form['#prefix'] = '<div id="' . $element_id . '">';
      $form['#suffix'] = '</div>';

      // Adjust the form to use ajax submit.
      $form['actions']['submit']['#ajax'] = [
        'callback' => 'contact_ajax_contact_site_form_ajax_callback',
        'wrapper' => $element_id,
        'effect' => 'fade',
      ];
      if (\Drupal::moduleHandler()
        ->moduleExists('views')) {
        $form['#attached']['library'][] = 'views/views.ajax';
      }
    }
  }
}