function colorbox_field_formatter_field_formatter_view in Colorbox field formatter 7
Implements hook_field_formatter_view().
File
- ./
colorbox_field_formatter.module, line 221 - Implement a colorbox field formatter for proper links.
Code
function colorbox_field_formatter_field_formatter_view($entity_type, $entity, $field, $instance, $langcode, $items, $display) {
$settings = $display['settings'];
$element = array();
foreach ($items as $delta => $item) {
$uri = FALSE;
if ($field['type'] == 'image') {
$image = array(
'path' => $item['uri'],
'alt' => isset($item['alt']) ? $item['alt'] : '',
'title' => isset($item['title']) ? $item['title'] : '',
'style_name' => $settings['colorbox_field_formatter_image_style'],
);
if (empty($settings['colorbox_field_formatter_image_style'])) {
$output = theme('image', $image);
}
else {
$output = theme('image_style', $image);
}
}
else {
if (isset($item['safe_value'])) {
$output = $item['safe_value'];
}
else {
if (isset($item['value'])) {
$output = $item['value'];
}
else {
if (isset($item['target_id'])) {
$target = entity_load($field['settings']['target_type'], array(
$item['target_id'],
));
if (is_array($target)) {
$target = reset($target);
}
$output = entity_label($field['settings']['target_type'], $target);
$uri = entity_uri($field['settings']['target_type'], $target);
}
else {
$output = FALSE;
}
}
}
}
if (!empty($output)) {
if (!$uri) {
if ($settings['colorbox_field_formatter_link_type'] == 'content') {
$uri = entity_uri($entity_type, $entity);
}
else {
$link = module_exists('token') ? token_replace($settings['colorbox_field_formatter_link'], array(
$entity_type => $entity,
)) : $settings['colorbox_field_formatter_link'];
$uri = array(
'path' => $link,
);
}
}
$options = array(
'html' => TRUE,
'attributes' => array(
'class' => array(
$settings['colorbox_field_formatter_style'],
),
),
'query' => array(
'width' => $settings['colorbox_field_formatter_width'],
'height' => $settings['colorbox_field_formatter_height'],
),
);
if ($settings['colorbox_field_formatter_iframe']) {
$options['query']['iframe'] = 'true';
}
if (!empty($settings['colorbox_field_formatter_anchor'])) {
$options['fragment'] = $settings['colorbox_field_formatter_anchor'];
}
if ($settings['colorbox_field_formatter_style'] == 'colorbox-inline') {
$options['query']['inline'] = 'true';
}
if (!empty($settings['colorbox_field_formatter_class'])) {
$options['attributes']['class'] = array_merge($options['attributes']['class'], explode(' ', $settings['colorbox_field_formatter_class']));
}
if (!empty($settings['colorbox_field_formatter_rel'])) {
$options['attributes']['rel'] = $settings['colorbox_field_formatter_rel'];
}
$output = l($output, $uri['path'], $options);
$element[$delta] = array(
'#markup' => $output,
);
}
}
return $element;
}