aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--includes/video_helper.inc64
-rw-r--r--theme/video-play-quicktime.tpl.php14
-rw-r--r--video.field.inc82
-rw-r--r--video.module41
-rw-r--r--video_formatter.inc109
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 '<pre>';
-// 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 @@
-<?php
+<?php
//$Id$
/*
* @file
@@ -22,11 +22,11 @@
<param name="autoplay" value="<?php print $video->autoplay ? 'true' : 'false'; ?>" />
<param name="pluginurl" value="http://www.apple.com/quicktime/download/" />
<embed src="<?php print $video->files->{$video->player}->url; ?>"
- type="video/quicktime"
- pluginspage="http://www.apple.com/quicktime/download/"
- width="<?php print $video->player_width; ?>"
- height="<?php print $video->player_height; ?>"
- autostart="<?php print $video->autoplay ? 'true' : 'false'; ?>"
- controller="true" >
+ type="video/quicktime"
+ pluginspage="http://www.apple.com/quicktime/download/"
+ width="<?php print $video->player_width; ?>"
+ height="<?php print $video->player_height; ?>"
+ autostart="<?php print $video->autoplay ? 'true' : 'false'; ?>"
+ controller="true" >
</embed>
</object> \ 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('<br />', $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'] = '<div class="video_large_thumbnail-' . $delta . '">' . theme('image_style', array('style_name' => $field['settings']['preview_video_thumb_style'], 'path' => $default_thumbnail->uri)) . '</div>';
+ if (!empty($default_thumbnail))
+ $element['preview']['#suffix'] = '<div class="video_large_thumbnail-' . $delta . '">' . theme('image_style', array('style_name' => $field['settings']['preview_video_thumb_style'], 'path' => $default_thumbnail->uri)) . '</div>';
}
}
@@ -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