function theme_media_gallery_media_item_detail in Media Gallery 7
Same name and namespace in other branches
- 7.2 media_gallery.theme.inc \theme_media_gallery_media_item_detail()
Displays a media item (entity) as its own page, within gallery context.
See also
theme_media_gallery_media_item_lightbox()
File
- ./
media_gallery.theme.inc, line 258 - Media Gallery Theming
Code
function theme_media_gallery_media_item_detail($variables) {
$element = $variables['element'];
$gallery_node = new FieldsRSIPreventor($element['#media_gallery_entity']);
$file = $element['#file'];
// Page number for next and previous pages and current page.
$i_next = NULL;
$i_previous = NULL;
$i_current = NULL;
// Not considering the possibility of this field being translatable, at the
// moment. Is there a use-case for a media field (which is just a reference to
// a media entity) to be translatable?
$media_ids = array();
foreach ($gallery_node->media_gallery_media[LANGUAGE_NONE] as $delta => $item) {
$media_ids[] = _media_gallery_get_media_fid($item);
}
$media_ids = array_values(array_unique($media_ids));
// Get the variables needed for previous and next buttons and "Image X of Y"
// text.
$num_items = count($media_ids);
foreach ($media_ids as $i => $id) {
if ($id == $file->fid) {
$i_current = $i;
break;
}
}
$i_previous = $i_current - 1;
$i_next = $i_current + 1;
if ($i_previous < 0) {
$i_previous = NULL;
}
$i_next = $i_current + 1;
if ($i_next > $num_items - 1) {
$i_next = NULL;
}
if ($gallery_node
->getValue('media_gallery_allow_download') == TRUE) {
$download_link = $element['#bundle'] == 'image' ? theme('media_gallery_download_link', array(
'file' => $file,
)) : ' ';
}
else {
// Very ugly fix: This prevents the license info from being either hidden
// or causing scrollbars (depending on the browser) in cases where a
// download link is not being shown. There may be a CSS-only fix for this,
// but we haven't found one yet.
$download_link = ' ';
}
$previous_link = !is_null($i_previous) ? l(t('« Previous'), "media-gallery/detail/{$gallery_node->nid}/{$media_ids[$i_previous]}", array(
'html' => TRUE,
'attributes' => array(
'class' => array(
'prev',
),
),
)) : '';
$next_link = !is_null($i_next) ? l(t('Next »'), "media-gallery/detail/{$gallery_node->nid}/{$media_ids[$i_next]}", array(
'html' => TRUE,
'attributes' => array(
'class' => array(
'next',
),
),
)) : '';
// Render the file out in a wrapper
$output = '<div class="media-gallery-detail-wrapper">' . '<div class="media-gallery-detail">' . drupal_render($element['file']) . '<div class="media-gallery-detail-info">' . $download_link . theme('media_gallery_license', array(
'element' => isset($element['field_license']) ? $element['field_license'] : array(
'#view_mode' => 'media_gallery_detail',
),
'color' => 'dark',
'file' => $file,
)) . '</div>' . '<div class="media-gallery-detail-info">' . '<span class="media-gallery-back-link">' . l(t('« Back to gallery'), 'node/' . $gallery_node->nid) . '</span>' . '<span class="media-gallery-detail-image-info-wrapper">' . '<span class="media-gallery-image-count">' . t("Item @current of @total", array(
'@current' => $i_current + 1,
'@total' => $num_items,
)) . '</span>' . '<span class="media-gallery-controls">' . $previous_link . (!empty($previous_link) && !empty($next_link) ? ' | ' : '') . $next_link . '</span>' . '</span>' . '</div>' . '</div>';
// The license was already output above via a direct theme() call rather
// than drupal_render().
$element['field_license']['#printed'] = TRUE;
// The file was rendered above, but due to a drupal_render() bug, might not be
// marked as printed.
// @todo Remove when http://drupal.org/node/1305220 is fixed.
$element['file']['#printed'] = TRUE;
// Render the remaining fields, but not the title, since that's output as
// part of the page title.
$element['media_title']['#access'] = FALSE;
$output .= '<div class="no-overflow">' . drupal_render_children($element) . '</div></div>';
return $output;
}