? jplayer_d7.patch
Index: jplayer.info
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/jplayer/jplayer.info,v
retrieving revision 1.1
diff -u -p -r1.1 jplayer.info
--- jplayer.info	1 May 2010 04:28:08 -0000	1.1
+++ jplayer.info	25 Oct 2010 23:35:21 -0000
@@ -2,5 +2,7 @@
 name = jPlayer
 description = Provides an HTML5-compatible with Flash-fallback audio player.
 package = User interface
-core = 6.x
-dependencies[] = filefield
+core = 7.x
+dependencies[] = file
+files[] = jplayer.module
+files[] = jplayer.theme.inc
Index: jplayer.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/jplayer/jplayer.module,v
retrieving revision 1.3
diff -u -p -r1.3 jplayer.module
--- jplayer.module	27 Jul 2010 13:27:54 -0000	1.3
+++ jplayer.module	25 Oct 2010 23:35:22 -0000
@@ -15,7 +15,7 @@
 function jplayer_menu() {
   $items = array();
 
-  $items['admin/settings/jplayer'] = array(
+  $items['admin/config/media/jplayer'] = array(
     'title' => 'jPlayer settings',
     'page callback' => 'drupal_get_form',
     'page arguments' => array('jplayer_settings_form'),
@@ -33,7 +33,7 @@ function jplayer_menu() {
 function jplayer_theme() {
   return array(
     'jplayer_formatter_jplayer_single' => array(
-      'arguments' => array('element' => NULL),
+      'variables' => array('items' => NULL, 'player_id' => NULL, 'mode' => NULL),
       'template' => 'theme/jplayer',
       'file' => 'includes/jplayer.theme.inc',
     ),
@@ -56,7 +56,7 @@ function jplayer_theme() {
 function jplayer_views_api() {
   return array(
     'api' => 2,
-    'path' => drupal_get_path('module', 'jplayer') .'/includes',
+    'path' => drupal_get_path('module', 'jplayer') . '/includes',
   );
 }
 
@@ -67,20 +67,51 @@ function jplayer_field_formatter_info() 
   return array(
     'jplayer_single' => array(
       'label' => t('jPlayer player'),
-      'field types' => array('filefield', 'audiofield'),
-      'multiple values' => CONTENT_HANDLE_CORE,
+      'field types' => array('file', 'audiofield'),
       'description' => t('Display an audio file as an HTML5-compatible with Flash-fallback audio player.'),
     ),
     'jplayer_playlist' => array(
       'label' => t('jPlayer multifile playlist'),
-      'field types' => array('filefield', 'audiofield'),
-      'multiple values' => CONTENT_HANDLE_MULTIPLE,
+      'field types' => array('file', 'audiofield'),
       'description' => t('Display multi-value fields as an HTML5-compatible with Flash-fallback audio player.'),
     ),
   );
 }
 
 /**
+ * Implements hook_field_formatter_view().
+ */
+function jplayer_field_formatter_view($entity_type, $entity, $field, $instance, $langcode, $items, $display) {
+  $element = array();
+  list($id, $vid, $bundle) = entity_extract_ids($entity_type, $entity);
+
+  switch ($display['type']) {
+    case 'jplayer_single':
+      foreach ($items as $delta => $item) {
+        $element[$delta] = array(
+          '#theme' => 'jplayer_formatter_jplayer_single',
+          '#mode' => 'single',
+          '#items' => $item,
+          '#player_id' => 'jplayer-' . $id . '-' . str_replace('_', '-', $instance['field_name']) . '-' . $delta,
+        );
+      }
+      break;
+
+    case 'jplayer_playlist':
+      $element = array(
+        '#theme' => 'jplayer_formatter_jplayer_single',
+        '#mode' => 'playlist',
+        '#items' => $items,
+        '#player_id' => 'jplayer-' . $id . '-' . str_replace('_', '-', $instance['field_name']),
+      );
+      break;
+  }
+  $element['#attached'] = jplayer_add(FALSE);
+
+  return $element;
+}
+
+/**
  * Add the jPlayer library to the page.
  *
  * @param $add
@@ -102,10 +133,10 @@ function jplayer_add($add = TRUE) {
   }
 
   if (isset($filepath)) {
-    $jplayer_js = jplayer_get_file_path('jplayer.js');    
-    $jplayer_css = jplayer_get_file_path('jplayer.css'); 
+    $jplayer_js = jplayer_get_file_path('jplayer.js');
+    $jplayer_css = jplayer_get_file_path('jplayer.css');
     $settings = array('jPlayer' => array(
-      'swfPath' => base_path() . variable_get('jplayer_directory', 'sites/all/libraries/jplayer'),
+      'swfPath' => base_path() . $directory,
       'autoPlay' => (int) variable_get('jplayer_autoplay', ''),
     ));
     if ($add) {
@@ -113,7 +144,7 @@ function jplayer_add($add = TRUE) {
       drupal_add_js($jplayer_js);
       drupal_add_css($jplayer_css);
       if (!$added) {
-        drupal_add_js($settings, 'setting');
+        drupal_add_js($settings, array('type' => 'setting'));
         $added = TRUE;
       }
     }
@@ -133,7 +164,7 @@ function jplayer_add($add = TRUE) {
 }
 
 /**
- * Returns path to the most appropriate file 
+ * Returns path to the most appropriate file
  *
  * @param $filename
  *   Name of the file to find
@@ -143,12 +174,12 @@ function jplayer_add($add = TRUE) {
 function jplayer_get_file_path($filename, $required_files = array()) {
   global $theme;
   $theme_dir = drupal_get_path('theme', $theme) . '/jplayer/';
-  $found = false;
+  $found = FALSE;
   if (file_exists($path = $theme_dir . $filename)) {
-    $found = true;
+    $found = TRUE;
     foreach ($required_files as $key => $value) {
       if (!file_exists($theme_dir . $value)) {
-        $found = false;
+        $found = FALSE;
         break;
       }
     }
Index: includes/jplayer.theme.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/jplayer/includes/jplayer.theme.inc,v
retrieving revision 1.2
diff -u -p -r1.2 jplayer.theme.inc
--- includes/jplayer.theme.inc	17 Jun 2010 15:34:52 -0000	1.2
+++ includes/jplayer.theme.inc	25 Oct 2010 23:35:22 -0000
@@ -9,53 +9,35 @@
  * Preprocess function for jplayer.tpl.php when doing a single item.
  */
 function template_preprocess_jplayer_formatter_jplayer_single(&$vars) {
-  jplayer_add();
-
-  $vars['mode'] = 'single';
-  $vars['item'] = array(
-    'url' => file_create_url($vars['element']['#item']['filepath']),
-    'label' => !empty($vars['element']['#item']['data']['description']) ? $vars['element']['#item']['data']['description'] : $vars['element']['#item']['filename'],
-  );
-  $vars['player_id'] = 'jplayer-' . $vars['element']['#node']->nid . '-' . str_replace('_', '-', $vars['element']['#field_name']) . '-' . $vars['element']['#item']['#delta'];
-}
-
-/**
- * Preprocess function for jplayer.tpl.php when using a playlist.
- */
-function template_preprocess_jplayer_formatter_jplayer_playlist(&$vars) {
-  jplayer_add();
-
-  $vars['mode'] = 'playlist';
-  $vars['items'] = array();
-  $children = element_children($vars['element']);
-  $count = count($children);
-  $number = 0;
-  foreach ($children as $key) {
-    $classes = array();
-    if ($number == 0) {
-      $classes[] = 'first';
-      $classes[] = 'jplayer_playlist_item_first';
-    }
-    if ($number == $count - 1) {
-      $classes[] = 'last';
-      $classes[] = 'jplayer_playlist_item_last';
+  if ($vars['mode'] == 'single') {
+    $item = current($vars['items']);
+    $vars['item']['url'] = file_create_url($item['uri']);
+    $vars['item']['label'] = $item['description'] ? $item['description'] : $item['filename'];
+  }
+  elseif ($vars['mode'] == 'playlist') {
+    $count = count($vars['items']);
+    $number = 0;
+    foreach ($vars['items'] as $delta => $item) {
+      $classes = array();
+      if ($number == 0) {
+        $classes[] = 'first';
+        $classes[] = 'jplayer_playlist_item_first';
+      }
+      if ($number == $count - 1) {
+        $classes[] = 'last';
+        $classes[] = 'jplayer_playlist_item_last';
+      }
+      $vars['items'][$delta]['url'] = file_create_url($item['uri']);
+      $vars['items'][$delta]['label'] = $item['description'] ? $item['description'] : $item['filename'];
+      $vars['items'][$delta]['class'] = implode(' ', $classes);
     }
-    $vars['items'][] = array(
-      'class' => implode(' ', $classes),
-      'url' => file_create_url($vars['element'][$key]['#item']['filepath']),
-      'label' => !empty($vars['element'][$key]['#item']['data']['description']) ? $vars['element'][$key]['#item']['data']['description'] : $vars['element'][$key]['#item']['filename'],
-    );
-    $number++;
   }
-  $vars['player_id'] = 'jplayer-' . $vars['element']['#node']->nid . '-' . str_replace('_', '-', $vars['element']['#field_name']);
 }
 
-
 /**
  * Preprocess function for jplayer.tpl.php when displaying a view as a playlist.
  */
 function template_preprocess_jplayer_view_playlist(&$vars) {
-  jplayer_add();
 
   $count = count($vars['items']);
   foreach ($vars['items'] as $number => $item) {
Index: includes/jplayer.views.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/jplayer/includes/jplayer.views.inc,v
retrieving revision 1.1
diff -u -p -r1.1 jplayer.views.inc
--- includes/jplayer.views.inc	1 May 2010 04:28:08 -0000	1.1
+++ includes/jplayer.views.inc	25 Oct 2010 23:35:22 -0000
@@ -5,7 +5,7 @@
  * @file
  * Views module hooks for the jPlayer module.
  */
- 
+
 /**
  * Implementation of hook_views_plugins().
  */
Index: theme/jplayer.js
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/jplayer/theme/jplayer.js,v
retrieving revision 1.2
diff -u -p -r1.2 jplayer.js
--- theme/jplayer.js	18 Jun 2010 16:04:03 -0000	1.2
+++ theme/jplayer.js	25 Oct 2010 23:35:22 -0000
@@ -9,101 +9,103 @@
 
 Drupal.jPlayer = Drupal.jPlayer || { active: false };
 
-Drupal.behaviors.jPlayer = function(context) {
-  $('.jplayer', context).each(function() {
-    var wrapper = $(this).parent().get(0);
-    var player = this;
-    var playerId = this.id;
-    var playerType = $(this).attr('rel') ? 'single' : 'playlist';
-    var playerPlayTime = $(wrapper).find('.jp-play-time').get(0);
-    var playerTotalTime = $(wrapper).find('.jp-total-time').get(0);
-    var active = 0; // The current playlist item.
-    var playlist = []; // An array of DOM element links.
-
-    // Multi-player specific code.
-    if (playerType == 'playlist') {
-
-      // Enable clicking links within the playlist.
-      $(wrapper).find('.jp-playlist li a').each(function(n) {
-        if ($(player).attr('rel') == '') {
-          $(player).attr('rel', this.href);
-        }
-        playlist.push(this);
-        $(this).click(function() {
-          active = n;
-          Drupal.jPlayer.setActive(wrapper, player, playlist, n);
+Drupal.behaviors.jPlayer = {
+  attach: function(context) {
+    $('.jplayer', context).each(function() {
+      var wrapper = $(this).parent().get(0);
+      var player = this;
+      var playerId = this.id;
+      var playerType = $(this).attr('rel') ? 'single' : 'playlist';
+      var playerPlayTime = $(wrapper).find('.jp-play-time').get(0);
+      var playerTotalTime = $(wrapper).find('.jp-total-time').get(0);
+      var active = 0; // The current playlist item.
+      var playlist = []; // An array of DOM element links.
+
+      // Multi-player specific code.
+      if (playerType == 'playlist') {
+
+        // Enable clicking links within the playlist.
+        $(wrapper).find('.jp-playlist li a').each(function(n) {
+          if ($(player).attr('rel') == '') {
+            $(player).attr('rel', this.href);
+          }
+          playlist.push(this);
+          $(this).click(function() {
+            active = n;
+            Drupal.jPlayer.setActive(wrapper, player, playlist, n);
+            Drupal.jPlayer.play(wrapper, player);
+            return false;
+          });
+        });
+
+        // Enable play, pause, and stop buttons.
+        $(wrapper).find('a.jp-play').click(function() {
           Drupal.jPlayer.play(wrapper, player);
           return false;
         });
-      });
-
-      // Enable play, pause, and stop buttons.
-      $(wrapper).find('a.jp-play').click(function() {
-        Drupal.jPlayer.play(wrapper, player);
-        return false;
-      });
-      $(wrapper).find('a.jp-pause').click(function() {
-        Drupal.jPlayer.pause(wrapper, player);
-        return false;
-      });
-      $(wrapper).find('a.jp-stop').click(function() {
-        Drupal.jPlayer.stop(wrapper, player);
-        return false;
-      });
+        $(wrapper).find('a.jp-pause').click(function() {
+          Drupal.jPlayer.pause(wrapper, player);
+          return false;
+        });
+        $(wrapper).find('a.jp-stop').click(function() {
+          Drupal.jPlayer.stop(wrapper, player);
+          return false;
+        });
 
-      // Enable next and previous buttons.
-      $(wrapper).find('a.jp-next').click(function() {
-        active = Drupal.jPlayer.next(wrapper, player, playlist, active);
-        Drupal.jPlayer.play(wrapper, player);
-        return false;
-      });
-      $(wrapper).find('a.jp-previous').click(function() {
-        active = Drupal.jPlayer.previous(wrapper, player, playlist, active);
-        Drupal.jPlayer.play(wrapper, player);
-        return false;
-      });
-    }
+        // Enable next and previous buttons.
+        $(wrapper).find('a.jp-next').click(function() {
+          active = Drupal.jPlayer.next(wrapper, player, playlist, active);
+          Drupal.jPlayer.play(wrapper, player);
+          return false;
+        });
+        $(wrapper).find('a.jp-previous').click(function() {
+          active = Drupal.jPlayer.previous(wrapper, player, playlist, active);
+          Drupal.jPlayer.play(wrapper, player);
+          return false;
+        });
+      }
 
-    // Actually initialize the player.
-    $(player).jPlayer({
-      ready: function() { 
-        this.element.jPlayer('setFile', this.element.attr('rel'));
-        if (Drupal.settings.jPlayer.autoPlay && !Drupal.jPlayer.active) {
-          if (playerType == 'playlist') {
-            Drupal.jPlayer.setActive(wrapper, player, playlist, active);
+      // Actually initialize the player.
+      $(player).jPlayer({
+        ready: function() {
+          this.element.jPlayer('setFile', this.element.attr('rel'));
+          if (Drupal.settings.jPlayer.autoPlay && !Drupal.jPlayer.active) {
+            if (playerType == 'playlist') {
+              Drupal.jPlayer.setActive(wrapper, player, playlist, active);
+            }
+            Drupal.jPlayer.play(wrapper, player);
           }
-          Drupal.jPlayer.play(wrapper, player);
+        },
+        swfPath: Drupal.settings.jPlayer.swfPath,
+        volume: 50,
+        oggSupport: false,
+        nativeSupprt: true
+      })
+      // Set all our custom IDs.
+      .jPlayer('cssId', 'play', playerId + '-play')
+      .jPlayer('cssId', 'pause', playerId + '-pause')
+      .jPlayer('cssId', 'stop', playerId + '-stop')
+      .jPlayer('cssId', 'loadBar', playerId + '-load-bar')
+      .jPlayer('cssId', 'playBar', playerId + '-play-bar')
+      .jPlayer('cssId', 'volumeMin', playerId + '-volume-min')
+      .jPlayer('cssId', 'volumeMax', playerId + '-volume-max')
+      .jPlayer('cssId', 'volumeBar', playerId + '-volume-bar')
+      .jPlayer('cssId', 'volumeBarValue', playerId + '-volume-bar-value')
+      // Register progress functions.
+      .jPlayer('onProgressChange', function(loadPercent, playedPercentRelative, playedPercentAbsolute, playedTime, totalTime) {
+        $(playerPlayTime).text($.jPlayer.convertTime(playedTime));
+        if (totalTime != 0 && totalTime != Number.POSITIVE_INFINITY) {
+          $(playerTotalTime).text($.jPlayer.convertTime(totalTime));
         }
-      },
-      swfPath: Drupal.settings.jPlayer.swfPath,
-      volume: 50,
-      oggSupport: false,
-      nativeSupprt: true
-    })
-    // Set all our custom IDs.
-    .jPlayer('cssId', 'play', playerId + '-play')
-    .jPlayer('cssId', 'pause', playerId + '-pause')
-    .jPlayer('cssId', 'stop', playerId + '-stop')
-    .jPlayer('cssId', 'loadBar', playerId + '-load-bar')
-    .jPlayer('cssId', 'playBar', playerId + '-play-bar')
-    .jPlayer('cssId', 'volumeMin', playerId + '-volume-min')
-    .jPlayer('cssId', 'volumeMax', playerId + '-volume-max')
-    .jPlayer('cssId', 'volumeBar', playerId + '-volume-bar')
-    .jPlayer('cssId', 'volumeBarValue', playerId + '-volume-bar-value')
-    // Register progress functions.
-    .jPlayer('onProgressChange', function(loadPercent, playedPercentRelative, playedPercentAbsolute, playedTime, totalTime) {
-      $(playerPlayTime).text($.jPlayer.convertTime(playedTime));
-      if (totalTime != 0 && totalTime != Number.POSITIVE_INFINITY) {
-        $(playerTotalTime).text($.jPlayer.convertTime(totalTime));
-      }
-    })
-    .jPlayer('onSoundComplete', function() {
-      if (playerType == 'playlist') {
-        Drupal.jPlayer.next(wrapper, player, playlist, active);
-      }
+      })
+      .jPlayer('onSoundComplete', function() {
+        if (playerType == 'playlist') {
+          Drupal.jPlayer.next(wrapper, player, playlist, active);
+        }
+      });
+      $.jPlayer.timeFormat.showHour = true;
     });
-    $.jPlayer.timeFormat.showHour = true;
-  });
+  }
 };
 
 Drupal.jPlayer.setActive = function(wrapper, player, playlist, index) {
