videojs.admin.inc in Video.js (HTML5 Video Player) 6
Same filename and directory in other branches
Administrative pages for the Video.js module.
File
includes/videojs.admin.incView source
<?php
/**
* @file
* Administrative pages for the Video.js module.
*/
/**
* Menu callback; Provides the Video.js settings form.
*/
function videojs_settings_form() {
$form = array();
$form['videojs_directory'] = array(
'#type' => 'textfield',
'#title' => t('Video.js file directory'),
'#default_value' => variable_get('videojs_directory', 'sites/all/libraries/video-js'),
'#description' => t('Specify the path that contains the Video.js library. The video.js file should be in the root of this directory.'),
);
$form['options'] = array(
'#type' => 'fieldset',
'#title' => t('Video.js options'),
'#collapsible' => FALSE,
);
$form['options']['videojs_autoplay'] = array(
'#type' => 'checkbox',
'#title' => t('Auto-play files on page load'),
'#description' => t('Use caution when combining this option with multiple players on the same page.'),
'#default_value' => variable_get('videojs_autoplay', FALSE),
);
$form['options']['videojs_width'] = array(
'#type' => 'textfield',
'#title' => t('Player width'),
'#default_value' => variable_get('videojs_width', 640),
);
$form['options']['videojs_height'] = array(
'#type' => 'textfield',
'#title' => t('Player height'),
'#default_value' => variable_get('videojs_height', 264),
);
$options = array(
0 => 'Default',
'tube-css' => 'Youtube',
'vim-css' => 'Vimeo',
'hu-css' => 'Hulu',
);
$form['options']['videojs_skin'] = array(
'#type' => 'select',
'#title' => t('Player skin'),
'#options' => $options,
'#default_value' => variable_get('videojs_skin', 'default'),
);
$form['thumbnails'] = array(
'#type' => 'fieldset',
'#title' => t('Video.js thumbnails'),
'#collapsible' => FALSE,
'#description' => t('Thumbnail settings for Video.js widget'),
);
foreach (_videojs_settings_thumbnail_fields() as $node_type => $value) {
$form['thumbnails']['videojs_' . $node_type] = array(
'#type' => 'select',
'#title' => t('@fieldname in @contenttype', array(
'@fieldname' => $value['video_js_field'],
'@contenttype' => $value['description'],
)),
'#default_value' => variable_get('videojs_' . $node_type, module_exists('video') ? 'video_module' : $value['filefields'][0]),
'#options' => module_exists('video') ? array(
'video_module' => t('Video module'),
) + $value['filefields'] : $value['filefields'],
);
}
$form['flash'] = array(
'#type' => 'fieldset',
'#title' => t('Flowplayer fallback'),
'#collapsible' => FALSE,
);
$form['flash']['videojs_flowplayer_extraplayerheight'] = array(
'#type' => 'textfield',
'#title' => t('Add vertical space to accommodate the Flowplayer control bar'),
'#field_suffix' => 'pixels',
'#default_value' => variable_get('videojs_flowplayer_extraplayerheight', 24),
'#description' => t('The control bar in Flowplayer 3.2 and up uses an overlay on top of the video, so the player size is equal to the video size. For custom control bars or older Flowplayer versions you can use this field to add vertical space to the player height.'),
'#size' => 5,
'#maxlength' => 3,
);
$form['flash']['videojs_wmode'] = array(
'#type' => 'select',
'#title' => t('Flash wmode'),
'#description' => t('Allows you to enable and select wmode.'),
'#default_value' => variable_get('videojs_wmode', ''),
'#options' => array(
'' => t('None'),
'window' => 'Window',
'transparent' => 'Transparent',
'opaque' => 'Opaque',
),
);
$form = system_settings_form($form);
$form['#validate'][] = 'videojs_settings_form_validate';
$form['#submit'][] = 'videojs_settings_form_submit';
return $form;
}
/**
* Validation function to validate the videojs_settings_form() form.
*/
function videojs_settings_form_validate($form, &$form_state) {
$form_state['videojs_version'] = videojs_get_version($form_state['values']['videojs_directory']);
if (!$form_state['videojs_version']) {
form_error($form['videojs_directory'], t('The directory specified does not seem to contain the Video.js library. Check to make sure that the video.js file is located within this directory.'));
}
}
/**
* Submit handler for the videojs_settings_form() form.
*/
function videojs_settings_form_submit($form, &$form_state) {
drupal_set_message(t('The Video.js library (version @version) successfully found in the %directory directory.', array(
'@version' => $form_state['videojs_version'],
'%directory' => $form_state['values']['videojs_directory'],
)));
}
/**
* Generate list of content types with filefield widget set to 'videojs'
*
* @return
* Returns array in format [node_type]=>array(
* 'description',
* 'video_js_field',
* filefields=>array('filefield'=>'filefield description'))
*/
function _videojs_settings_thumbnail_fields() {
$video_js_node_types = array();
// Iterate through all node_types
foreach (array_map('check_plain', node_get_types('names')) as $node_type => $description) {
// Iterate through all filefield field types in the current node type
foreach (filefield_get_field_list($node_type) as $field) {
// If widget format of the field is 'videojs' - generate structure containing node_type, videojs field name and list of possible options for thumbnails
if ($field['display_settings']['full']['format'] == 'videojs') {
$video_js_node_types[$node_type] = array(
'node_type' => $field['type_name'],
'description' => $description,
'video_js_field' => $field['field_name'],
'filefields' => array(),
);
// Get all filefield type fields except 'videojs' field (should we check only compatible extentions allowed in some widgets?)
foreach (filefield_get_field_list($node_type) as $thumbnail_field) {
if ($thumbnail_field['display_settings']['full']['format'] != 'videojs') {
$video_js_node_types[$node_type]['filefields'][$thumbnail_field['field_name']] = t($thumbnail_field['field_name']);
}
}
}
}
}
return $video_js_node_types;
}
Functions
Name | Description |
---|---|
videojs_settings_form | Menu callback; Provides the Video.js settings form. |
videojs_settings_form_submit | Submit handler for the videojs_settings_form() form. |
videojs_settings_form_validate | Validation function to validate the videojs_settings_form() form. |
_videojs_settings_thumbnail_fields | Generate list of content types with filefield widget set to 'videojs' |