You are here

public function jQueryUiFilterSettingsForm::buildForm in jQuery UI filter 8.2

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 ConfigFormBase::buildForm

File

src/Form/jQueryUiFilterSettingsForm.php, line 37
Contains \Drupal\jquery_ui_filter\Form\jQueryUiFilterSettingsForm.

Class

jQueryUiFilterSettingsForm
Defines a form that configures jQuery UI filter settings.

Namespace

Drupal\jquery_ui_filter\Form

Code

public function buildForm(array $form, FormStateInterface $form_state) {
  $option_descriptions = [
    'headerTag' => $this
      ->t("<b>headerTag</b>: Header tag for widget's element"),
    'mediaType' => $this
      ->t("<b>mediaType</b>: Media type (all, screen, or print) that widget should be render to. Setting <code>mediaType</code> to <code>screen</code> will limit the display of the widget to the browser and when the page is printed the widget will default back to simple HTML markup. Setting <code>mediaType</code> to <code>all</code> allows the widget to be printed."),
    'scrollTo' => $this
      ->t('<b>scrollTo</b>: Scrolls to bookmarked widget when a page is loaded.'),
    'scrollToDuration' => $this
      ->t('<b>scrollToDuration</b>: The speed at which the page scrolls to a bookmarked widget.'),
    'scrollToOffset' => $this
      ->t("<b>scrollToOffset</b>: The offset from the top of the page that a bookmarked widget scrolls to. Setting to <code>auto</code> will include the page's body top margin and top padding when scrolling to a bookmarked widget."),
  ];
  $config = $this
    ->config('jquery_ui_filter.settings');
  $form['jquery_ui_filter'] = [
    '#tree' => TRUE,
  ];
  foreach (jQueryUiFilter::$widgets as $name => $widget) {
    $t_args = [
      '@name' => $name,
      '@api' => $widget['api'],
    ];
    $form['jquery_ui_filter'][$name] = [
      '#type' => 'details',
      '#title' => $widget['title'],
      '#description' => t('Learn more about <a href="@api">jQuery UI @name options</a>.', $t_args),
      '#open' => TRUE,
    ];
    $options_description = [
      'description' => [
        '#markup' => $this
          ->t('Custom options:'),
      ],
      'options' => [
        '#theme' => 'item_list',
        '#items' => $option_descriptions,
      ],
    ];
    $form['jquery_ui_filter'][$name]['options'] = [
      '#type' => 'textarea',
      '#title' => $this
        ->t('Options (YAML)'),
      '#description' => \Drupal::service('renderer')
        ->render($options_description),
      '#default_value' => Yaml::encode(($config
        ->get($name . '.options') ?: []) + $widget['options']),
      "#rows" => 6,
    ];
  }
  return parent::buildForm($form, $form_state);
}