summaryrefslogtreecommitdiff
path: root/sites/all/modules/file_entity/file_entity.theme.inc
diff options
context:
space:
mode:
Diffstat (limited to 'sites/all/modules/file_entity/file_entity.theme.inc')
-rw-r--r--sites/all/modules/file_entity/file_entity.theme.inc168
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;
+}