123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223 |
- <?php
- /**
- * @file
- */
- /**
- * Implements hook_file_formatter_info().
- */
- function media_youtube_file_formatter_info() {
- $formatters['media_youtube_video'] = array(
- 'label' => t('YouTube Video'),
- 'file types' => array('video'),
- 'default settings' => array(),
- 'view callback' => 'media_youtube_file_formatter_video_view',
- 'settings callback' => 'media_youtube_file_formatter_video_settings',
- );
- foreach (array('width', 'height', 'autoplay', 'related', 'hd', 'showsearch', 'modestbranding', 'showinfo', 'version', 'theme', 'fullscreen', 'wmode', 'chromeless') as $setting) {
- $formatters['media_youtube_video']['default settings'][$setting] = media_youtube_variable_get($setting);
- }
- $formatters['media_youtube_image'] = array(
- 'label' => t('YouTube Preview Image'),
- 'file types' => array('video'),
- 'default settings' => array(
- 'image_style' => '',
- ),
- 'view callback' => 'media_youtube_file_formatter_image_view',
- 'settings callback' => 'media_youtube_file_formatter_image_settings',
- );
- return $formatters;
- }
- /**
- * Implements hook_file_formatter_FORMATTER_view().
- */
- function media_youtube_file_formatter_video_view($file, $display, $langcode) {
- $scheme = file_uri_scheme($file->uri);
- // WYSIWYG does not yet support video inside a running editor instance.
- if ($scheme == 'youtube' && empty($file->override['wysiwyg'])) {
- $element = array(
- '#theme' => 'media_youtube_video',
- '#uri' => $file->uri,
- '#options' => array(),
- );
- foreach (array('width', 'height', 'autoplay', 'related', 'hd', 'showsearch', 'modestbranding', 'showinfo', 'version', 'theme', 'fullscreen', 'wmode', 'chromeless') as $setting) {
- $element['#options'][$setting] = isset($file->override[$setting]) ? $file->override[$setting] : $display['settings'][$setting];
- }
- return $element;
- }
- }
- /**
- * Implements hook_file_formatter_FORMATTER_settings().
- */
- function media_youtube_file_formatter_video_settings($form, &$form_state, $settings) {
- $element = array();
- $options = array(
- 0 => t('AS2'),
- 3 => t('AS3'),
- );
- $element['version'] = array(
- '#title' => t('YouTube player version'),
- '#type' => 'select',
- '#options' => $options,
- '#default_value' => $settings['version'],
- );
- $options = array(
- 'dark' => t('dark'),
- 'light' => t('light'),
- );
- $element['theme'] = array(
- '#title' => t('YouTube player theme'),
- '#type' => 'select',
- '#options' => $options,
- '#default_value' => $settings['theme'],
- );
- $element['width'] = array(
- '#title' => t('Width'),
- '#type' => 'textfield',
- '#default_value' => $settings['width'],
- );
- $element['height'] = array(
- '#title' => t('Height'),
- '#type' => 'textfield',
- '#default_value' => $settings['height'],
- );
- $element['fullscreen'] = array(
- '#title' => t('Allow the video to be played in full screen mode'),
- '#type' => 'checkbox',
- '#default_value' => $settings['fullscreen'],
- );
- $element['autoplay'] = array(
- '#title' => t('Autoplay'),
- '#type' => 'checkbox',
- '#default_value' => $settings['autoplay'],
- );
- $element['related'] = array(
- '#title' => t('Show suggested videos when the video finishes'),
- '#type' => 'checkbox',
- '#default_value' => $settings['related'],
- );
- $element['hd'] = array(
- '#title' => t('Display the high quality version of the video when available'),
- '#type' => 'checkbox',
- '#default_value' => $settings['hd'],
- );
- $element['showsearch'] = array(
- '#title' => t('Allow users to search from the video'),
- '#type' => 'checkbox',
- '#default_value' => $settings['showsearch'],
- );
- $element['modestbranding'] = array(
- '#title' => t('Use modest YouTube branding (requires AS3 version player)'),
- '#type' => 'checkbox',
- '#default_value' => $settings['modestbranding'],
- );
- $element['showinfo'] = array(
- '#title' => t('Display video title'),
- '#type' => 'checkbox',
- '#default_value' => $settings['showinfo'],
- );
- $element['chromeless'] = array(
- '#title' => t('Use chromeless player'),
- '#type' => 'checkbox',
- '#default_value' => $settings['chromeless'],
- );
- return $element;
- }
- /**
- * Implements hook_file_formatter_FORMATTER_view().
- */
- function media_youtube_file_formatter_image_view($file, $display, $langcode) {
- $scheme = file_uri_scheme($file->uri);
- if ($scheme == 'youtube') {
- $wrapper = file_stream_wrapper_get_instance_by_uri($file->uri);
- $image_style = $display['settings']['image_style'];
- $valid_image_styles = image_style_options(FALSE);
- if (empty($image_style) || !isset($valid_image_styles[$image_style])) {
- $element = array(
- '#theme' => 'image',
- '#path' => $wrapper->getOriginalThumbnailPath(),
- );
- }
- else {
- $element = array(
- '#theme' => 'image_style',
- '#style_name' => $image_style,
- '#path' => $wrapper->getLocalThumbnailPath(),
- );
- }
- return $element;
- }
- }
- /**
- * Implements hook_file_formatter_FORMATTER_settings().
- */
- function media_youtube_file_formatter_image_settings($form, &$form_state, $settings) {
- $element = array();
- $element['image_style'] = array(
- '#title' => t('Image style'),
- '#type' => 'select',
- '#options' => image_style_options(FALSE),
- '#default_value' => $settings['image_style'],
- '#empty_option' => t('None (original image)'),
- );
- return $element;
- }
- /**
- * Implements hook_file_default_displays().
- */
- function media_youtube_file_default_displays() {
- $default_displays = array();
- // Default settings for displaying as a video.
- $default_video_settings = array(
- 'media_large' => array(
- 'width' => 480,
- 'height' => 360,
- 'autoplay' => FALSE,
- ),
- 'media_original' => array(
- 'width' => 640,
- 'height' => 480,
- 'autoplay' => media_youtube_variable_get('autoplay'),
- ),
- );
- foreach ($default_video_settings as $view_mode => $settings) {
- $display_name = 'video__' . $view_mode . '__media_youtube_video';
- $default_displays[$display_name] = (object) array(
- 'api_version' => 1,
- 'name' => $display_name,
- 'status' => 1,
- 'weight' => 1,
- 'settings' => $settings,
- );
- }
- // Default settings for displaying a video preview image. We enable preview
- // images even for view modes that also play video, for use inside a running
- // WYSIWYG editor. The higher weight ensures that the video display is used
- // where possible.
- $default_image_styles = array(
- 'media_preview' => 'square_thumbnail',
- 'media_large' => 'large',
- 'media_original' => ''
- );
- foreach ($default_image_styles as $view_mode => $image_style) {
- $display_name = 'video__' . $view_mode . '__media_youtube_image';
- $default_displays[$display_name] = (object) array(
- 'api_version' => 1,
- 'name' => $display_name,
- 'status' => 1,
- 'weight' => 2,
- 'settings' => array('image_style' => $image_style),
- );
- }
- return $default_displays;
- }
|