public function OLMap::optionsForm in Openlayers 7.3
@TODO What is this return? If it is the form, why is form by reference?
Overrides Base::optionsForm
File
- src/
Plugin/ Map/ OLMap/ OLMap.php, line 25 - Map: Map.
Class
- OLMap
- Class OLMap.
Namespace
Drupal\openlayers\Plugin\Map\OLMapCode
public function optionsForm(array &$form, array &$form_state) {
$form['options']['ui'] = array(
'#type' => 'fieldset',
'#title' => t('User interface'),
'width' => array(
'#type' => 'textfield',
'#title' => 'Width of the map',
'#default_value' => $this
->getOption('width', 'auto'),
'#parents' => array(
'options',
'width',
),
),
'height' => array(
'#type' => 'textfield',
'#title' => t('Height of the map'),
'#default_value' => $this
->getOption('height', '300px'),
'#parents' => array(
'options',
'height',
),
),
);
$form['options']['view'] = array(
'#type' => 'fieldset',
'#title' => t('Center and rotation'),
'#tree' => TRUE,
);
if ($this
->getMachineName() != Config::get('openlayers.edit_view_map')) {
if (($map = Openlayers::load('Map', Config::get('openlayers.edit_view_map'))) == TRUE) {
$map_configuration = $map
->getConfiguration();
if ($view = $this
->getOption('view')) {
// Don't apply min / max zoom settings to this map to avoid lock-in.
$view['minZoom'] = 0;
$view['maxZoom'] = 0;
$map
->setOption('view', $view);
}
$form['options']['view']['map'] = array(
'#type' => 'openlayers',
'#description' => $map
->getPluginDescription(),
'#map' => $map,
);
}
}
$form['options']['view']['center'] = array(
'#tree' => TRUE,
'lon' => array(
'#type' => 'textfield',
'#title' => t('Longitude (X axis)'),
'#default_value' => $this
->getOption(array(
'view',
'center',
'lon',
), 0),
),
'lat' => array(
'#type' => 'textfield',
'#title' => t('Latitude (Y axis)'),
'#default_value' => $this
->getOption(array(
'view',
'center',
'lat',
), 0),
),
);
$form['options']['view']['rotation'] = array(
'#type' => 'textfield',
'#title' => t('Rotation'),
'#default_value' => $this
->getOption(array(
'view',
'rotation',
), 0),
);
$form['options']['view']['zoom'] = array(
'#type' => 'textfield',
'#title' => t('Zoom'),
'#default_value' => $this
->getOption(array(
'view',
'zoom',
), 0),
);
$form['options']['view']['minZoom'] = array(
'#type' => 'textfield',
'#title' => t('Min zoom'),
'#default_value' => $this
->getOption(array(
'view',
'minZoom',
), 0),
);
$form['options']['view']['maxZoom'] = array(
'#type' => 'textfield',
'#title' => t('Max zoom'),
'#default_value' => $this
->getOption(array(
'view',
'maxZoom',
), 0),
);
$form['options']['view']['limit_extent'] = array(
'#type' => 'select',
'#title' => t('Limit to extent'),
'#empty_option' => t('Disabled'),
'#empty_value' => '',
'#options' => array(
'custom' => 'Custom extent',
'projection' => 'Map projection',
),
'#description' => t('If enabled navigation on the map is limited to the give extent.'),
'#default_value' => $this
->getOption(array(
'view',
'limit_extent',
), FALSE),
);
$form['options']['view']['extent'] = array(
'#type' => 'textfield',
'#title' => t('Extent [minx, miny, maxx, maxy]'),
'#default_value' => $this
->getOption(array(
'view',
'extent',
), ''),
'#states' => array(
'visible' => array(
':input[name="options[view][limit_extent]"]' => array(
'value' => 'custom',
),
),
),
);
$form['options']['misc'] = array(
'#type' => 'fieldset',
'#title' => t('Miscellaneous options'),
);
$form['options']['misc']['renderer'] = array(
'#type' => 'radios',
'#title' => t('Renderer'),
'#description' => t('Renderer by default. Canvas, DOM and WebGL renderers are tested for support in that order. Note that at present only the Canvas renderer support vector data.'),
'#options' => array(
'canvas' => t('Canvas'),
'dom' => t('DOM'),
'webgl' => t('WebGL'),
),
'#default_value' => $this
->getOption('renderer', 'canvas'),
'#parents' => array(
'options',
'renderer',
),
);
$i = 0;
$data = array();
$map_options = $this
->getOptions();
/** @var \Drupal\openlayers\Types\Base $object */
foreach ($this
->getCollection()
->getFlatList() as $object) {
$weight = 0;
if (isset($map_options['capabilities']['options']['table'][$object
->getMachineName()])) {
$weight = array_search($object
->getMachineName(), array_keys($map_options['capabilities']['options']['table']));
}
$data[$object
->getMachineName()] = array(
'name' => $object
->getName(),
'machine_name' => $object
->getMachineName(),
'text' => isset($map_options['capabilities']['options']['table'][$object
->getMachineName()]) ? $map_options['capabilities']['options']['table'][$object
->getMachineName()] : $object
->getPluginDescription(),
'weight' => $weight,
'enabled' => isset($map_options['capabilities']['options']['table'][$object
->getMachineName()]) ? TRUE : FALSE,
'default' => 1,
);
}
uasort($data, function ($a, $b) {
if ($a['enabled'] > $b['enabled']) {
return -1;
}
elseif ($a['enabled'] < $b['enabled']) {
return 1;
}
if ($a['weight'] < $b['weight']) {
return -1;
}
elseif ($a['weight'] > $b['weight']) {
return 1;
}
return 0;
});
$rows = array();
$row_elements = array();
foreach ($data as $id => $entry) {
$rows[$id] = array(
'data' => array(
array(
'class',
array(
'entry-cross',
),
),
array(
'data' => array(
'#type' => 'weight',
'#title' => t('Weight'),
'#title_display' => 'invisible',
'#default_value' => $entry['weight'],
'#attributes' => array(
'class' => array(
'entry-order-weight',
),
),
),
),
array(
'data' => array(
'#type' => 'hidden',
'#default_value' => $entry['machine_name'],
),
),
array(
'data' => array(
'#type' => 'checkbox',
'#title' => t('Enable'),
'#title_display' => 'invisible',
'#default_value' => $entry['enabled'],
),
),
array(
'data' => array(
'#type' => 'textfield',
'#title' => t('Text'),
'#title_display' => 'invisible',
'#default_value' => $entry['text'],
'#maxlength' => 256,
),
),
check_plain($entry['name']),
check_plain($entry['machine_name']),
),
'class' => array(
'draggable',
),
);
// Build rows of the form elements in the table.
$row_elements[$id] = array(
'weight' => &$rows[$id]['data'][1]['data'],
'machine_name' => &$rows[$id]['data'][2]['data'],
'enabled' => &$rows[$id]['data'][3]['data'],
'text' => &$rows[$id]['data'][4]['data'],
);
}
$form['options']['capabilities'] = array(
'#type' => 'fieldset',
'#title' => 'Map description and capabilities',
'#collapsible' => FALSE,
'#collapsed' => FALSE,
'enabled' => array(
'#type' => 'checkbox',
'#title' => t('Enable map capabilities ?'),
'#default_value' => (bool) $this
->getOption(array(
'capabilities',
), FALSE),
),
'options' => array(
'#type' => 'container',
'#states' => array(
'visible' => array(
':input[name="options[capabilities][enabled]"]' => array(
'checked' => TRUE,
),
),
),
'container_type' => array(
'#type' => 'select',
'#title' => t('Container type'),
'#options' => array(
'fieldset' => 'Fieldset',
'container' => 'Simple div',
),
'#default_value' => $this
->getOption(array(
'capabilities',
'options',
'container_type',
), 'fieldset'),
),
'title' => array(
'#type' => 'textfield',
'#title' => t('Title'),
'#description' => t('Show a title ? Empty to disable.'),
'#default_value' => $this
->getOption(array(
'capabilities',
'options',
'title',
), t('Map capabilities')),
'#states' => array(
'visible' => array(
':input[name="options[capabilities][options][container_type]"]' => array(
'value' => 'fieldset',
),
),
),
),
'description' => array(
'#type' => 'textfield',
'#title' => t('Description'),
'#description' => t('Show a description ? Empty to disable.'),
'#default_value' => $this
->getOption(array(
'capabilities',
'options',
'description',
), t('Description')),
'#states' => array(
'visible' => array(
':input[name="options[capabilities][options][container_type]"]' => array(
'value' => 'fieldset',
),
),
),
),
'collapsible' => array(
'#type' => 'checkbox',
'#title' => t('Collapsible'),
'#default_value' => (bool) $this
->getOption(array(
'capabilities',
'options',
'collapsible',
), TRUE),
'#states' => array(
'visible' => array(
':input[name="options[capabilities][options][container_type]"]' => array(
'value' => 'fieldset',
),
),
),
),
'collapsed' => array(
'#type' => 'checkbox',
'#title' => t('Collapsed'),
'#default_value' => (bool) $this
->getOption(array(
'capabilities',
'options',
'collapsed',
), TRUE),
'#states' => array(
'visible' => array(
':input[name="options[capabilities][options][container_type]"]' => array(
'value' => 'fieldset',
),
),
),
),
),
);
// Add the table to the form.
$form['options']['capabilities']['options']['table'] = array(
'#theme' => 'table',
// The row form elements need to be processed and build,
// therefore pass them as element children.
'elements' => $row_elements,
'#header' => array(
// We need two empty columns for the weigth field and the cross.
array(
'data' => NULL,
'colspan' => 2,
),
array(
'data' => t('Enabled'),
'colspan' => 2,
),
array(
'data' => t('Description'),
'colspan' => 1,
),
t('Name'),
t('Machine name'),
),
'#rows' => $rows,
'#empty' => t('There are no entries available.'),
'#attributes' => array(
'id' => 'entry-order-objects',
),
);
drupal_add_tabledrag('entry-order-objects', 'order', 'sibling', 'entry-order-weight');
}