You are here

public function BoundaryFilter::buildExposedForm in Geolocation Field 8.3

Same name and namespace in other branches
  1. 8 src/Plugin/views/filter/BoundaryFilter.php \Drupal\geolocation\Plugin\views\filter\BoundaryFilter::buildExposedForm()
  2. 8.2 src/Plugin/views/filter/BoundaryFilter.php \Drupal\geolocation\Plugin\views\filter\BoundaryFilter::buildExposedForm()

Render our chunk of the exposed filter form when selecting

You can override this if it doesn't do what you expect.

Overrides FilterPluginBase::buildExposedForm

File

src/Plugin/views/filter/BoundaryFilter.php, line 197

Class

BoundaryFilter
Filter handler for search keywords.

Namespace

Drupal\geolocation\Plugin\views\filter

Code

public function buildExposedForm(&$form, FormStateInterface $form_state) {
  parent::buildExposedForm($form, $form_state);
  if (!$this->options['expose']['input_by_geocoding_widget'] || !empty($this->options['expose']['geocoder_plugin_settings'])) {
    return;
  }
  $identifier = $this->options['expose']['identifier'];
  if (empty($form[$identifier]) && empty($form[$identifier . '_wrapper'])) {
    return;
  }
  $geocoder_configuration = $this->options['expose']['geocoder_plugin_settings']['settings'];

  /** @var \Drupal\geolocation\GeocoderInterface $geocoder_plugin */
  $geocoder_plugin = $this->geocoderManager
    ->getGeocoder($this->options['expose']['geocoder_plugin_settings']['plugin_id'], $geocoder_configuration);
  if (empty($geocoder_plugin)) {
    return;
  }

  // Drupal 9.
  if (!empty($form[$identifier . '_wrapper'])) {
    $form[$identifier . '_wrapper'][$identifier]['lat_north_east']['#type'] = 'hidden';
    $form[$identifier . '_wrapper'][$identifier]['lng_north_east']['#type'] = 'hidden';
    $form[$identifier . '_wrapper'][$identifier]['lat_south_west']['#type'] = 'hidden';
    $form[$identifier . '_wrapper'][$identifier]['lng_south_west']['#type'] = 'hidden';
    $geocoder_plugin
      ->formAttachGeocoder($form[$identifier . '_wrapper'][$identifier], $identifier);
  }
  else {
    $form[$identifier]['lat_north_east']['#type'] = 'hidden';
    $form[$identifier]['lng_north_east']['#type'] = 'hidden';
    $form[$identifier]['lat_south_west']['#type'] = 'hidden';
    $form[$identifier]['lng_south_west']['#type'] = 'hidden';
    $geocoder_plugin
      ->formAttachGeocoder($form[$identifier], $identifier);
  }
  $form = BubbleableMetadata::mergeAttachments($form, [
    '#attached' => [
      'library' => [
        'geolocation/geolocation.views.filter.geocoder',
      ],
      'drupalSettings' => [
        'geolocation' => [
          'geocoder' => [
            'viewsFilterGeocoder' => [
              $identifier => [
                'type' => 'boundary',
              ],
            ],
          ],
        ],
      ],
    ],
  ]);
}