You are here

function image_hotspots_process_form_element in Image Hotspots 7.2

After build function to process the hotspot widget on forms.

1 string reference to 'image_hotspots_process_form_element'
image_hotspots_element_info_alter in ./image_hotspots.module
Implements hook_element_info_alter().

File

./image_hotspots.module, line 177
Main function of module.

Code

function image_hotspots_process_form_element($element, &$form_state) {
  if (!isset($element['#field_name'])) {
    return $element;
  }
  $hotspot_fields = variable_get('image_hotspot_fields', array());
  if (!isset($hotspot_fields[$element['#bundle']][$element['#field_name']]) || !$element['fid']['#value']) {
    return $element;
  }
  $hotspot_settings = array();
  if (isset($hotspot_fields[$element['#bundle']][$element['#field_name']]['settings'])) {
    $hotspot_settings = $hotspot_fields[$element['#bundle']][$element['#field_name']]['settings'];
  }
  $hotspot_data = '';
  $exist_value = '';
  $id = explode('-', $element['#id']);
  $delta = array_pop($id);
  $flag_value = isset($form_state['values'][$element['#field_name']][$element['#language']][$delta]['image_hotspot_flag']) ? $form_state['values'][$element['#field_name']][$element['#language']][$delta]['image_hotspot_flag'] : 'create';
  if (isset($form_state['values'][$element['#field_name']][$element['#language']][$delta]['image_hotspot'])) {
    $exist_hotspots = $form_state['values'][$element['#field_name']][$element['#language']][$delta]['image_hotspot'];
  }
  else {
    $language = entity_language($element['#entity_type'], $element['#entity']);
    $exist_hotspots = image_hotspots_db_get_coordinates(array(
      $element['fid']['#value'],
    ), $language);
  }
  if (!empty($exist_hotspots)) {
    if (is_array($exist_hotspots)) {
      $exist_value = $exist_hotspots[0]->coordinates;
      $flag_value = 'update';
    }
    else {
      $exist_value = $exist_hotspots;
    }
    $exist_hotspots = drupal_json_decode($exist_value);
    $dimensions = array(
      'width' => $element['width']['#value'],
      'height' => $element['height']['#value'],
    );
    image_style_transform_dimensions(IMAGE_HOTSPOTS_STYLE, $dimensions);
    foreach ($exist_hotspots as $hotspot) {
      $hotspot['x1'] = $hotspot['x1'] ? $dimensions['width'] / (100 / $hotspot['x1']) : 0;
      $hotspot['y1'] = $hotspot['y1'] ? $dimensions['height'] / (100 / $hotspot['y1']) : 0;
      $hotspot['x2'] = $dimensions['width'] / (100 / $hotspot['x2']);
      $hotspot['y2'] = $dimensions['height'] / (100 / $hotspot['y2']);
      $hotspot['linkable'] = isset($hotspot_settings['linkable']) ? $hotspot_settings['linkable'] : FALSE;
      $hotspot_data .= theme('image_hotspots_data', $hotspot);
    }
  }
  $element['image_hotspot_flag'] = array(
    '#type' => 'hidden',
    '#value' => $flag_value,
    '#id' => $element['#id'] . '-image_hotspot_flag',
    '#name' => $element['#name'] . '[image_hotspot_flag]',
    '#weight' => 10,
  );
  $element_data = array(
    'id' => $element['#id'] . '-image_hotspot',
    'name' => $element['#name'] . '[image_hotspot]',
    'value' => $exist_value,
    'image' => image_hotspots_widget($element, $hotspot_settings),
    'hotspot_data' => $hotspot_data,
    'linkable' => $hotspot_settings['linkable'] ? $hotspot_settings['linkable'] : FALSE,
  );
  $image_hotspot = theme('image_hotspot_element', $element_data);
  $element['image_hotspot'] = array(
    '#type' => 'markup',
    '#markup' => $image_hotspot,
    '#weight' => 10,
  );
  $form_state['image_hotspot_fields'][$element['#field_name']] = $element['#field_name'];
  return $element;
}