public function GeolocationStyleBase::buildOptionsForm in Geolocation Field 8.3
Provide a form to edit options for this plugin.
Overrides StylePluginBase::buildOptionsForm
1 call to GeolocationStyleBase::buildOptionsForm()
- CommonMap::buildOptionsForm in src/
Plugin/ views/ style/ CommonMap.php - Provide a form to edit options for this plugin.
1 method overrides GeolocationStyleBase::buildOptionsForm()
- CommonMap::buildOptionsForm in src/
Plugin/ views/ style/ CommonMap.php - Provide a form to edit options for this plugin.
File
- src/
Plugin/ views/ style/ GeolocationStyleBase.php, line 200
Class
- GeolocationStyleBase
- Geolocation Style Base.
Namespace
Drupal\geolocation\Plugin\views\styleCode
public function buildOptionsForm(&$form, FormStateInterface $form_state) {
parent::buildOptionsForm($form, $form_state);
$labels = $this->displayHandler
->getFieldLabels();
$geo_options = [];
/** @var \Drupal\geolocation\DataProviderInterface[] $data_providers */
$data_providers = [];
$title_options = [];
$label_options = [];
$icon_options = [];
$fields = $this->displayHandler
->getHandlers('field');
/** @var \Drupal\views\Plugin\views\field\FieldPluginBase[] $fields */
foreach ($fields as $field_name => $field) {
$data_provider_settings = [];
if ($this->options['geolocation_field'] == $field_name && !empty($this->options['data_provider_settings'])) {
$data_provider_settings = $this->options['data_provider_settings'];
}
if ($data_provider = $this->dataProviderManager
->getDataProviderByViewsField($field, $data_provider_settings)) {
$geo_options[$field_name] = $field
->adminLabel() . ' (' . $data_provider
->getPluginDefinition()['name'] . ')';
$data_providers[$field_name] = $data_provider;
}
if (!empty($field->options['type']) && $field->options['type'] == 'image') {
$icon_options[$field_name] = $labels[$field_name];
}
if (!empty($field->options['type']) && $field->options['type'] == 'string') {
$title_options[$field_name] = $labels[$field_name];
$label_options[$field_name] = $labels[$field_name];
}
}
$form['geolocation_field'] = [
'#title' => $this
->t('Geolocation source field'),
'#type' => 'select',
'#default_value' => $this->options['geolocation_field'],
'#description' => $this
->t("The source of geodata for each entity."),
'#options' => $geo_options,
'#required' => TRUE,
'#ajax' => [
'callback' => [
get_class($this->dataProviderManager),
'addDataProviderSettingsFormAjax',
],
'wrapper' => 'data-provider-settings',
'effect' => 'fade',
],
];
$data_provider = NULL;
$form_state_data_provider_id = NestedArray::getValue($form_state
->getUserInput(), [
'style_options',
'geolocation_field',
]);
if (!empty($form_state_data_provider_id) && !empty($data_providers[$form_state_data_provider_id])) {
$data_provider = $data_providers[$form_state_data_provider_id];
}
elseif (!empty($data_providers[$this->options['geolocation_field']])) {
$data_provider = $data_providers[$this->options['geolocation_field']];
}
elseif (!empty($data_providers[reset($geo_options)])) {
$data_provider = $data_providers[reset($geo_options)];
}
else {
return;
}
$form['data_provider_id'] = [
'#type' => 'value',
'#value' => $data_provider
->getPluginId(),
];
$form['data_provider_settings'] = $data_provider
->getSettingsForm($this->options['data_provider_settings'], [
'style_options',
'map_provider_settings',
]);
$form['data_provider_settings'] = array_replace($form['data_provider_settings'], [
'#prefix' => '<div id="data-provider-settings">',
'#suffix' => '</div>',
]);
$form['title_field'] = [
'#title' => $this
->t('Title source field'),
'#type' => 'select',
'#default_value' => $this->options['title_field'],
'#description' => $this
->t("The source of the title for each entity. Field type must be 'string'."),
'#options' => $title_options,
'#empty_value' => 'none',
];
$form['label_field'] = [
'#title' => $this
->t('Label source field'),
'#type' => 'select',
'#default_value' => $this->options['label_field'],
'#description' => $this
->t("The source of the label for each entity. Field type must be 'string'."),
'#options' => $label_options,
'#empty_value' => 'none',
];
/*
* Advanced settings
*/
$form['advanced_settings'] = [
'#type' => 'fieldset',
'#title' => $this
->t('Advanced settings'),
];
if ($icon_options) {
$form['icon_field'] = [
'#group' => 'style_options][advanced_settings',
'#title' => $this
->t('Icon source field'),
'#type' => 'select',
'#default_value' => $this->options['icon_field'],
'#description' => $this
->t("Optional image (field) to use as icon."),
'#options' => $icon_options,
'#empty_value' => 'none',
'#process' => [
[
'\\Drupal\\Core\\Render\\Element\\RenderElement',
'processGroup',
],
[
'\\Drupal\\Core\\Render\\Element\\Select',
'processSelect',
],
],
'#pre_render' => [
[
'\\Drupal\\Core\\Render\\Element\\RenderElement',
'preRenderGroup',
],
],
];
}
$form['marker_icon_path'] = [
'#group' => 'style_options][advanced_settings',
'#type' => 'textfield',
'#title' => $this
->t('Marker icon path'),
'#description' => $this
->t('Set relative or absolute path to custom marker icon. Tokens & Views replacement patterns supported. Empty for default.'),
'#default_value' => $this->options['marker_icon_path'],
];
$form['marker_row_number'] = [
'#group' => 'style_options][advanced_settings',
'#title' => $this
->t('Show views result row number in marker'),
'#type' => 'checkbox',
'#default_value' => $this->options['marker_row_number'],
];
}