prettyphoto_formatters_youtube.module in prettyPhoto Formatters 7
prettyPhoto Youtube formatter hooks and callbacks.
File
modules/prettyphoto_formatters_youtube/prettyphoto_formatters_youtube.moduleView source
<?php
/**
* @file
* prettyPhoto Youtube formatter hooks and callbacks.
*/
/**
* Implements hook_field_formatter_info().
*/
function prettyphoto_formatters_youtube_field_formatter_info() {
$formatters = array();
$formatters = array(
// This formatter displays your youtube video.
'prettyphoto_youtube_video' => array(
'label' => t('prettyphoto: YouTube video'),
'field types' => array(
'youtube',
),
'settings' => array(
'youtube_size' => '420x315',
'youtube_tsize' => '420x315',
'youtube_width' => NULL,
'youtube_height' => NULL,
'youtube_autoplay' => FALSE,
'youtube_showinfo' => FALSE,
'youtube_controls' => FALSE,
'youtube_autohide' => FALSE,
'youtube_iv_load_policy' => FALSE,
),
),
);
return $formatters;
}
/**
* Implements hook_field_formatter_settings_form().
*/
function prettyphoto_formatters_youtube_field_formatter_settings_form($field, $instance, $view_mode, $form, &$form_state) {
$display = $instance['display'][$view_mode];
$settings = $display['settings'];
if ($display['type'] == 'prettyphoto_youtube_video') {
$element['youtube_size'] = array(
'#type' => 'select',
'#title' => t('YouTube video size'),
'#options' => youtube_size_options(),
'#default_value' => $settings['youtube_size'],
);
$element['youtube_width'] = array(
'#type' => 'textfield',
'#title' => t('Width'),
'#size' => 10,
'#default_value' => $settings['youtube_width'],
'#states' => array(
'visible' => array(
':input[name="fields[' . $field['field_name'] . '][settings_edit_form][settings][youtube_size]"]' => array(
'value' => 'custom',
),
),
),
);
$element['youtube_height'] = array(
'#type' => 'textfield',
'#title' => t('Height'),
'#size' => 10,
'#default_value' => $settings['youtube_height'],
'#states' => array(
'visible' => array(
':input[name="fields[' . $field['field_name'] . '][settings_edit_form][settings][youtube_size]"]' => array(
'value' => 'custom',
),
),
),
);
$element['youtube_tsize'] = array(
'#type' => 'select',
'#title' => t('Thumbnail style'),
'#options' => image_style_options(FALSE),
'#default_value' => $settings['youtube_tsize'],
'#empty_option' => t('None (original image)'),
);
$element['youtube_autoplay'] = array(
'#type' => 'checkbox',
'#title' => t('Play video automatically when loaded (autoplay).'),
'#default_value' => $settings['youtube_autoplay'],
);
$element['youtube_showinfo'] = array(
'#type' => 'checkbox',
'#title' => t('Hide video title and uploader info (showinfo).'),
'#default_value' => $settings['youtube_showinfo'],
);
$element['youtube_controls'] = array(
'#type' => 'checkbox',
'#title' => t('Always hide video controls (controls).'),
'#default_value' => $settings['youtube_controls'],
);
$element['youtube_autohide'] = array(
'#type' => 'checkbox',
'#title' => t('Hide video controls after play begins (autohide).'),
'#default_value' => $settings['youtube_autohide'],
);
$element['youtube_iv_load_policy'] = array(
'#type' => 'checkbox',
'#title' => t('Hide video annotations by default (iv_load_policy).'),
'#default_value' => $settings['youtube_iv_load_policy'],
);
}
return $element;
}
/**
* Implements hook_field_formatter_settings_summary().
*/
function prettyphoto_formatters_youtube_field_formatter_settings_summary($field, $instance, $view_mode) {
$display = $instance['display'][$view_mode];
$settings = $display['settings'];
$parameters = array(
$settings['youtube_autoplay'],
$settings['youtube_showinfo'],
$settings['youtube_controls'],
$settings['youtube_autohide'],
$settings['youtube_iv_load_policy'],
);
// Summary for the video style.
if ($display['type'] == 'prettyphoto_youtube_video') {
$video_sizes = youtube_size_options();
if (isset($video_sizes[$settings['youtube_size']])) {
$summary = t('YouTube video: @size', array(
'@size' => $video_sizes[$settings['youtube_size']],
));
}
else {
$summary = t('YouTube video: 450px by 315px');
}
foreach ($parameters as $parameter) {
if ($parameter) {
$summary .= t(', custom parameters');
break;
}
}
$image_styles = image_style_options(FALSE);
// Unset possible 'No defined styles' option.
unset($image_styles['']);
if (isset($image_styles[$settings['youtube_tsize']])) {
$summary .= t('Image style: @style', array(
'@style' => $image_styles[$settings['youtube_tsize']],
));
}
else {
$summary .= t('Original image');
}
return $summary;
}
}
/**
* Implements hook_field_formatter_view().
*/
function prettyphoto_formatters_youtube_field_formatter_view($entity_type, $entity, $field, $instance, $langcode, $items, $display) {
$element = array();
// Get YouTube (field) settings.
$size = array_key_exists('youtube_size', $display['settings']) ? $display['settings']['youtube_size'] : NULL;
$tsize = array_key_exists('youtube_tsize', $display['settings']) ? $display['settings']['youtube_tsize'] : NULL;
$width = array_key_exists('youtube_width', $display['settings']) ? $display['settings']['youtube_width'] : NULL;
$height = array_key_exists('youtube_height', $display['settings']) ? $display['settings']['youtube_height'] : NULL;
$autoplay = array_key_exists('youtube_autoplay', $display['settings']) ? $display['settings']['youtube_autoplay'] : FALSE;
$showinfo = array_key_exists('youtube_showinfo', $display['settings']) ? $display['settings']['youtube_showinfo'] : FALSE;
$controls = array_key_exists('youtube_controls', $display['settings']) ? $display['settings']['youtube_controls'] : FALSE;
$autohide = array_key_exists('youtube_autohide', $display['settings']) ? $display['settings']['youtube_autohide'] : FALSE;
$iv_load_policy = array_key_exists('youtube_iv_load_policy', $display['settings']) ? $display['settings']['youtube_iv_load_policy'] : FALSE;
$field_settings = array(
'size' => check_plain($size),
'tsize' => check_plain($tsize),
'width' => check_plain($width),
'height' => check_plain($height),
'autoplay' => (bool) $autoplay,
'showinfo' => (bool) $showinfo,
'controls' => (bool) $controls,
'autohide' => (bool) $autohide,
'iv_load_policy' => (bool) $iv_load_policy,
);
// Get YouTube (module) settings.
$suggest = variable_get('youtube_suggest', TRUE);
$privacy = variable_get('youtube_privacy', FALSE);
$modest_branding = variable_get('youtube_modestbranding', FALSE);
$theme = variable_get('youtube_theme', FALSE);
$color = variable_get('youtube_color', FALSE);
$enable_js_api = variable_get('youtube_enablejsapi', FALSE);
$wmode = variable_get('youtube_wmode', TRUE);
$dimensions = youtube_get_dimensions($field_settings['size'], $field_settings['width'], $field_settings['height']);
$thumb_dir = variable_get('youtube_thumb_dir', 'youtube');
$module_settings = array(
'suggest' => (bool) $suggest,
'privacy' => (bool) $privacy,
'modest_branding' => (bool) $modest_branding,
'theme' => (bool) $theme,
'color' => (bool) $color,
'enable_js_api' => (bool) $enable_js_api,
'wmode' => (bool) $wmode,
'dimensions' => $dimensions,
'protocol' => isset($_SERVER['HTTPS']) ? 'https' : 'http',
'thumb_dir' => check_plain($thumb_dir),
);
foreach ($items as $delta => $item) {
$element[$delta] = array(
'#theme' => 'prettyphoto_formatters_youtube',
'#field' => $instance,
'#video_id' => check_plain($item['video_id']),
'#settings' => array(
'field' => $field_settings,
'module' => $module_settings,
),
);
}
return $element;
}
/**
* Implements hook_theme().
*/
function prettyphoto_formatters_youtube_theme($existing, $type, $theme, $path) {
$theme = array();
$theme['prettyphoto_formatters_youtube'] = array(
'variables' => array(
'field' => NULL,
'video_id' => NULL,
'settings' => NULL,
),
);
foreach ($theme as &$array) {
$array['file'] = 'prettyphoto_formatters_youtube.formatter.inc';
}
return $theme;
}