You are here

function _field_orbit_format_image in ZURB Orbit 7.2

Formats Images for Orbit.

Parameters

$num:

$field_orbit_zebra:

$item:

$variables:

1 call to _field_orbit_format_image()
template_preprocess_field_orbit in ./field_orbit.module
Implements template_preprocess().

File

./field_orbit.module, line 647
Implement a orbit formatter for fields.

Code

function _field_orbit_format_image($num, $field_orbit_zebra, $item, &$variables) {

  // Generate classes
  $classes = array(
    'field-orbit-slide',
    'field-orbit-slide-' . $num,
  );
  $field_orbit_zebra = $field_orbit_zebra == 'odd' ? 'even' : 'odd';
  $classes[] = $field_orbit_zebra;
  if ($num == 0) {
    $classes[] = 'first';
  }
  elseif ($num == count($variables['items']) - 1) {
    $classes[] = 'last';
  }
  $variables['items'][$num]['classes'] = implode(' ', $classes);
  $wrapper = entity_metadata_wrapper('file', $item['fid']);

  // Generate the image html
  $image = array();
  $image['path'] = $item['uri'];
  $image['attributes']['class'] = array(
    'field-orbit-image',
    'field-orbit-image-' . $num,
  );
  if (!empty($item['caption'])) {
    $image['attributes']['data-caption'] = '#field-orbit-image-' . $num . '-caption';
    $variables['items'][$num]['caption_id'] = 'field-orbit-image-' . $num . '-caption';
    $variables['items'][$num]['caption'] = $item['caption'];
  }
  if (!empty($item['alt'])) {
    $image['alt'] = $item['alt'];
  }
  if (!empty($item['title'])) {
    $image['title'] = $item['title'];
  }
  if (isset($variables['options']['orbit_image_style']) && $variables['options']['orbit_image_style'] != '') {
    $image['style_name'] = $variables['options']['orbit_image_style'];
    $variables['items'][$num]['media'] = theme('image_style', $image);
  }
  else {
    $variables['items'][$num]['media'] = theme('image', $image);
  }
  if ($variables['options']['bulletThumbs']) {
    $thumb = array();
    $thumb['path'] = $item['uri'];
    $thumb['style_name'] = $variables['options']['orbit_bullet_thumbs'];
    $thumb['attributes']['class'] = array(
      'field-orbit-thumb',
      'field-orbit-thumb-' . $num,
    );
    $variables['items'][$num]['thumb'] = theme('image_style', $thumb);
  }
  if (isset($variables['image_style']) && $variables['image_style'] != '') {
    if (function_exists('image_style_transform_dimensions')) {
      image_style_transform_dimensions($image['style_name'], $dimensions);
    }
  }

  // Add links if needed
  $links = array(
    'slide_link' => 'media',
  );
  if (isset($item['caption']) && $item['caption'] != '') {
    $links['caption_path'] = 'caption';
  }

  // Loop thru required links (because image and caption can have different links)
  foreach ($links as $link => $out) {
    if (!empty($item[$link])) {
      $path = $item[$link]['path'];
      $options = $item[$link]['options'];

      // When displaying an image inside a link, the html option must be TRUE.
      $options['html'] = TRUE;
      if (isset($variables['items'][$num]['caption_id'])) {
        $options['attributes']['data-caption'] = '#' . $variables['items'][$num]['caption_id'];
      }

      // Generate different rel attribute for image and caption, so colorbox doesn't double the image list
      if (isset($options['attributes']['rel'])) {
        $options['attributes']['rel'] .= $out;
      }
      $options = array_merge($options, drupal_parse_url($path));
      $variables['items'][$num][$out] = l($variables['items'][$num][$out], $options['path'], $options);
    }
  }
}