function farm_map_geofield_field_widget_settings_form in farmOS 7
Implements hook_field_widget_settings_form().
File
- modules/
farm/ farm_map/ farm_map_geofield/ farm_map_geofield.module, line 91 - Farm Map Geofield integration.
Code
function farm_map_geofield_field_widget_settings_form($field, $instance) {
$widget = $instance['widget'];
$settings = $widget['settings'];
$form = array();
// Add Geocoder support.
$use_geocoder = isset($settings['use_geocoder']) ? $settings['use_geocoder'] : 0;
$geocoder_form = array(
'#type' => 'fieldset',
'#title' => t('Geocoder settings'),
);
$geocoder_form['use_geocoder'] = array(
'#type' => 'checkbox',
'#title' => t('Enable geocoding of location data'),
'#default_value' => $use_geocoder,
// Can't nest this in a fieldset element without affecting data storage so
// instead hardcode one.
'#prefix' => '<fieldset><legend><span="fieldset-legend">' . t('Geocoder settings') . '</span></legend><div class="fieldset-wrapper">',
);
// Load the Geocoder widget settings.
module_load_include('inc', 'geocoder', 'geocoder.widget');
$new = geocoder_field_widget_settings_form($field, $instance);
$new['geocoder_field']['#options'][$field['field_name']] = t('Add extra field');
// If there are no options available search by ourselves to ensure the text
// field type was taken in account.
if (empty($new['geocoder_handler']['#options'])) {
$supported_field_types = geocoder_supported_field_types();
if (isset($supported_field_types['text'])) {
$processors = geocoder_handler_info();
foreach ($supported_field_types['text'] as $handler) {
$new['geocoder_handler']['#options'][$handler] = $processors[$handler]['title'];
}
}
}
// Show the geocoder fields only if geocoder is selected.
farm_map_geofield_widget_add_states($new, ':input[name="instance[widget][settings][use_geocoder]"]');
// Close the fieldset we opened in the #prefix to use_geocoder.
$element_children = element_children($new);
$new[end($element_children)]['#suffix'] = '</div></fieldset>';
$geocoder_form += $new;
$form += $geocoder_form;
return $form;
}