You are here

public function ConfigHandlerExtra::buildForm in Drupal 9

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

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 = [
    'options' => [
      '#tree' => TRUE,
      '#theme_wrappers' => [
        'container',
      ],
      '#attributes' => [
        'class' => [
          'scroll',
        ],
        'data-drupal-views-scroll' => TRUE,
      ],
    ],
  ];
  $executable = $view
    ->getExecutable();
  if (!$executable
    ->setDisplay($display_id)) {
    $form['markup'] = [
      '#markup' => $this
        ->t('Invalid display id @display', [
        '@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'] = [
        '#markup' => $this
          ->t("Error: handler for @table > @field doesn't exist!", [
          '@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', [
        '@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;
}