diff options
Diffstat (limited to 'sites/all/modules/file_entity/file_entity.theme.inc')
-rw-r--r-- | sites/all/modules/file_entity/file_entity.theme.inc | 168 |
1 files changed, 168 insertions, 0 deletions
diff --git a/sites/all/modules/file_entity/file_entity.theme.inc b/sites/all/modules/file_entity/file_entity.theme.inc new file mode 100644 index 000000000..6801b2d84 --- /dev/null +++ b/sites/all/modules/file_entity/file_entity.theme.inc @@ -0,0 +1,168 @@ +<?php + +/** + * @file + * Theme callbacks for the file entity module. + */ + +/** + * Copy of theme_file_file_link() for linking to the view file page. + * + * @see theme_file_file_link() + */ +function theme_file_entity_file_link($variables) { + $file = $variables['file']; + $icon_directory = $variables['icon_directory']; + + $url = 'file/' . $file->fid; + $icon = theme('file_icon', array('file' => $file, 'icon_directory' => $icon_directory)); + + // Set options as per anchor format described at + // http://microformats.org/wiki/file-format-examples + $options = array( + 'attributes' => array( + 'type' => $file->filemime . '; length=' . $file->filesize, + ), + ); + + // Use the description as the link text if available. + if (empty($file->description)) { + $link_text = $file->filename; + } + else { + $link_text = $file->description; + $options['attributes']['title'] = check_plain($file->filename); + } + + return '<span class="file">' . $icon . ' ' . l($link_text, $url, $options) . '</span>'; +} + +/** + * Copy of theme_file_file_link() for linking to the file download URL. + * + * @see theme_file_file_link() + */ +function theme_file_entity_download_link($variables) { + $file = $variables['file']; + $icon_directory = $variables['icon_directory']; + + $uri = file_entity_download_uri($file); + $icon = theme('file_icon', array('file' => $file, 'icon_directory' => $icon_directory)); + + // Set options as per anchor format described at + // http://microformats.org/wiki/file-format-examples + $uri['options']['attributes']['type'] = $file->filemime . '; length=' . $file->filesize; + + // Provide the default link text. + if (!isset($variables['text'])) { + $variables['text'] = t('Download [file:name]'); + } + + // Perform unsanitized token replacement if $uri['options']['html'] is empty + // since then l() will escape the link text. + $variables['text'] = token_replace($variables['text'], array('file' => $file), array('clear' => TRUE, 'sanitize' => !empty($uri['options']['html']))); + + $output = '<span class="file">' . $icon . ' ' . l($variables['text'], $uri['path'], $uri['options']); + $output .= ' ' . '<span class="file-size">(' . format_size($file->filesize) . ')</span>'; + $output .= '</span>'; + + return $output; +} + +/** + * Returns HTML for displaying an HTML5 <audio> tag. + * + * @param array $variables + * An associative array containing: + * - file: Associative array of file data, which must include "uri". + * - controls: Boolean indicating whether or not controls should be displayed. + * - autoplay: Boolean indicating whether or not the audio should start + * playing automatically. + * - loop: Boolean indicating whether or not the audio should loop. + * + * @ingroup themeable + */ +function theme_file_entity_file_audio($variables) { + $files = $variables['files']; + $output = ''; + + $audio_attributes = array(); + if ($variables['controls']) { + $audio_attributes['controls'] = 'controls'; + } + if ($variables['autoplay']) { + $audio_attributes['autoplay'] = 'autoplay'; + } + if ($variables['loop']) { + $audio_attributes['loop'] = 'loop'; + } + if (!empty($variables['preload'])) { + $audio_attributes['preload'] = $variables['preload']; + } + + $output .= '<audio' . drupal_attributes($audio_attributes) . '>'; + foreach ($files as $delta => $file) { + $source_attributes = array( + 'src' => file_create_url($file['uri']), + 'type' => $file['filemime'], + ); + $output .= '<source' . drupal_attributes($source_attributes) . ' />'; + } + $output .= '</audio>'; + return $output; +} + +/** + * Returns HTML for displaying an HTML5 <video> tag. + * + * @param array $variables + * An associative array containing: + * - file: Associative array of file data, which must include "uri". + * - controls: Boolean indicating whether or not controls should be displayed. + * - autoplay: Boolean indicating whether or not the video should start + * playing automatically. + * - loop: Boolean indicating whether or not the video should loop. + * - muted: Boolean indicating whether or not the sound should be muted. + * - width: Width, in pixels, of the video player. + * - height: Height, in pixels, of the video player. + * + * @ingroup themeable + */ +function theme_file_entity_file_video($variables) { + $files = $variables['files']; + $output = ''; + + $video_attributes = array(); + if ($variables['controls']) { + $video_attributes['controls'] = 'controls'; + } + if ($variables['autoplay']) { + $video_attributes['autoplay'] = 'autoplay'; + } + if ($variables['loop']) { + $video_attributes['loop'] = 'loop'; + } + if ($variables['muted']) { + $video_attributes['muted'] = 'muted'; + } + if ($variables['width']) { + $video_attributes['width'] = $variables['width']; + } + if ($variables['height']) { + $video_attributes['height'] = $variables['height']; + } + if (!empty($variables['preload'])) { + $video_attributes['preload'] = $variables['preload']; + } + + $output .= '<video' . drupal_attributes($video_attributes) . '>'; + foreach ($files as $delta => $file) { + $source_attributes = array( + 'src' => file_create_url($file['uri']), + 'type' => $file['filemime'], + ); + $output .= '<source' . drupal_attributes($source_attributes) . ' />'; + } + $output .= '</video>'; + return $output; +} |