image_shadowbox.module in Shadowbox 7.4
Image Shadowbox, a JavaScript media viewer application for displaying content in a modal dialogue for image field.
File
image_shadowbox/image_shadowbox.moduleView source
<?php
/**
* @file
* Image Shadowbox, a JavaScript media viewer application for displaying content in a
* modal dialogue for image field.
*/
/**
* Implements hook_field_formatter_info().
*/
function image_shadowbox_field_formatter_info() {
$formatters = array(
'image_shadowbox' => array(
'label' => t('Shadowbox'),
'field types' => array(
'image',
),
'settings' => array(
'image_style' => '',
'image_link' => '',
'gallery' => '',
'compact' => '',
'title' => '',
),
),
);
return $formatters;
}
/**
* Implements hook_field_formatter_settings_form().
*/
function image_shadowbox_field_formatter_settings_form($field, $instance, $view_mode, $form, &$form_state) {
$display = $instance['display'][$view_mode];
$settings = $display['settings'];
$image_styles = image_style_options(FALSE);
$element['image_style'] = array(
'#title' => t('Image style'),
'#type' => 'select',
'#default_value' => $settings['image_style'],
'#empty_option' => t('None (original image)'),
'#options' => $image_styles,
);
$element['image_link'] = array(
'#title' => t('Link image to'),
'#type' => 'select',
'#default_value' => $settings['image_link'],
'#empty_option' => t('None (original image)'),
'#options' => $image_styles,
);
$gallery_options = array(
'page' => 'gallery page',
'field' => 'gallery field page',
'nid' => 'gallery entity',
'field_nid' => 'gallery field entity',
);
$element['gallery'] = array(
'#title' => t('gallery'),
'#type' => 'select',
'#default_value' => $settings['gallery'],
'#empty_option' => t('None (individual)'),
'#options' => $gallery_options,
);
$element['compact'] = array(
'#title' => t('compact'),
'#type' => 'checkbox',
'#default_value' => $settings['compact'],
);
$title_options = array(
'title' => 'image title',
'alt' => 'image alt',
'node' => 'node title',
);
$element['title'] = array(
'#title' => t('caption'),
'#type' => 'select',
'#default_value' => $settings['title'],
'#empty_option' => t('None'),
'#options' => $title_options,
);
return $element;
}
/**
* Implements hook_field_formatter_settings_summary().
*/
function image_shadowbox_field_formatter_settings_summary($field, $instance, $view_mode) {
$display = $instance['display'][$view_mode];
$settings = $display['settings'];
$summary = array();
$image_styles = image_style_options(FALSE);
// Unset possible 'No defined styles' option.
unset($image_styles['']);
// Styles could be lost because of enabled/disabled modules that defines
// their styles in code.
if (isset($image_styles[$settings['image_style']])) {
$summary[] = t('Image style: @style', array(
'@style' => $image_styles[$settings['image_style']],
));
}
else {
$summary[] = t('Original image');
}
if (isset($image_styles[$settings['image_link']])) {
$summary[] = t('Linked to: @style', array(
'@style' => $image_styles[$settings['image_link']],
));
}
else {
$summary[] = t('Linked to: Original image');
}
$gallery_options = array(
'page' => 'gallery page',
'field' => 'gallery field page',
'nid' => 'gallery entity',
'field_nid' => 'gallery field entity',
);
if (isset($gallery_options[$settings['gallery']])) {
$summary[] = t('as @gallery', array(
'@gallery' => (isset($settings['compact']) && $settings['compact'] ? 'compact ' : '') . $gallery_options[$settings['gallery']],
));
}
$title_options = array(
'title' => 'image title',
'alt' => 'image alt',
'node' => 'node title',
);
if (isset($title_options[$settings['title']])) {
$summary[] = t('with @title as caption', array(
'@title' => $title_options[$settings['title']],
));
}
return implode('<br />', $summary);
}
/**
* Implements hook_field_formatter_view().
*/
function image_shadowbox_field_formatter_view($entity_type, $entity, $field, $instance, $langcode, $items, $display) {
$element = array();
$shadowbox_enabled_path = _shadowbox_activation() && variable_get('shadowbox_enabled', TRUE);
switch ($display['settings']['gallery']) {
case 'page':
$gallery_id = 'gallery';
break;
case 'field':
$gallery_id = $field['field_name'];
break;
case 'nid':
$info = entity_get_info($entity_type);
$id = $info['entity keys']['id'];
$gallery_id = "{$entity_type}-{$entity->{$id}}";
break;
case 'field_nid':
$info = entity_get_info($entity_type);
$id = $info['entity keys']['id'];
$gallery_id = "{$entity_type}-{$entity->{$id}}-{$field['field_name']}";
break;
default:
$gallery_id = "";
break;
}
$rel = $gallery_id != '' ? "shadowbox[{$gallery_id}]" : 'shadowbox';
$class = $gallery_id != '' ? "sb-image sb-gallery sb-gallery-{$gallery_id}" : 'sb-image sb-individual';
$compact = isset($display['settings']['compact']) && $display['settings']['compact'];
foreach ($items as $delta => $item) {
switch ($display['settings']['title']) {
case 'alt':
$title = $item['alt'];
break;
case 'title':
$title = $item['title'];
break;
case 'node':
$title = $entity->title;
break;
default:
$title = '';
break;
}
$linked_style = $display['settings']['image_link'];
if ($linked_style) {
$uri = image_style_url($linked_style, $item['uri']);
}
else {
$uri = $item['uri'];
}
$image = array(
'path' => $item['uri'],
'alt' => $item['alt'],
'title' => $title,
'image_style' => $display['settings']['image_style'],
);
$element[$delta] = array(
'#theme' => 'shadowbox_formatter',
'#innerHTML' => $delta == 0 || !$compact ? theme('shadowbox_thumbnail', $image) : '',
'#title' => $title,
'#url' => file_create_url($uri),
'#rel' => $rel,
'#class' => $class,
);
if ($shadowbox_enabled_path) {
$element[$delta]['#attached']['library'][] = array(
'shadowbox',
'shadowbox',
);
}
}
return $element;
}
Functions
Name![]() |
Description |
---|---|
image_shadowbox_field_formatter_info | Implements hook_field_formatter_info(). |
image_shadowbox_field_formatter_settings_form | Implements hook_field_formatter_settings_form(). |
image_shadowbox_field_formatter_settings_summary | Implements hook_field_formatter_settings_summary(). |
image_shadowbox_field_formatter_view | Implements hook_field_formatter_view(). |