You are here

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