You are here

function jplayer_style_plugin::render in jPlayer 6

Same name and namespace in other branches
  1. 7.2 includes/jplayer_style_plugin.inc \jplayer_style_plugin::render()

File

includes/jplayer_style_plugin.inc, line 70
Display style plugin for Views that renders rows as a jPlayer playlist.

Class

jplayer_style_plugin
Style plugin to display a jPlayer playlist.

Code

function render() {
  if (empty($this->row_plugin)) {
    vpr('views_plugin_style_default: Missing row plugin');
    return;
  }
  $view = $this->view;

  // Group the rows according to the grouping field, if specified.
  $sets = $this
    ->render_grouping($this->view->result, $this->options['grouping']);
  $fields = $this->display->handler
    ->get_handlers('field');
  $items = array();
  foreach ($sets as $title => $records) {
    foreach ($records as $row_index => $row) {
      $filepath = NULL;
      $fileid = NULL;
      foreach ($this->options['path_field'] as $field_name) {
        if (isset($row->{$fields[$field_name]->field_alias})) {
          $fileid = $row->{$fields[$field_name]->field_alias};
          break;
        }
      }

      // Get the file path from the file object.
      $file = db_fetch_object(db_query("SELECT filepath FROM {files} WHERE fid = %d", $fileid));
      $filepath = $file->filepath;
      $this->view->row_index = $row_index;
      $label = trim(strip_tags($this->row_plugin
        ->render($row)));
      if (empty($label)) {
        $label = basename($filepath);
      }
      $items[] = array(
        'url' => file_create_url($filepath),
        'label' => $label,
      );
    }
  }
  $output = theme('jplayer_view_playlist', $view, $items);

  // If doing a live preview, add the JavaScript directly to the output.
  if (isset($view->live_preview) && $view->live_preview) {
    $js = drupal_add_js();
    $settings = array();
    foreach ($js['settings'] as $js_settings) {
      if (isset($js_settings['jPlayer'])) {
        $settings = $js_settings['jPlayer'];
        break;
      }
    }
    $output .= "<script type=\"text/javascript\">\n";
    $output .= "Drupal.settings.jPlayer = Drupal.settings.jPlayer || {};\n";
    $output .= "jQuery.extend(Drupal.settings.jPlayer, " . drupal_to_js($settings) . ");\n";
    $output .= "</script>\n";
  }
  unset($view->row_index);
  return $output;
}