Links.php in Better Exposed Filters 8.4
File
src/Plugin/better_exposed_filters/filter/Links.php
View source
<?php
namespace Drupal\better_exposed_filters\Plugin\better_exposed_filters\filter;
use Drupal\better_exposed_filters\BetterExposedFiltersHelper;
use Drupal\Core\Form\FormStateInterface;
class Links extends FilterWidgetBase {
public function defaultConfiguration() {
return parent::defaultConfiguration() + [
'select_all_none' => FALSE,
];
}
public function buildConfigurationForm(array $form, FormStateInterface $form_state) {
$filter = $this->handler;
$form = parent::buildConfigurationForm($form, $form_state);
$form['select_all_none'] = [
'#type' => 'checkbox',
'#title' => $this
->t('Add select all/none links'),
'#default_value' => !empty($this->configuration['select_all_none']),
'#disabled' => !$filter->options['expose']['multiple'],
'#description' => $this
->t('Add a "Select All/None" link when rendering the exposed filter using checkboxes. If this option is disabled, edit the filter and check the "Allow multiple selections".'),
];
return $form;
}
public function exposedFormAlter(array &$form, FormStateInterface $form_state) {
$filter = $this->handler;
$field_id = $this
->getExposedFilterFieldId();
parent::exposedFormAlter($form, $form_state);
if (!empty($form[$field_id])) {
if (!empty($form[$field_id]['#options'])) {
$form[$field_id]['#options'] = BetterExposedFiltersHelper::flattenOptions($form[$field_id]['#options']);
}
if (!empty($filter->options['hierarchy'])) {
$form[$field_id]['#bef_nested'] = TRUE;
}
$form[$field_id]['#theme'] = 'bef_links';
$form[$field_id]['#bef_path'] = $this
->getExposedFormActionUrl($form_state);
}
}
}
Classes
Name |
Description |
Links |
Default widget implementation. |