Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- * @file
- * Drupal behaviors for the jPlayer audio player.
- *
- * Significant modifcations made by Derek Duoba
- * 9-6-2011
- */
- (function ($) {
- 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.
- // Custom variables to implement continuous play
- // Get the next player element
- var next = $(this).next();
- // Get the preceeding player element
- var previous = $(this).prev();
- // This is the URL of the current element
- var url = $(this).attr('rel');
- // Multi-player specific code.
- if (playerType == 'playlist') {
- // Enable clicking links within the playlist. (This has been modified to allow link element clicks)
- $(wrapper).find('.jp-playlist li a.track_info').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;
- });
- });
- // CUSTOM CODE Change track title on click in playlist players
- $(wrapper).find('.jp-playlist li a.track_info').click(function() {
- //var $this = $(this);
- var $this = $('.jp-playlist li.jplayer_playlist_current a.track_info');
- var $trackname = $('.trackname span').fadeOut(300, function () {
- $trackname.text($this.text());
- //marquee('.trackname span');
- $trackname.fadeIn(300);
- });
- 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;
- });
- // 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);
- var $this = $('.jp-playlist li.jplayer_playlist_current a.track_info');
- var $trackname = $('.trackname span').fadeOut(300, function() {
- $trackname.text($this.text());
- $trackname.fadeIn(300);
- });
- return false;
- });
- $(wrapper).find('a.jp-previous').click(function() {
- active = Drupal.jPlayer.previous(wrapper, player, playlist, active);
- Drupal.jPlayer.play(wrapper, player);
- var $this = $('.jp-playlist li.jplayer_playlist_current a.track_info');
- var $trackname = $('.trackname span').fadeOut(300, function() {
- $trackname.text($this.text());
- $trackname.fadeIn(300);
- });
- return false;
- });
- } else if (playerType == 'single') {
- // CUSTOM CODE add "active" to the current single player's class
- $(wrapper).find('a.jp-play').click(function() {
- //Drupal.jPlayer.play(wrapper, player);
- $(wrapper).find('.jp-title').addClass('active');
- 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);
- }
- 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));
- }
- })
- .jPlayer('onSoundComplete', function() {
- if (playerType == 'playlist') {
- Drupal.jPlayer.next(wrapper, player, playlist, active);
- var $this = $('.jp-playlist li.jplayer_playlist_current a.track_info');
- var $trackname = $('.trackname span').fadeOut(300, function() {
- $trackname.text($this.text());
- $trackname.fadeIn(300);
- });
- return false;
- }
- // Implement the option of continuous play with "single" players when there is more than one player on a page
- else if (playerType == 'single') { // && current != current.last()
- //var $previous = $('.content').find('.jp-title').removeClass('active');
- Drupal.jPlayer.continuousNext(wrapper, player);
- }
- });
- $.jPlayer.timeFormat.showHour = true;
- });
- };
- Drupal.jPlayer.setActive = function(wrapper, player, playlist, index) {
- $(wrapper).find('.jplayer_playlist_current').removeClass('jplayer_playlist_current');
- $(playlist[index]).parent().addClass('jplayer_playlist_current');
- $(player).jPlayer('setFile', playlist[index].href);
- };
- Drupal.jPlayer.play = function(wrapper, player) {
- $(player).jPlayer('play');
- Drupal.jPlayer.active = true;
- }
- Drupal.jPlayer.pause = function(wrapper, player) {
- $(player).jPlayer('pause');
- Drupal.jPlayer.active = false;
- }
- Drupal.jPlayer.stop = function(wrapper, player) {
- $(player).jPlayer('stop');
- Drupal.jPlayer.active = false;
- }
- Drupal.jPlayer.next = function(wrapper, player, playlist, current) {
- var index = (current + 1 < playlist.length) ? current + 1 : 0;
- Drupal.jPlayer.setActive(wrapper, player, playlist, index);
- Drupal.jPlayer.play(wrapper, player);
- return index;
- }
- Drupal.jPlayer.previous = function(wrapper, player, playlist, current) {
- var index = (current - 1 >= 0) ? current - 1 : playlist.length - 1;
- Drupal.jPlayer.setActive(wrapper, player, playlist, index);
- Drupal.jPlayer.play(wrapper, player);
- return index;
- }
- // CUSTOM CODE: Allow for continuous play by setting up the next element
- Drupal.jPlayer.continuousNext = function(wrapper, player) {
- Drupal.jPlayer.continuousSetActive($(player).next);
- Drupal.jPlayer.play($(player).next.wrapper, player.next);
- $(wrapper).find('.jp-title').addClass('active');
- };
- // CUSTOM CODE: Allow for moving backwards during continuous play by setting up the previous element
- Drupal.jPlayer.continuousPrevious = function(wrapper, player) {
- Drupal.jPlayer.continuousSetActive($(player).previous);
- Drupal.jPlayer.play($(player).previous.wrapper, $(player).previous);
- $(wrapper).find('.jp-title').addClass('active');
- };
- // CUSTOM CODE: Allow for continuous play by setting up the relevant item to "active"
- Drupal.jPlayer.continuousSetActive = function(player) {
- //$(player).jPlayer('setFile', $(player).url);
- $(player).jPlayer('setFile', 'http://testsite.inyourspeakers.com/files/test_music/BeachesBeaches - FourFour - 01 lovelove.mp3');
- var $old = $('.content').find('.jp-title').removeClass('active');
- };
- /*
- // CUSTOM CODE Insert marquee tags into playlist player title entries when necessary
- marquee = function(classname) {
- if ($(classname).text().length >= 35) {
- $(classname).wrap('<marquee scrollamount="2" behavior="alternate" direction="left" width="" onmouseover="this.start();" onmouseout="this.stop();">');
- };
- };
- */
- })(jQuery);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement