class LeafletControlGeocoder in Geolocation Field 8.2
Same name and namespace in other branches
- 8.3 modules/geolocation_leaflet/src/Plugin/geolocation/MapFeature/LeafletControlGeocoder.php \Drupal\geolocation_leaflet\Plugin\geolocation\MapFeature\LeafletControlGeocoder
Provides Geocoder control element.
Plugin annotation
@MapFeature(
id = "leaflet_control_geocoder",
name = @Translation("Map Control - Geocoder"),
description = @Translation("Add geocoder control element."),
type = "leaflet",
)
Hierarchy
- class \Drupal\Component\Plugin\PluginBase implements DerivativeInspectionInterface, PluginInspectionInterface
- class \Drupal\Core\Plugin\PluginBase uses DependencySerializationTrait, MessengerTrait, StringTranslationTrait
- class \Drupal\geolocation\MapFeatureBase implements ContainerFactoryPluginInterface, MapFeatureInterface
- class \Drupal\geolocation_leaflet\Plugin\geolocation\MapFeature\ControlElementBase
- class \Drupal\geolocation_leaflet\Plugin\geolocation\MapFeature\ControlCustomElementBase
- class \Drupal\geolocation_leaflet\Plugin\geolocation\MapFeature\LeafletControlGeocoder
- class \Drupal\geolocation_leaflet\Plugin\geolocation\MapFeature\ControlCustomElementBase
- class \Drupal\geolocation_leaflet\Plugin\geolocation\MapFeature\ControlElementBase
- class \Drupal\geolocation\MapFeatureBase implements ContainerFactoryPluginInterface, MapFeatureInterface
- class \Drupal\Core\Plugin\PluginBase uses DependencySerializationTrait, MessengerTrait, StringTranslationTrait
Expanded class hierarchy of LeafletControlGeocoder
File
- modules/
geolocation_leaflet/ src/ Plugin/ geolocation/ MapFeature/ LeafletControlGeocoder.php, line 18
Namespace
Drupal\geolocation_leaflet\Plugin\geolocation\MapFeatureView source
class LeafletControlGeocoder extends ControlCustomElementBase {
/**
* The GeocoderManager object.
*
* @var \Drupal\geolocation\GeocoderManager
*/
protected $geocoderManager;
/**
* ControlCustomGeocoder constructor.
*
* @param array $configuration
* Configuration.
* @param string $plugin_id
* Plugin ID.
* @param mixed $plugin_definition
* Plugin configuration.
* @param \Drupal\geolocation\GeocoderManager $geocoder_manager
* Geocoder manager.
*/
public function __construct(array $configuration, $plugin_id, $plugin_definition, GeocoderManager $geocoder_manager) {
parent::__construct($configuration, $plugin_id, $plugin_definition);
$this->geocoderManager = $geocoder_manager;
}
/**
* {@inheritdoc}
*/
public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition) {
return new static($configuration, $plugin_id, $plugin_definition, $container
->get('plugin.manager.geolocation.geocoder'));
}
/**
* {@inheritdoc}
*/
public static function getDefaultSettings() {
return array_replace_recursive(parent::getDefaultSettings(), [
'geocoder' => 'nominatim',
'settings' => [],
]);
}
/**
* {@inheritdoc}
*/
public function getSettingsForm(array $settings, array $parents) {
$form = parent::getSettingsForm($settings, $parents);
$settings = array_replace_recursive(self::getDefaultSettings(), $settings);
$geocoder_options = [];
foreach ($this->geocoderManager
->getDefinitions() as $id => $definition) {
if (empty($definition['frontendCapable'])) {
continue;
}
$geocoder_options[$id] = $definition['name'];
}
if ($geocoder_options) {
$form['geocoder'] = [
'#type' => 'select',
'#options' => $geocoder_options,
'#title' => $this
->t('Geocoder plugin'),
'#default_value' => $settings['geocoder'],
'#ajax' => [
'callback' => [
get_class($this->geocoderManager),
'addGeocoderSettingsFormAjax',
],
'wrapper' => 'geocoder-plugin-settings',
'effect' => 'fade',
],
];
if (!empty($settings['geocoder'])) {
$geocoder_plugin = $this->geocoderManager
->getGeocoder($settings['geocoder'], $settings['settings']);
}
elseif (current(array_keys($geocoder_options))) {
$geocoder_plugin = $this->geocoderManager
->getGeocoder(current(array_keys($geocoder_options)));
}
if (!empty($geocoder_plugin)) {
$geocoder_settings_form = $geocoder_plugin
->getOptionsForm();
if ($geocoder_settings_form) {
$form['settings'] = $geocoder_settings_form;
}
}
if (empty($form['settings'])) {
$form['settings'] = [
'#type' => 'html_tag',
'#tag' => 'span',
'#value' => $this
->t("No settings available."),
];
}
$form['settings'] = array_replace_recursive($form['settings'], [
'#flatten' => TRUE,
'#prefix' => '<div id="geocoder-plugin-settings">',
'#suffix' => '</div>',
]);
}
return $form;
}
/**
* {@inheritdoc}
*/
public function alterMap(array $render_array, array $feature_settings, array $context = []) {
$render_array = parent::alterMap($render_array, $feature_settings, $context);
$feature_settings = $this
->getSettings($feature_settings);
/** @var \Drupal\geolocation\GeocoderInterface $geocoder_plugin */
$geocoder_plugin = $this->geocoderManager
->getGeocoder($feature_settings['geocoder'], $feature_settings['settings']);
$geocoder_plugin
->formAttachGeocoder($render_array['#controls'][$this->pluginId], $render_array['#id']);
return $render_array;
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
ControlElementBase:: |
public | function |
Validate Feature Form. Overrides MapFeatureBase:: |
|
DependencySerializationTrait:: |
protected | property | An array of entity type IDs keyed by the property name of their storages. | |
DependencySerializationTrait:: |
protected | property | An array of service IDs keyed by property name used for serialization. | |
DependencySerializationTrait:: |
public | function | 1 | |
DependencySerializationTrait:: |
public | function | 2 | |
LeafletControlGeocoder:: |
protected | property | The GeocoderManager object. | |
LeafletControlGeocoder:: |
public | function |
Alter render array. Overrides ControlCustomElementBase:: |
|
LeafletControlGeocoder:: |
public static | function |
Creates an instance of the plugin. Overrides MapFeatureBase:: |
|
LeafletControlGeocoder:: |
public static | function |
Provide a populated settings array. Overrides ControlElementBase:: |
|
LeafletControlGeocoder:: |
public | function |
Provide a generic map settings form array. Overrides ControlElementBase:: |
|
LeafletControlGeocoder:: |
public | function |
ControlCustomGeocoder constructor. Overrides PluginBase:: |
|
MapFeatureBase:: |
public | function |
Provide map feature specific settings ready to handover to JS. Overrides MapFeatureInterface:: |
|
MapFeatureBase:: |
public | function |
Provide a summary array to use in field formatters. Overrides MapFeatureInterface:: |
1 |
MessengerTrait:: |
protected | property | The messenger. | 29 |
MessengerTrait:: |
public | function | Gets the messenger. | 29 |
MessengerTrait:: |
public | function | Sets the messenger. | |
PluginBase:: |
protected | property | Configuration information passed into the plugin. | 1 |
PluginBase:: |
protected | property | The plugin implementation definition. | 1 |
PluginBase:: |
protected | property | The plugin_id. | |
PluginBase:: |
constant | A string which is used to separate base plugin IDs from the derivative ID. | ||
PluginBase:: |
public | function |
Gets the base_plugin_id of the plugin instance. Overrides DerivativeInspectionInterface:: |
|
PluginBase:: |
public | function |
Gets the derivative_id of the plugin instance. Overrides DerivativeInspectionInterface:: |
|
PluginBase:: |
public | function |
Gets the definition of the plugin implementation. Overrides PluginInspectionInterface:: |
3 |
PluginBase:: |
public | function |
Gets the plugin_id of the plugin instance. Overrides PluginInspectionInterface:: |
|
PluginBase:: |
public | function | Determines if the plugin is configurable. | |
StringTranslationTrait:: |
protected | property | The string translation service. | 1 |
StringTranslationTrait:: |
protected | function | Formats a string containing a count of items. | |
StringTranslationTrait:: |
protected | function | Returns the number of plurals supported by a given language. | |
StringTranslationTrait:: |
protected | function | Gets the string translation service. | |
StringTranslationTrait:: |
public | function | Sets the string translation service to use. | 2 |
StringTranslationTrait:: |
protected | function | Translates a string to the current language or to a given language. |