You are here

public function WordFilter::settingsForm in Wordfilter 8.2

Generates a filter's settings form.

Parameters

array $form: A minimally prepopulated form array.

\Drupal\Core\Form\FormStateInterface $form_state: The state of the (entire) configuration form.

Return value

array The $form array with additional form elements for the settings of this filter. The submitted form values should match $this->settings.

Overrides FilterBase::settingsForm

File

src/Plugin/Filter/WordFilter.php, line 72

Class

WordFilter
Plugin annotation @Filter( id = "wordfilter", title = @Translation("Apply filtering of words"), description = @Translation("Filter out words by given Wordfilter configurations (choose below)."), type =…

Namespace

Drupal\wordfilter\Plugin\Filter

Code

public function settingsForm(array $form, FormStateInterface $form_state) {
  $storage = \Drupal::entityTypeManager()
    ->getStorage('wordfilter_configuration');
  $wordfilter_configs = $storage
    ->loadMultiple();
  foreach ($wordfilter_configs as $key => $config) {
    $wordfilter_configs[$key] = $config
      ->label();
  }
  $descriptions = [
    $this
      ->t('Choose the available Wordfilter configurations as active filters.'),
  ];
  if (\Drupal::currentUser()
    ->hasPermission('access wordfilter configurations page')) {
    $descriptions[] = $this
      ->t('You can create and manage Wordfilter configurations at the <a target="_blank" href=":url">Wordfilter configuration page</a>.', [
      ':url' => '/admin/config/wordfilter_configuration',
    ]);
  }
  $form['active_wordfilter_configs'] = array(
    '#type' => 'select',
    '#title' => $this
      ->t('Active Wordfilter configurations'),
    '#options' => $wordfilter_configs,
    '#default_value' => !empty($this->settings['active_wordfilter_configs']) ? $this->settings['active_wordfilter_configs'] : [],
    '#description' => \Drupal::theme()
      ->render('item_list', [
      'items' => $descriptions,
    ]),
    '#multiple' => TRUE,
  );
  return $form;
}