You are here

function fancybox_field_formatter_view in fancyBox 7

Same name and namespace in other branches
  1. 7.2 fancybox.module \fancybox_field_formatter_view()

Implements hook_field_formatter_view().

File

./fancybox.module, line 543
Provides the Fancybox jQuery plugin for displaying images, HTML content and multimedia in an elegant box.

Code

function fancybox_field_formatter_view($entity_type, $entity, $field, $instance, $langcode, $items, $display) {
  $element = array();
  $settings = variable_get('fancybox_settings', array());
  fancybox_activate($settings);

  // Get grouping settings
  $rel = '';
  if (!empty($settings['imagefield']['grouping'])) {
    switch ($settings['imagefield']['grouping']) {
      case 1:
        $rel = $field['field_name'];
        break;
      case 2:
        $rel = 'all-images';
        break;
      default:
        $rel = '';
    }
  }
  foreach ($items as $delta => $item) {
    $style_name = isset($display['settings']['image_link_style']) ? $display['settings']['image_link_style'] : 0;
    if ($style_name) {
      $style_path = image_style_path($style_name, $item['uri']);
      if (!file_exists($style_path)) {
        $style_path = image_style_url($style_name, $item['uri']);
      }
    }
    else {
      $style_path = file_create_url($item['uri']);
    }
    $href = file_create_url($style_path);

    // Image caption.
    if (!empty($settings['imagefield']['use_node_title'])) {
      $image_title = $entity->title;
    }
    else {
      $image_title = !empty($item['title']) ? $item['title'] : '';
      $image_title = !empty($image_title) ? $image_title : $item['alt'];
    }
    $element[$delta] = array(
      '#theme' => 'image_formatter',
      '#item' => $item,
      '#image_style' => $display['settings']['image_style'],
      '#path' => array(
        'path' => $href,
        'options' => array(
          'attributes' => array(
            'class' => array(
              'imagefield-fancybox',
            ),
            'rel' => $rel,
            'title' => $image_title,
          ),
        ),
      ),
    );
  }
  return $element;
}