Drupal 6: jplayer Modul + jplayer 1.2 loop / repeat Bug beheben

jPlayer Logo, Copyright by http:/jplayer.org

Das Drupal Modul "jPlayer" ist perfekt zur Wiedergabe von Audio-Dateien unter Einbinding als CCK-Formatter zu verwenden.

Die Drupal 6 Version verwendet den jPlayer Version 1.2. Im Gegensatz zur Drupal 7 Version ist dieser leider nicht so gut konfigurierbar und mit einigen Schwächen behaftet. Eine davon die die Endloswiedergabe im "Playlist"-Modus, sofern nur ein Track vorhanden ist. Dieses Problem wollen wir hier lösen.

Problembeschreibung:
Wird die beschriebene Version 1.2 des jPlayers im "Playlist"-Modus verwendet, es wird aber nur ein Titel angeboten, so erfolgt nach Ende der Wiedergabe eine erneute Wiedergabe am Anfang des Stückes.
Es kommt so zu einer Endloswiedergabe / Schleife / Wiederholung.

Analyse:
Grund für den Fehler ist die JavaScript "next"-Funktion im Drupal 6 Modul-Verzeichnis "jplayer" unter "sites/all/modules/jplayer/templates/jplayer.js".
Explizit findet ihr den Fehler in Zeile 100, bei:

  1. .jPlayer('onSoundComplete', function() {
  2.        
  3.       if (playerType == 'playlist') {
  4.         Drupal.jPlayer.next(wrapper, player, playlist, active);
  5.       }
  6.     });

Hier wird automatisch die Wiedergabe des nächsten Titels gestartet.
Existiert kein weiterer Titel, wird jedoch (fälschlicherweise) der Ursprungstitel geliefert und erneut wiedergegeben. Siehe dazu die "next"-Implementierung!

Lösung:
Um das Problem zu beheben, ergänzen wir eine Funktion "hasNext" mit folgender Implementierung:

  1. Drupal.jPlayer.hasNext = function(playlist, current) {
  2.   var index = (current + 1 < playlist.length) ? current + 1 : 0;
  3.   return index != 0;
  4. }

und ergänzen die oben genannte "onSoundComplete" Funktion folgendermaßen:

  1. .jPlayer('onSoundComplete', function() {
  2.       if (playerType == 'playlist' && Drupal.jPlayer.hasNext(playlist, active)) {
  3.         Drupal.jPlayer.next(wrapper, player, playlist, active);
  4.       }
  5.     });

Nun wird die Wiedergabe nur gestartet, wenn es tatsächlich auch einen nächsten Track gibt.

Die vollständige korrigierte jplayer.js - Datei habe ich euch angehängt, dann braucht ihr das Original nur zu überschreiben, um den Fehler auszubügeln.
Aufpassen bei Modul-Updates!!

Viel Spaß mit der Lösung!

p. S. weitere Informationen zur Verwendung des jPlayers unter Drupal findet ihr mit einer netten Anleitung im Blog von Thomas:
http://blog.frobieter.de/content/audio-playback-unter-drupal-mit-playlist

AnhangGröße
jplayer.js5.36 KB

Kommentare

Kommentar hinzufügen

Der Inhalt dieses Feldes wird nicht öffentlich zugänglich angezeigt.

Weitere Informationen über Formatierungsoptionen