function image_hover_effects_field_attach_view_alter in Image Hover Effects 7
Implements hook_field_attach_view_alter().
File
- ./
image_hover_effects.module, line 74 - Main file of Image Class module.
Code
function image_hover_effects_field_attach_view_alter(&$output, $context) {
foreach (element_children($output) as $field_name) {
$element =& $output[$field_name];
$view_modes = field_view_mode_settings($element['#entity_type'], $element['#bundle']);
// Check whether set view mode has custom settings.
if (isset($view_modes[$context['view_mode']]) && !$view_modes[$context['view_mode']]['custom_settings']) {
$context['view_mode'] = 'default';
}
$instance = field_info_instance($element['#entity_type'], $field_name, $element['#bundle']);
// Check whether view mode exists in the field instance.
if (isset($instance['display'][$context['view_mode']])) {
$display = $instance['display'][$context['view_mode']];
}
elseif ($context['view_mode'] == '_custom' && is_array($context['display'])) {
$display = $context['display'];
}
else {
$display = $instance['display']['default'];
}
$settings = $display['settings'];
$effect = isset($settings['image_hover_effects']) ? 'ihe-overlay--' . $settings['image_hover_effects'] : FALSE;
$entity_info = entity_get_info($context['entity_type']);
$token_type = isset($entity_info['token type']) ? $entity_info['token type'] : $context['entity_type'];
if (isset($settings['image_hover_effects']) && $settings['image_hover_effects']) {
$hover_content = token_replace($settings['image_hover_effects_data'], array(
$token_type => $context['entity'],
), array(
'sanitize' => FALSE,
));
$effect_class = drupal_html_class('ihe-overlay--' . $settings['image_hover_effects']);
$classes = array(
'ihe-overlay',
$effect_class,
);
drupal_add_css(drupal_get_path('module', 'image_hover_effects') . '/css/image-hover-effects.css', array(
'group' => CSS_DEFAULT,
'every_page' => FALSE,
));
}
else {
// Move on to the next child if 'class' setting is not available.
continue;
}
// Add 'class' setting to the attributes of all children elements.
foreach (element_children($element) as $delta) {
// Can only add classes to wrapping link not to image because image does
// not support the :after pseudo selector we use for overlays
$element[$delta]['#path']['options']['attributes'] = array(
'class' => $classes,
'data-hover' => $hover_content,
);
}
}
}