You are here

function flexslider_fields_field_formatter_view in Flex Slider 7.2

Same name and namespace in other branches
  1. 7 flexslider_fields/flexslider_fields.module \flexslider_fields_field_formatter_view()

Implements hook_field_formatter_view().

Prepares a renderable array of images and adds the necessary JS and CSS.

File

flexslider_fields/flexslider_fields.module, line 175
Adds fields integration with FlexSlider

Code

function flexslider_fields_field_formatter_view($entity_type, $entity, $field, $instance, $langcode, $items, $display) {

  // If file entity formatter is selected render all files initially.
  if ($display['type'] == 'flexslider_file_entity') {
    $file_display = $display;
    $file_display['type'] = 'file_rendered';
    $file_items = module_invoke('file_entity', 'field_formatter_view', $entity_type, $entity, $field, $instance, $langcode, $items, $file_display);
  }
  $element = array();
  if (count($items) > 0) {
    foreach ($items as $key => $item) {
      if (isset($item['item'])) {
        continue;
      }
      $tmp = $item;
      $item = array();
      $item['item'] = $tmp;

      // Setup the variables for calling theme_image_style
      if (isset($item['item']['uri'])) {
        $item['slide']['path'] = $item['item']['uri'];
      }
      if (isset($display['settings']['image_style'])) {
        $item['slide']['style_name'] = $display['settings']['image_style'];
      }
      if (isset($item['item']['width'])) {
        $item['slide']['width'] = $item['item']['width'];
      }
      if (isset($item['item']['height'])) {
        $item['slide']['height'] = $item['item']['height'];
      }
      if (isset($item['item']['alt'])) {
        $item['slide']['alt'] = $item['item']['alt'];
      }
      if (isset($item['item']['title'])) {
        $item['slide']['title'] = $item['item']['title'];
      }

      // Render the slide item.
      if ($display['type'] == 'flexslider') {

        // If no style set, we have to call theme_image since theme_image_style
        // doesn't auto-fallback to full size image.
        if (!empty($item['slide']['style_name'])) {

          // Generate the HTML for the slide.
          $item['slide'] = theme('image_style', $item['slide']);
        }
        else {

          // Generate the HTML for the slide.
          $item['slide'] = theme('image', $item['slide']);
        }
      }
      elseif ($display['type'] == 'flexslider_file_entity') {
        $item['slide'] = render($file_items[$key]);
      }

      // Check caption settings.
      if ($display['settings']['caption'] === '1') {
        $item['caption'] = filter_xss($item['item']['title']);
      }
      elseif ($display['settings']['caption'] === 'alt') {
        $item['caption'] = filter_xss($item['item']['alt']);
      }
      $items[$key] = $item;
    }
    $element[0] = array(
      '#theme' => 'flexslider',
      '#items' => $items,
      '#settings' => $display['settings'],
    );
  }
  return $element;
}