You are here

prettyphoto_formatters_link.module in prettyPhoto Formatters 7

prettyPhoto Link formatter hooks and callbacks.

File

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

/**
 * @file
 * prettyPhoto Link formatter hooks and callbacks.
 */

/**
 * Implements hook_field_formatter_info().
 */
function prettyphoto_formatters_link_field_formatter_info() {
  $formatters = array();
  $formatters['prettyphoto_link_default'] = array(
    'label' => t('prettyPhoto: Modal with iFrame'),
    'field types' => array(
      'link_field',
    ),
    'settings' => array(
      'iframe_width' => '100%',
      'iframe_height' => '100%',
    ),
  );
  return $formatters;
}

/**
 * Implements hook_field_formatter_settings_form().
 */
function prettyphoto_formatters_link_field_formatter_settings_form($field, $instance, $view_mode, $form, &$form_state) {
  $display = $instance['display'][$view_mode];
  $settings = $display['settings'];
  if ($display['type'] == 'prettyphoto_link_default') {
    $element['iframe_width'] = array(
      '#type' => 'textfield',
      '#title' => t('iFrame width'),
      '#size' => 10,
      '#default_value' => $settings['iframe_width'],
    );
    $element['iframe_height'] = array(
      '#type' => 'textfield',
      '#title' => t('iFrame height'),
      '#size' => 10,
      '#default_value' => $settings['iframe_height'],
    );
  }
  return $element;
}

/**
 * Implements hook_field_formatter_settings_summary().
 */
function prettyphoto_formatters_link_field_formatter_settings_summary($field, $instance, $view_mode) {
  $display = $instance['display'][$view_mode];
  $settings = $display['settings'];
  if ($display['type'] == 'prettyphoto_link_default') {
    $summary = t('iFrame width: @width, iFrame height: @height', array(
      '@width' => $settings['iframe_width'],
      '@height' => $settings['iframe_height'],
    ));
    return $summary;
  }
}

/**
 * Implements hook_field_formatter_view().
 */
function prettyphoto_formatters_link_field_formatter_view($entity_type, $entity, $field, $instance, $langcode, $items, $display) {
  $elements = array();
  foreach ($items as $delta => $item) {
    $iframe_width = array_key_exists('iframe_width', $display['settings']) ? $display['settings']['iframe_width'] : '100%';
    $iframe_height = array_key_exists('iframe_height', $display['settings']) ? $display['settings']['iframe_height'] : '100%';
    $elements[$delta] = array(
      '#theme' => 'prettyphoto_formatters_link',
      '#element' => $item,
      '#field' => $instance,
      '#display' => $display,
      '#iframe_width' => check_plain($iframe_width),
      '#iframe_height' => check_plain($iframe_height),
    );
    $title = $elements[$delta]['#element']['title'];
    $url = $elements[$delta]['#element']['url'];
    $elements[$delta]['#element']['title'] = check_plain($title);
    $elements[$delta]['#element']['url'] = check_url($url);
  }
  return $elements;
}

/**
 * Implements hook_theme().
 */
function prettyphoto_formatters_link_theme($existing, $type, $theme, $path) {
  $theme = array();
  $theme['prettyphoto_formatters_link'] = array(
    'variables' => array(
      'element' => NULL,
      'field' => NULL,
      'display' => NULL,
      'iframe_width' => NULL,
      'iframe_height' => NULL,
    ),
  );
  foreach ($theme as &$array) {
    $array['file'] = 'prettyphoto_formatters_link.formatter.inc';
  }
  return $theme;
}