function soundmanager2_field_formatter_view in SoundManager2 7.2
Implements hook_field_formatter_view().
File
- ./
soundmanager2.module, line 475 - Responsible for managing the required SWF and JS files for soundmanager2 to work
Code
function soundmanager2_field_formatter_view($entity_type, $entity, $field, $instance, $langcode, $items, $display) {
$element = array();
$settings = $display['settings'];
$tracks = array();
foreach ($items as $delta => $item) {
// Prepend a random parameter to the URL in case this track appears
// multiple times in the same page.
$attributes = array();
if ($settings['audio_type'] != 'default') {
$attributes['type'] = $settings['audio_type'];
}
$url_options = array(
'query' => array(
'uuid' => uniqid(),
),
'attributes' => $attributes,
);
if (isset($item['file'])) {
// A Media file type.
$file = $item['file'];
// Get text to use in link
$text = $file->filename;
if (array_key_exists('text', $settings)) {
if ($settings['text'] == 'description' && !empty($item['description'])) {
$text = $file->description;
}
else {
if ($settings['text'] == 'title' && !empty($entity->title)) {
$text = $entity->title;
}
}
}
$tracks[$delta] = l($text, file_create_url($file->uri), $url_options);
}
elseif (isset($item['url'])) {
// A Link file type.
$file = $item['url'];
// Get text to use in link
$text = $item['title'];
if (array_key_exists('text', $settings)) {
if ($settings['text'] == 'description' && !empty($item['description'])) {
$text = $item['title'];
}
else {
if ($settings['text'] == 'title' && !empty($entity->title)) {
$text = $entity->title;
}
}
}
$tracks[$delta] = l($text, file_create_url($item['url']), $url_options);
}
else {
// Get text to use in link
$text = $item['filename'];
if (array_key_exists('text', $settings)) {
if ($settings['text'] == 'description' && !empty($item['description'])) {
$text = $item['description'];
}
else {
if ($settings['text'] == 'title' && !empty($entity->title)) {
$text = $entity->title;
}
}
}
$tracks[$delta] = l($text, file_create_url($item['uri']), $url_options);
}
switch ($display['type']) {
case 'soundmanager2_page_player':
$element[0] = array(
'#theme' => 'soundmanager2_page_player',
'#tracks' => $tracks,
'#attached' => array(
'library' => array(
array(
'soundmanager2',
variable_get('sm2_debug_mode', FALSE) ? 'soundmanager2_debug' : 'soundmanager2',
),
array(
'soundmanager2',
'soundmanager2_page_player',
),
),
),
);
drupal_add_js(array(
'soundmanager2' => array(
'stream' => $settings['stream'],
),
), 'setting');
// Add in the config files
theme('soundmanager2_config');
if ($settings['pause'] == 'stop') {
theme('soundmanager2_page_player_pause');
}
break;
case 'soundmanager2_ui360':
$element[0] = array(
'#theme' => 'soundmanager2_ui360',
'#tracks' => $tracks,
'#settings' => $settings,
'#attached' => array(
'library' => array(
array(
'soundmanager2',
variable_get('sm2_debug_mode', FALSE) ? 'soundmanager2_debug' : 'soundmanager2',
),
array(
'soundmanager2',
'soundmanager2_ui360',
),
),
),
);
// Add relevant JS settings
drupal_add_js(array(
'soundmanager2' => array(
'visualization' => $settings['visualization'],
'waveform' => $settings['waveform'],
'eq' => $settings['eq'],
'amplifier' => $settings['amplifier'],
'stream' => $settings['stream'],
),
), 'setting');
// Add CSS
drupal_add_css('.ui360-vis, .ui360-vis .sm2-360ui, .sm2-inline-list .ui360-vis { width: ' . $settings['diameter'] . 'px; height: ' . $settings['diameter'] . 'px; } .ui360-vis .sm2-timing { line-height: ' . $settings['diameter'] . 'px; } .sm2-inline-list .ui360, .sm2-inline-block .ui360 { margin-bottom: 0; }', 'inline');
drupal_add_css('#sm2-container { height: 0; overflow: hidden; visibility: hidden; }');
// Add in the config files
theme('soundmanager2_config');
theme('soundmanager2_config_ui360');
if ($settings['pause'] == 'stop') {
theme('soundmanager2_config_ui360_pause');
}
break;
case 'soundmanager2_inline_player':
$element[0] = array(
'#theme' => 'soundmanager2_inline_player',
'#tracks' => $tracks,
'#attached' => array(
'library' => array(
array(
'soundmanager2',
variable_get('sm2_debug_mode', FALSE) ? 'soundmanager2_debug' : 'soundmanager2',
),
array(
'soundmanager2',
'soundmanager2_inline_player',
),
),
),
);
drupal_add_js(array(
'soundmanager2' => array(
'stream' => $settings['stream'],
),
), 'setting');
// Add in the config files
theme('soundmanager2_config');
if ($settings['pause'] == 'stop') {
theme('soundmanager2_inline_player_pause');
}
break;
}
}
return $element;
}