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