You are here

imagezoom_gallery.module in Image Zoom 8.2

Same filename and directory in other branches
  1. 7.2 modules/imagezoom_gallery/imagezoom_gallery.module

Provides a gallery formatter for the Image Zoom module.

File

modules/imagezoom_gallery/imagezoom_gallery.module
View source
<?php

/**
 * @file
 * Provides a gallery formatter for the Image Zoom module.
 */
use Drupal\image\Entity\ImageStyle;

/**
 * Implements hook_theme().
 */
function imagezoom_gallery_theme($existing, $type, $theme, $path) {
  return [
    'imagezoom_gallery' => [
      'variables' => [
        'items' => NULL,
        'display_style' => NULL,
        'zoom_style' => NULL,
        'thumb_style' => NULL,
        'settings' => NULL,
        'image' => NULL,
        'thumbs' => NULL,
      ],
      'template' => 'imagezoom-gallery',
    ],
    'imagezoom_thumb' => [
      'variables' => [
        'item' => NULL,
        'display_style' => NULL,
        'zoom_style' => NULL,
        'thumb_style' => NULL,
        'settings' => NULL,
      ],
      'template' => 'imagezoom-thumb',
    ],
  ];
}

/**
 * Preprocess function for imagezoom_gallery.
 */
function template_preprocess_imagezoom_gallery(&$variables) {
  if ($items = $variables['items']) {
    $variables['image'] = [
      '#theme' => 'imagezoom_image',
      '#item' => $items[0],
      '#display_style' => $variables['display_style'],
      '#zoom_style' => $variables['zoom_style'],
      '#settings' => $variables['settings'],
    ];
    $variables['thumbs'] = [];
    foreach ($items as $item) {
      $variables['thumbs'][] = [
        '#theme' => 'imagezoom_thumb',
        '#item' => $item,
        '#display_style' => $variables['display_style'],
        '#thumb_style' => $variables['thumb_style'],
        '#zoom_style' => $variables['zoom_style'],
        '#settings' => $variables['settings'],
      ];
    }
  }
}

/**
 * Preprocess function for imagezoom_thumb.
 */
function template_preprocess_imagezoom_thumb(&$variables) {
  $item = $variables['item'];
  if ($variables['display_style']) {
    $image_style = ImageStyle::load($variables['display_style']);
    $variables['image'] = $image_style
      ->buildUrl($item->entity
      ->getFileUri());
  }
  else {
    $variables['image'] = file_create_url($item->entity
      ->getFileUri());
  }
  if ($variables['zoom_style']) {
    $image_style = ImageStyle::load($variables['zoom_style']);
    $variables['zoom'] = $image_style
      ->buildUrl($item->entity
      ->getFileUri());
  }
  else {
    $variables['zoom'] = file_create_url($item->entity
      ->getFileUri());
  }

  /** @var Drupal\Core\Image\Image $image */
  if ($variables['thumb_style']) {
    $image_style = ImageStyle::load($variables['thumb_style']);
    $variables['thumb'] = $image_style
      ->buildUrl($item->entity
      ->getFileUri());
    $image = \Drupal::service('image.factory')
      ->get($image_style
      ->buildUri($item->entity
      ->getFileUri()));
  }
  else {
    $variables['thumb'] = file_create_url($item->entity
      ->getFileUri());
    $image = \Drupal::service('image.factory')
      ->get($item->entity
      ->getFileUri());
  }
  $variables['width'] = $image
    ->getWidth();
  $variables['height'] = $image
    ->getHeight();
}

Functions

Namesort descending Description
imagezoom_gallery_theme Implements hook_theme().
template_preprocess_imagezoom_gallery Preprocess function for imagezoom_gallery.
template_preprocess_imagezoom_thumb Preprocess function for imagezoom_thumb.