From 90ae392eadddfad417ed4ac752134e3eca70066c Mon Sep 17 00:00:00 2001 From: Heshan Wanigasooriya Date: Thu, 3 Feb 2011 08:51:55 +0000 Subject: Updating the video players with the D7 theme registry preprocess functions. --- includes/video_helper.inc | 64 ++++++++++++---------- theme/video-play-quicktime.tpl.php | 14 ++--- video.field.inc | 82 ++++++++-------------------- video.module | 41 ++++++++------ video_formatter.inc | 109 +++++++++++++++++++++++++++++++++++++ 5 files changed, 197 insertions(+), 113 deletions(-) diff --git a/includes/video_helper.inc b/includes/video_helper.inc index 63f3e5a..2307f87 100644 --- a/includes/video_helper.inc +++ b/includes/video_helper.inc @@ -11,18 +11,23 @@ class video_helper { public function video_object($element) { - $field = content_fields($element['#field_name'], $element['#type_name']); + $field_settings = $element['field']['settings']; + $instance_settings = $element['instance']['settings']; //setup our width x height - $dimensions = explode("x", $element['#item']['data']['dimensions']); - $player_dimensions = explode("x", $element['#item']['data']['player_dimensions']); - if (!isset($dimensions[0]) || !isset($dimensions[1])) { - $dimensions = explode("x", $field['widget']['default_dimensions']); + + $player_dimensions = explode("x", $element['item']['player_dimensions']); + // set the video dimentions + if (!isset($element['item']['dimensions'])) { + $dimensions = explode("x", $instance_settings['default_dimensions']); if (!isset($dimensions[0]) || !isset($dimensions[1])) { drupal_set_message(t('Something is wrong with your dimensions. Make sure you enter dimensions in the form of WxH.'), 'error'); } } + else + $dimensions = explode("x", $element['item']['dimensions']); + if (!isset($player_dimensions[0]) || !isset($player_dimensions[1])) { - $player_dimensions = explode("x", $field['widget']['default_player_dimensions']); + $player_dimensions = explode("x", $instance_settings['default_player_dimensions']); if (!isset($player_dimensions[0]) || !isset($player_dimensions[1])) { drupal_set_message(t('Something is wrong with your player dimensions. Make sure you enter the player dimensions in the form of WxH.'), 'error'); } @@ -30,35 +35,34 @@ class video_helper { // Build our video object for all types. $video = new stdClass(); - $video->fid = $element['#item']['fid']; - $video->original = $element['#item']; - $extension = strtolower(pathinfo($element['#item']['filename'], PATHINFO_EXTENSION)); - $video->files->{$extension}->filename = pathinfo($element['#item']['filepath'], PATHINFO_FILENAME) . '.' . $extension; - $video->files->{$extension}->filepath = $element['#item']['filepath']; - $video->files->{$extension}->url = file_create_url($element['#item']['filepath']); + $video->fid = $element['item']['fid']; + $video->original = $element['item']; + $extension = strtolower(pathinfo($element['item']['filename'], PATHINFO_EXTENSION)); + $video->files->{$extension}->filename = pathinfo($element['item']['filename'], PATHINFO_FILENAME) . '.' . $extension; + $video->files->{$extension}->filepath = $element['item']['uri']; + $video->files->{$extension}->url = file_create_url($element['item']['uri']); $video->files->{$extension}->extension = $extension; - $video->player = strtolower(pathinfo($element['#item']['filename'], PATHINFO_EXTENSION)); + // set the player to play + $video->player = $extension; $video->width = trim($dimensions[0]); $video->height = trim($dimensions[1]); $video->player_width = trim($player_dimensions[0]); $video->player_height = trim($player_dimensions[1]); + // load thumbnail object $video->thumbnail = $this->thumbnail_object($element); - $video->formatter = $element['#formatter']; +// $video->formatter = $element['#formatter']; $video->autoplay = variable_get('video_autoplay', TRUE); $video->autobuffering = variable_get('video_autobuffering', TRUE); $video->theora_player = variable_get('video_ogg_player', 'http://theora.org/cortado.jar'); // lets find out if we have transcoded this file and update our paths. - if (isset($field['widget']['autoconversion']) && $field['widget']['autoconversion'] - && !$element['#item']['data']['bypass_autoconversion']) { + if (isset($field_settings['autoconversion']) && $field_settings['autoconversion'] + && !$element['item']['bypass_autoconversion']) { // discard all existing file data $video->files = new stdClass(); module_load_include('inc', 'video', '/includes/conversion'); $conversion = new video_conversion; $conversion->load_completed_job($video); } -// echo '
';
-//    print_r($video);
-//    die();
     // Let othere module to load the video files by referance
     // Lets find out if we have pushed this file to the cdn if enabled.
     // @TODO : add correct filesystem load to this
@@ -78,7 +82,8 @@ class video_helper {
   }
 
   public function thumbnail_object($element) {
-    $field = content_fields($element['#field_name'], $element['#type_name']);
+    $field_settings = $element['field']['settings'];
+    $instance_settings = $element['instance']['settings'];
     // Build our thumbnail object
     $thumbnail = new stdClass();
     $thumbnail->filepath = '';
@@ -89,19 +94,22 @@ class video_helper {
     $thumbnail->description = '';
 
     // Setup our thumbnail path.
-    $use_default_img = isset($element['#item']['data']['use_default_video_thumb']) ? $element['#item']['data']['use_default_video_thumb'] : false;
-    if ($use_default_img && !empty($field['widget']['default_video_thumb']['filepath'])) {
-      $thumbnail->filepath = $field['widget']['default_video_thumb']['filepath'];
-    } elseif (isset($element['#item']['data']['video_thumb']) ? $element['#item']['data']['video_thumb'] : false) {
-      $thumbnail->filepath = $element['#item']['data']['video_thumb'];
+    $default_thumbnail = file_load($field_settings['default_video_thumbnail']);
+    $use_default_img = isset($element['item']['use_default_video_thumb']) ? $element['item']['use_default_video_thumb'] : false;
+    if ($use_default_img && !empty($field_settings['default_video_thumbnail'])) {
+      $thumbnail->filepath = $default_thumbnail->uri;
+    } elseif (isset($element['item']['video_thumb']) ? $element['item']['video_thumb'] : false) {
+      $thumbnail_load = file_load($element['item']['video_thumb']);
+      $thumbnail->filepath = $thumbnail_load->uri;
     } else {
       //need some type of default if nothing is present
       //drupal_set_message(t('No thumbnail has been configured for the video.'), 'error');
     }
     //lets check for an imagecache preset
-    if (isset($element['imagecache_preset'])) {
-      $thumbnail->url = imagecache_create_url($element['imagecache_preset'], $thumbnail->filepath);
-      $thumbnail->filepath = imagecache_create_path($element['imagecache_preset'], $thumbnail->filepath);
+    $style_name = $field_settings['preview_video_thumb_style'];
+    $style_path = image_style_path($style_name, $thumbnail->filepath);
+    if (!file_exists($style_path)) {
+      $style_path = image_style_url($style_name, $thumbnail->filepath);
     } else {
       $thumbnail->url = file_create_url($thumbnail->filepath);
     }
diff --git a/theme/video-play-quicktime.tpl.php b/theme/video-play-quicktime.tpl.php
index a69ce26..d234130 100644
--- a/theme/video-play-quicktime.tpl.php
+++ b/theme/video-play-quicktime.tpl.php
@@ -1,4 +1,4 @@
-autoplay ? 'true' : 'false'; ?>" />
   
   
+         type="video/quicktime"
+         pluginspage="http://www.apple.com/quicktime/download/"
+         width="player_width; ?>"
+         height="player_height; ?>"
+         autostart="autoplay ? 'true' : 'false'; ?>"
+         controller="true" >
   
 
\ No newline at end of file
diff --git a/video.field.inc b/video.field.inc
index 1f9a863..b530537 100644
--- a/video.field.inc
+++ b/video.field.inc
@@ -306,12 +306,12 @@ function video_field_formatter_info() {
     'video_plain' => array(
       'label' => t('Video'),
       'field types' => array('video'),
-      'settings' => array('image_style' => '', 'image_link' => ''),
+      'settings' => array('video_style' => '', 'video_link' => ''),
     ),
     'video_nodelink' => array(
       'label' => t('Video Thumbnail linked to node'),
       'field types' => array('video'),
-      'settings' => array('image_style' => '', 'image_link' => ''),
+      'settings' => array('video_style' => '', 'video_link' => ''),
     ),
       //'video_colorbox' => array(
       //  'label' => t('Video Thumbnail to Colorbox'),
@@ -330,9 +330,9 @@ function video_field_formatter_info() {
   foreach ($thumb_types as $types) {
     foreach (image_styles () as $preset) {
       $formatters[$preset['name'] . '__' . $types] = array(
-        'label' => t('[Video] @preset @label', array('@preset' => $preset['name'], '@label' => $formatters[$types]['label'])),
+        'label' => t('[Video] @preset of @label', array('@preset' => $preset['name'], '@label' => $formatters[$types]['label'])),
         'field types' => array('video'),
-        'settings' => array('image_style' => '', 'image_link' => ''),
+        'settings' => array('video_style' => '', 'video_link' => ''),
       );
     }
   }
@@ -347,11 +347,11 @@ function video_field_formatter_settings_form($field, $instance, $view_mode, $for
   $settings = $display['settings'];
 
   $image_styles = image_style_options(FALSE);
-  $element['image_style'] = array(
+  $element['video_style'] = array(
     '#title' => t('Image style'),
     '#type' => 'select',
-    '#default_value' => $settings['image_style'],
-    '#empty_option' => t('None (original image)'),
+    '#default_value' => $settings['video_style'],
+    '#empty_option' => t('None (original video/video thumbnail)'),
     '#options' => $image_styles,
   );
 
@@ -359,10 +359,10 @@ function video_field_formatter_settings_form($field, $instance, $view_mode, $for
     'content' => t('Content'),
     'file' => t('File'),
   );
-  $element['image_link'] = array(
-    '#title' => t('Link image to'),
+  $element['video_link'] = array(
+    '#title' => t('Link video or vide thumbanil to'),
     '#type' => 'select',
-    '#default_value' => $settings['image_link'],
+    '#default_value' => $settings['video_link'],
     '#empty_option' => t('Nothing'),
     '#options' => $link_types,
   );
@@ -384,10 +384,10 @@ function video_field_formatter_settings_summary($field, $instance, $view_mode) {
   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']]));
+  if (isset($image_styles[$settings['video_style']])) {
+    $summary[] = t('Video thumbnail style: @style', array('@style' => $image_styles[$settings['video_style']]));
   } else {
-    $summary[] = t('Original image');
+    $summary[] = t('Original video/video thumbnail');
   }
 
   $link_types = array(
@@ -395,8 +395,8 @@ function video_field_formatter_settings_summary($field, $instance, $view_mode) {
     'file' => t('Linked to file'),
   );
   // Display this setting only if image is linked.
-  if (isset($link_types[$settings['image_link']])) {
-    $summary[] = $link_types[$settings['image_link']];
+  if (isset($link_types[$settings['video_link']])) {
+    $summary[] = $link_types[$settings['video_link']];
   }
 
   return implode('
', $summary); @@ -409,9 +409,9 @@ function video_field_formatter_view($entity_type, $entity, $field, $instance, $l $element = array(); // Check if the formatter involves a link. - if ($display['settings']['image_link'] == 'content') { + if ($display['settings']['video_link'] == 'content') { $uri = entity_uri($entity_type, $entity); - } elseif ($display['settings']['image_link'] == 'file') { + } elseif ($display['settings']['video_link'] == 'file') { $link_file = TRUE; } @@ -423,52 +423,14 @@ function video_field_formatter_view($entity_type, $entity, $field, $instance, $l ); } $element[$delta] = array( - '#theme' => 'image_formatter', + '#theme' => 'video_formatter', '#item' => $item, - '#image_style' => $display['settings']['image_style'], + '#video_style' => $display['settings']['video_style'], '#path' => isset($uri) ? $uri : '', + '#entity' => $entity, + '#field' => $field, + '#instance' => $instance ); } - return $element; -} - -/** - * Returns HTML for an image field formatter. - * - * @param $variables - * An associative array containing: - * - item: An array of image data. - * - image_style: An optional image style. - * - path: An array containing the link 'path' and link 'options'. - * - * @ingroup themeable - */ -function theme_video_formatter($variables) { - $item = $variables['item']; - $image = array( - 'path' => $item['uri'], - 'alt' => $item['alt'], - ); - // Do not output an empty 'title' attribute. - if (drupal_strlen($item['title']) > 0) { - $image['title'] = $item['title']; - } - - if ($variables['image_style']) { - $image['style_name'] = $variables['image_style']; - $output = theme('image_style', $image); - } else { - $output = theme('image', $image); - } - - if ($variables['path']) { - $path = $variables['path']['path']; - $options = $variables['path']['options']; - // When displaying an image inside a link, the html option must be TRUE. - $options['html'] = TRUE; - $output = l($output, $path, $options); - } - - return $output; } \ No newline at end of file diff --git a/video.module b/video.module index d16a38b..6a03d75 100644 --- a/video.module +++ b/video.module @@ -139,7 +139,7 @@ function video_menu() { function video_theme() { $theme = array(); $theme['video_thumbnails'] = array( - 'arguments' => array('file' => NULL, 'alt' => '', 'title' => '', 'attributes' => NULL, 'getsize' => TRUE), + 'variables' => array('file' => NULL, 'alt' => '', 'title' => '', 'attributes' => NULL, 'getsize' => TRUE), 'file' => 'video.theme.inc', ); $theme['video_widget'] = array( @@ -147,23 +147,23 @@ function video_theme() { 'file' => 'video.theme.inc', ); $theme['video_widget_preview'] = array( - 'arguments' => array('item' => TRUE), + 'variables' => array('item' => TRUE), 'file' => 'video.theme.inc', ); $theme['video_image'] = array( - 'arguments' => array('file' => NULL, 'alt' => '', 'title' => '', 'attributes' => NULL, 'getsize' => TRUE, 'imagecache' => NULL), + 'variables' => array('file' => NULL, 'alt' => '', 'title' => '', 'attributes' => NULL, 'getsize' => TRUE, 'imagecache' => NULL), 'file' => 'video.theme.inc', ); $theme['video_widget_video_thumb'] = array( - 'arguments' => array('item' => TRUE), + 'variables' => array('item' => TRUE), 'file' => 'video.theme.inc', ); $theme['video_formatter_video_plain'] = array( - 'arguments' => array('element' => NULL), + 'variables' => array('element' => NULL), 'file' => 'video_formatter.inc', ); $theme['video_formatter_video_nodelink'] = array( - 'arguments' => array('element' => NULL, 'imagecache' => NULL), + 'variables' => array('element' => NULL, 'imagecache' => NULL), 'file' => 'video_formatter.inc', ); //$theme['video_formatter_video_colorbox'] = array( @@ -171,15 +171,15 @@ function video_theme() { // 'file' => 'video_formatter.inc', //); $theme['video_formatter_video_media_js'] = array( - 'arguments' => array('element' => NULL), + 'variables' => array('element' => NULL), 'file' => 'video_formatter.inc', ); $theme['video_encoding_failed'] = array( - 'arguments' => array(), + 'variables' => array(), 'file' => 'video_formatter.inc', ); $theme['video_inprogress'] = array( - 'arguments' => array(), + 'variables' => array(), 'file' => 'video_formatter.inc', ); @@ -188,9 +188,7 @@ function video_theme() { $players = video_video_players(); foreach ($players as $tpl => $value) { $theme[$tpl] = array( - 'arguments' => array('video' => NULL, 'node' => NULL, 'themed_output' => NULL), - //#843368 fix -// 'file' => 'video_formatter.inc', + 'variables' => array('video' => NULL, 'themed_output' => NULL), 'template' => str_replace('_', '-', $tpl), 'path' => $path, ); @@ -198,7 +196,7 @@ function video_theme() { //We need to add an flv theme buffer to allow users to override in their own module to add in extra parameters before //calling our flv template file. $theme['video_flv'] = array( - 'arguments' => array('video' => NULL, 'node' => NULL), + 'variables' => array('video' => NULL, 'node' => NULL), 'file' => 'video_formatter.inc' ); @@ -210,13 +208,18 @@ function video_theme() { foreach ($thumb_types as $types) { foreach (imagecache_presets () as $preset) { $theme['video_formatter_' . $preset['presetname'] . '__' . $types] = array( - 'arguments' => array('element' => NULL), + 'variables' => array('element' => NULL), 'function' => 'theme_video_formatter_imagecache', 'file' => 'video_formatter.inc' ); } } } + // @TODO : check is there any other optimal way to do this? + $theme['video_formatter'] = array( + 'variables' => array('item' => NULL, 'path' => NULL, 'video_style' => NULL, 'entity' => NULL, 'field' => NULL, 'instance' => NULL), + 'file' => 'video_formatter.inc' + ); return $theme; } @@ -334,7 +337,8 @@ function video_thumb_process(&$element, &$form_state) { // print_r($field['settings']['default_video_thumbnail']); $default_thumbnail = file_load($field['settings']['default_video_thumbnail']); // @todo Integrate the thumbnails with imagecache. - $element['preview']['#suffix'] = '
' . theme('image_style', array('style_name' => $field['settings']['preview_video_thumb_style'], 'path' => $default_thumbnail->uri)) . '
'; + if (!empty($default_thumbnail)) + $element['preview']['#suffix'] = '
' . theme('image_style', array('style_name' => $field['settings']['preview_video_thumb_style'], 'path' => $default_thumbnail->uri)) . '
'; } } @@ -779,7 +783,7 @@ function video_video_flv_players() { */ function video_get_player($element) { // Setup our node object to be passed along with the player. - $node = $element['#node']; +// $node = $element['entity']; // Setup our video object module_load_include('inc', 'video', '/includes/video_helper'); $video_helper = new video_helper; @@ -787,11 +791,12 @@ function video_get_player($element) { // Lets spit out our theme based on the extension $defaults = video_video_extensions(); $theme_function = variable_get('video_extension_' . $video->player, $defaults[$video->player]); + // Lets do some special handling for our flv files to accomdate multiple players. if ($theme_function == 'video_play_flv') { - return theme('video_flv', $video, $node); + return theme('video_flv', (array) $video); } else { - return theme($theme_function, $video, $node); + return theme($theme_function, (array) $video); } } diff --git a/video_formatter.inc b/video_formatter.inc index bcda04f..a9451d4 100644 --- a/video_formatter.inc +++ b/video_formatter.inc @@ -211,4 +211,113 @@ function theme_video_formatter_imagecache($element) { */ function theme_video_formatter($variables) { return video_get_player($variables); +} + +/** + * Process variables for video-play-quicktime.tpl.php. + * + * The $variables array contains the following arguments: + * - $video + * + * @see video-play-quicktime.tpl.php + */ +function template_preprocess_video_play_quicktime(&$variables) { + $variables['video'] = (object) $variables; +} + +/** + * Process variables for video-play-dcr.tpl.php + * + * The $variables array contains the following arguments: + * - $video + * + * @see video-play-dcr.tpl.php + */ +function template_preprocess_video_play_dcr(&$variables) { + $variables['video'] = (object) $variables; +} + +/** + * Process variables for video-play-divx.tpl.php + * + * The $variables array contains the following arguments: + * - $video + * + * @see video-play-divx.tpl.php + */ +function template_preprocess_video_play_divx(&$variables) { + $variables['video'] = (object) $variables; +} + +/** + * Process variables for video-play-flash.tpl.php + * + * The $variables array contains the following arguments: + * - $video + * + * @see video-play-flash.tpl.php + */ +function template_preprocess_video_play_flash(&$variables) { + $variables['video'] = (object) $variables; +} + +/** + * Process variables for video-play-flv.tpl.php + * + * The $variables array contains the following arguments: + * - $video + * + * @see video-play-flv.tpl.php + */ +function template_preprocess_video_play_flv(&$variables) { + $variables['video'] = (object) $variables; + $variables['themed_output'] = (object) $variables; +} + +/** + * Process variables for video-play-html5.tpl.php + * + * The $variables array contains the following arguments: + * - $video + * + * @see video-play-html5.tpl.php + */ +function template_preprocess_video_play_html5(&$variables) { + $variables['video'] = (object) $variables; +} + +/** + * Process variables for video-play-realmedia.tpl.php + * + * The $variables array contains the following arguments: + * - $video + * + * @see video-play-realmedia.tpl.php + */ +function template_preprocess_video_play_realmedia(&$variables) { + $variables['video'] = (object) $variables; +} + +/** + * Process variables for video-play-theora.tpl.php + * + * The $variables array contains the following arguments: + * - $video + * + * @see video-play-theora.tpl.php + */ +function template_preprocess_video_play_theora(&$variables) { + $variables['video'] = (object) $variables; +} + +/** + * Process variables for video-play-windowsmedia.tpl.php + * + * The $variables array contains the following arguments: + * - $video + * + * @see video-play-windowsmedia.tpl.php + */ +function template_preprocess_video_play_windowsmedia(&$variables) { + $variables['video'] = (object) $variables; } \ No newline at end of file -- cgit v1.2.3