You are here

function geofield_proximity_element_process in Geofield 7.2

Process function for the proximity form element

1 string reference to 'geofield_proximity_element_process'
geofield_element_info in ./geofield.elements.inc
Implements hook_element_info().

File

./geofield.elements.inc, line 261
Provides FormAPI element callbacks for geofield_latlon and geofield_proximity.

Code

function geofield_proximity_element_process($element, &$form_state, $form) {
  $element['#attributes'] = array(
    'class' => array(
      'clearfix',
    ),
  );
  $element['#tree'] = TRUE;
  $element['#attached']['css'] = array(
    drupal_get_path('module', 'geofield') . '/css/proximity-element.css',
  );

  //Create the textfield for distance
  $element['distance'] = array(
    '#type' => 'textfield',
    '#title' => t('Distance'),
    '#default_value' => !empty($element['#default_value']['distance']) ? $element['#default_value']['distance'] : '',
    '#title_display' => 'invisible',
    // Allow decimal numbers as distances
    '#element_validate' => array(
      'element_validate_number',
    ),
  );

  // If #geofield_range is TRUE, create second option for range.
  if (!empty($element['#geofield_range']) && $element['#geofield_range'] == TRUE) {
    $element['distance2'] = array(
      '#type' => 'textfield',
      '#title' => t('Distance End'),
      '#default_value' => !empty($element['#default_value']['distance2']) ? $element['#default_value']['distance2'] : '',
      '#title_display' => 'invisible',
      '#element_validate' => array(
        'element_validate_number',
      ),
    );
  }

  //Create dropdown for units
  $element['unit'] = array(
    '#type' => 'select',
    '#options' => geofield_radius_options(),
    '#title' => t('Unit'),
    '#default_value' => !empty($element['#default_value']['unit']) ? $element['#default_value']['unit'] : GEOFIELD_KILOMETERS,
    '#title_display' => 'invisible',
  );

  //Create textfield for geocoded input
  $element['origin'] = array(
    '#type' => !empty($element['#origin_element']) ? $element['#origin_element'] : 'textfield',
    '#title' => t('Origin'),
    '#prefix' => '<span class="geofield-proximity-origin-from">' . t('from') . '</span>',
    '#title_display' => 'invisible',
    '#required' => !empty($element['#required']) ? $element['#required'] : FALSE,
    '#default_value' => !empty($element['#default_value']['origin']) ? $element['#default_value']['origin'] : FALSE,
  );
  if (!empty($element['#origin_options'])) {
    $element['origin'] = array_merge($element['origin'], $element['#origin_options']);
  }
  if (isset($element['#element_validate'])) {
    array_push($element['#element_validate'], 'geofield_proximity_search_validate');
  }
  else {
    $element['#element_validate'] = array(
      'geofield_proximity_search_validate',
    );
  }
  return $element;
}