You are here

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;
}