You are here

public function ConfigHandlerExtra::buildForm in Zircon Profile 8

Same name and namespace in other branches
  1. 8.0 core/modules/views_ui/src/Form/Ajax/ConfigHandlerExtra.php \Drupal\views_ui\Form\Ajax\ConfigHandlerExtra::buildForm()

Form constructor.

Parameters

array $form: An associative array containing the structure of the form.

\Drupal\Core\Form\FormStateInterface $form_state: The current state of the form.

Return value

array The form structure.

Overrides FormInterface::buildForm

File

core/modules/views_ui/src/Form/Ajax/ConfigHandlerExtra.php, line 53
Contains \Drupal\views_ui\Form\Ajax\ConfigHandlerExtra.

Class

ConfigHandlerExtra
Provides a form for configuring extra information for a Views UI item.

Namespace

Drupal\views_ui\Form\Ajax

Code

public function buildForm(array $form, FormStateInterface $form_state) {
  $view = $form_state
    ->get('view');
  $display_id = $form_state
    ->get('display_id');
  $type = $form_state
    ->get('type');
  $id = $form_state
    ->get('id');
  $form = array(
    'options' => array(
      '#tree' => true,
      '#theme_wrappers' => array(
        'container',
      ),
      '#attributes' => array(
        'class' => array(
          'scroll',
        ),
        'data-drupal-views-scroll' => TRUE,
      ),
    ),
  );
  $executable = $view
    ->getExecutable();
  if (!$executable
    ->setDisplay($display_id)) {
    $form['markup'] = array(
      '#markup' => $this
        ->t('Invalid display id @display', array(
        '@display' => $display_id,
      )),
    );
    return $form;
  }
  $item = $executable
    ->getHandler($display_id, $type, $id);
  if ($item) {
    $handler = $executable->display_handler
      ->getHandler($type, $id);
    if (empty($handler)) {
      $form['markup'] = array(
        '#markup' => $this
          ->t("Error: handler for @table > @field doesn't exist!", array(
          '@table' => $item['table'],
          '@field' => $item['field'],
        )),
      );
    }
    else {
      $handler
        ->init($executable, $executable->display_handler, $item);
      $types = ViewExecutable::getHandlerTypes();
      $form['#title'] = $this
        ->t('Configure extra settings for @type %item', array(
        '@type' => $types[$type]['lstitle'],
        '%item' => $handler
          ->adminLabel(),
      ));
      $form['#section'] = $display_id . '-' . $type . '-' . $id;

      // Get form from the handler.
      $handler
        ->buildExtraOptionsForm($form['options'], $form_state);
      $form_state
        ->set('handler', $handler);
    }
    $view
      ->getStandardButtons($form, $form_state, 'views_ui_config_item_extra_form');
  }
  return $form;
}