From 815509eb70d7b43422d6e9d311e71c0166164f7a Mon Sep 17 00:00:00 2001 From: martin Date: Mon, 31 Jan 2011 00:50:33 -0500 Subject: [PATCH] -audio preview now works in firefox!! CC-1707 --- application/controllers/ApiController.php | 11 ++- application/controllers/LibraryController.php | 1 + .../views/scripts/partialviews/header.phtml | 1 + .../scripts/playlist/sidebarcontent.phtml | 2 +- public/js/jplayer/Jplayer.swf | Bin 0 -> 7679 bytes public/js/jplayer/jquery.jplayer.min.js | 78 ++++++++++++++++++ public/js/playlist/helperfunctions.js | 67 +++++++++------ 7 files changed, 131 insertions(+), 29 deletions(-) create mode 100644 public/js/jplayer/Jplayer.swf create mode 100644 public/js/jplayer/jquery.jplayer.min.js diff --git a/application/controllers/ApiController.php b/application/controllers/ApiController.php index fb85f94ab..3b1432b7b 100644 --- a/application/controllers/ApiController.php +++ b/application/controllers/ApiController.php @@ -69,6 +69,7 @@ class ApiController extends Zend_Controller_Action $fp = fopen($filepath, 'rb'); $mtype = ''; + /* // magic_mime module installed? if (function_exists('mime_content_type')) { $mtype = mime_content_type($file_path); @@ -81,7 +82,15 @@ class ApiController extends Zend_Controller_Action } //header("Content-Type: $mtype"); - header("Content-Type: audio/mpeg"); + */ + + $ext = pathinfo($filename, PATHINFO_EXTENSION); + if ($ext == "ogg") + header("Content-Type: audio/ogg"); + else if ($ext == "mp3") + header("Content-Type: audio/mpeg"); + + header("Content-Length: " . filesize($filepath)); //header('Content-Disposition: attachment; filename="'.$media->getRealMetadataFileName().'"'); fpassthru($fp); diff --git a/application/controllers/LibraryController.php b/application/controllers/LibraryController.php index 481dc3313..1faf0bd53 100644 --- a/application/controllers/LibraryController.php +++ b/application/controllers/LibraryController.php @@ -34,6 +34,7 @@ class LibraryController extends Zend_Controller_Action $this->view->headScript()->appendFile('/js/contextmenu/jjmenu.js','text/javascript'); $this->view->headScript()->appendFile('/js/playlist/helperfunctions.js','text/javascript'); $this->view->headScript()->appendFile('/js/playlist/playlist.js','text/javascript'); + $this->view->headScript()->appendFile('/js/jplayer/jquery.jplayer.min.js'); $this->view->headLink()->appendStylesheet('/css/contextmenu.css'); $this->view->headLink()->appendStylesheet('/css/pro_dropdown_3.css'); diff --git a/application/views/scripts/partialviews/header.phtml b/application/views/scripts/partialviews/header.phtml index 9a0d5b556..498f62cbc 100644 --- a/application/views/scripts/partialviews/header.phtml +++ b/application/views/scripts/partialviews/header.phtml @@ -34,3 +34,4 @@ +
diff --git a/application/views/scripts/playlist/sidebarcontent.phtml b/application/views/scripts/playlist/sidebarcontent.phtml index 85744234e..321c1441b 100644 --- a/application/views/scripts/playlist/sidebarcontent.phtml +++ b/application/views/scripts/playlist/sidebarcontent.phtml @@ -3,7 +3,7 @@
  • - .mp3/api_key/AAA')"> + CcFiles["name"], PATHINFO_EXTENSION);?>', 'spl_partialCounter-1 ?>')">
    cliplength ?> CcFiles['track_title'] ?> diff --git a/public/js/jplayer/Jplayer.swf b/public/js/jplayer/Jplayer.swf new file mode 100644 index 0000000000000000000000000000000000000000..9487f49b5a6cacf53f320a41c21f94d1cd35feb1 GIT binary patch literal 7679 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 tpEwp3y8olRx)HX3>%G!>fvepFu0cZU';f[1]='';f[2]='';f[3]='';f[4]='';b=document.createElement(d);for(d=0;d0?100*d/this.status.duration:0;if(typeof a.seekable==="object"&&a.seekable.length>0){e=this.status.duration>0?100*a.seekable.end(a.seekable.length-1)/this.status.duration:100;g=100*a.currentTime/a.seekable.end(a.seekable.length-1)}else{e=100;g=f}if(b)f=g=d=0;this.status.seekPercent=e;this.status.currentPercentRelative=g;this.status.currentPercentAbsolute=f;this.status.currentTime=d},_resetStatus:function(){this.status=c.extend({},this.status,c.jPlayer.prototype.status)}, +_trigger:function(a,b,d){a=c.Event(a);a.jPlayer={};a.jPlayer.version=c.extend({},this.version);a.jPlayer.status=c.extend(true,{},this.status);a.jPlayer.html=c.extend(true,{},this.html);a.jPlayer.flash=c.extend(true,{},this.flash);if(b)a.jPlayer.error=c.extend({},b);if(d)a.jPlayer.warning=c.extend({},d);this.element.trigger(a)},jPlayerFlashEvent:function(a,b){if(a===c.jPlayer.event.ready&&!this.internal.ready){this.internal.ready=true;this.version.flash=b.version;this.version.needFlash!==this.version.flash&& +this._error({type:c.jPlayer.error.VERSION,context:this.version.flash,message:c.jPlayer.errorMsg.VERSION+this.version.flash,hint:c.jPlayer.errorHint.VERSION});this._trigger(a)}if(this.flash.gate)switch(a){case c.jPlayer.event.progress:this._getFlashStatus(b);this._updateInterface();this._trigger(a);break;case c.jPlayer.event.timeupdate:this._getFlashStatus(b);this._updateInterface();this._trigger(a);break;case c.jPlayer.event.play:this._seeked();this._updateButtons(true);this._trigger(a);break;case c.jPlayer.event.pause:this._updateButtons(false); +this._trigger(a);break;case c.jPlayer.event.ended:this._updateButtons(false);this._trigger(a);break;case c.jPlayer.event.error:this.status.waitForLoad=true;this.status.waitForPlay=true;this.status.video&&this.internal.flash.jq.css({width:"0px",height:"0px"});this._validString(this.status.media.poster)&&this.internal.poster.jq.show();this.css.jq.videoPlay.length&&this.css.jq.videoPlay.show();this.status.video?this._flash_setVideo(this.status.media):this._flash_setAudio(this.status.media);this._error({type:c.jPlayer.error.URL, +context:b.src,message:c.jPlayer.errorMsg.URL,hint:c.jPlayer.errorHint.URL});break;case c.jPlayer.event.seeking:this._seeking();this._trigger(a);break;case c.jPlayer.event.seeked:this._seeked();this._trigger(a);break;default:this._trigger(a)}return false},_getFlashStatus:function(a){this.status.seekPercent=a.seekPercent;this.status.currentPercentRelative=a.currentPercentRelative;this.status.currentPercentAbsolute=a.currentPercentAbsolute;this.status.currentTime=a.currentTime;this.status.duration=a.duration}, +_updateButtons:function(a){this.status.paused=!a;if(this.css.jq.play.length&&this.css.jq.pause.length)if(a){this.css.jq.play.hide();this.css.jq.pause.show()}else{this.css.jq.play.show();this.css.jq.pause.hide()}},_updateInterface:function(){this.css.jq.seekBar.length&&this.css.jq.seekBar.width(this.status.seekPercent+"%");this.css.jq.playBar.length&&this.css.jq.playBar.width(this.status.currentPercentRelative+"%");this.css.jq.currentTime.length&&this.css.jq.currentTime.text(c.jPlayer.convertTime(this.status.currentTime)); +this.css.jq.duration.length&&this.css.jq.duration.text(c.jPlayer.convertTime(this.status.duration))},_seeking:function(){this.css.jq.seekBar.length&&this.css.jq.seekBar.addClass("jp-seeking-bg")},_seeked:function(){this.css.jq.seekBar.length&&this.css.jq.seekBar.removeClass("jp-seeking-bg")},setMedia:function(a){var b=this;this._seeked();clearTimeout(this.internal.htmlDlyCmdId);var d=this.html.audio.gate,f=this.html.video.gate,e=false;c.each(this.formats,function(g,i){var j=b.format[i].media==="video"; +c.each(b.solutions,function(n,k){if(b[k].support[i]&&b._validString(a[i])){var l=k==="html";if(j)if(l){b.html.audio.gate=false;b.html.video.gate=true;b.flash.gate=false}else{b.html.audio.gate=false;b.html.video.gate=false;b.flash.gate=true}else if(l){b.html.audio.gate=true;b.html.video.gate=false;b.flash.gate=false}else{b.html.audio.gate=false;b.html.video.gate=false;b.flash.gate=true}if(b.flash.active||b.html.active&&b.flash.gate||d===b.html.audio.gate&&f===b.html.video.gate)b.clearMedia();else if(d!== +b.html.audio.gate&&f!==b.html.video.gate){b._html_pause();b.status.video&&b.internal.video.jq.css({width:"0px",height:"0px"});b._resetStatus()}if(j){if(l){b._html_setVideo(a);b.html.active=true;b.flash.active=false}else{b._flash_setVideo(a);b.html.active=false;b.flash.active=true}b.css.jq.videoPlay.length&&b.css.jq.videoPlay.show();b.status.video=true}else{if(l){b._html_setAudio(a);b.html.active=true;b.flash.active=false}else{b._flash_setAudio(a);b.html.active=false;b.flash.active=true}b.css.jq.videoPlay.length&& +b.css.jq.videoPlay.hide();b.status.video=false}e=true;return false}});if(e)return false});if(e){if(this._validString(a.poster))if(this.htmlElement.poster.src!==a.poster)this.htmlElement.poster.src=a.poster;else this.internal.poster.jq.show();else this.internal.poster.jq.hide();this.status.srcSet=true;this.status.media=c.extend({},a);this._updateButtons(false);this._updateInterface()}else{this.status.srcSet&&!this.status.waitForPlay&&this.pause();this.html.audio.gate=false;this.html.video.gate=false; +this.flash.gate=false;this.html.active=false;this.flash.active=false;this._resetStatus();this._updateInterface();this._updateButtons(false);this.internal.poster.jq.hide();this.html.used&&this.require.video&&this.internal.video.jq.css({width:"0px",height:"0px"});this.flash.used&&this.internal.flash.jq.css({width:"0px",height:"0px"});this._error({type:c.jPlayer.error.NO_SUPPORT,context:"{supplied:'"+this.options.supplied+"'}",message:c.jPlayer.errorMsg.NO_SUPPORT,hint:c.jPlayer.errorHint.NO_SUPPORT})}}, +clearMedia:function(){this._resetStatus();this._updateButtons(false);this.internal.poster.jq.hide();clearTimeout(this.internal.htmlDlyCmdId);if(this.html.active)this._html_clearMedia();else this.flash.active&&this._flash_clearMedia()},load:function(){if(this.status.srcSet)if(this.html.active)this._html_load();else this.flash.active&&this._flash_load();else this._urlNotSetError("load")},play:function(a){a=typeof a==="number"?a:NaN;if(this.status.srcSet)if(this.html.active)this._html_play(a);else this.flash.active&& +this._flash_play(a);else this._urlNotSetError("play")},videoPlay:function(){this.play()},pause:function(a){a=typeof a==="number"?a:NaN;if(this.status.srcSet)if(this.html.active)this._html_pause(a);else this.flash.active&&this._flash_pause(a);else this._urlNotSetError("pause")},pauseOthers:function(){var a=this;c.each(this.instances,function(b,d){a.element!==d&&d.data("jPlayer").status.srcSet&&d.jPlayer("pause")})},stop:function(){if(this.status.srcSet)if(this.html.active)this._html_pause(0);else this.flash.active&& +this._flash_pause(0);else this._urlNotSetError("stop")},playHead:function(a){a=this._limitValue(a,0,100);if(this.status.srcSet)if(this.html.active)this._html_playHead(a);else this.flash.active&&this._flash_playHead(a);else this._urlNotSetError("playHead")},mute:function(){this.status.muted=true;this.html.used&&this._html_mute(true);this.flash.used&&this._flash_mute(true);this._updateMute(true);this._updateVolume(0);this._trigger(c.jPlayer.event.volumechange)},unmute:function(){this.status.muted=false; +this.html.used&&this._html_mute(false);this.flash.used&&this._flash_mute(false);this._updateMute(false);this._updateVolume(this.status.volume);this._trigger(c.jPlayer.event.volumechange)},_updateMute:function(a){if(this.css.jq.mute.length&&this.css.jq.unmute.length)if(a){this.css.jq.mute.hide();this.css.jq.unmute.show()}else{this.css.jq.mute.show();this.css.jq.unmute.hide()}},volume:function(a){a=this._limitValue(a,0,1);this.status.volume=a;this.html.used&&this._html_volume(a);this.flash.used&&this._flash_volume(a); +this.status.muted||this._updateVolume(a);this._trigger(c.jPlayer.event.volumechange)},volumeBar:function(a){if(!this.status.muted&&this.css.jq.volumeBar){var b=this.css.jq.volumeBar.offset();a=a.pageX-b.left;b=this.css.jq.volumeBar.width();this.volume(a/b)}},volumeBarValue:function(a){this.volumeBar(a)},_updateVolume:function(a){this.css.jq.volumeBarValue.length&&this.css.jq.volumeBarValue.width(a*100+"%")},_volumeFix:function(a){var b=0.0010*Math.random();return a+(a<0.5?b:-b)},_cssSelectorAncestor:function(a, +b){this.options.cssSelectorAncestor=a;b&&c.each(this.options.cssSelector,function(d,f){self._cssSelector(d,f)})},_cssSelector:function(a,b){var d=this;if(typeof b==="string")if(c.jPlayer.prototype.options.cssSelector[a]){this.css.jq[a]&&this.css.jq[a].length&&this.css.jq[a].unbind(".jPlayer");this.options.cssSelector[a]=b;this.css.cs[a]=this.options.cssSelectorAncestor+" "+b;this.css.jq[a]=b?c(this.css.cs[a]):[];this.css.jq[a].length&&this.css.jq[a].bind("click.jPlayer",function(f){d[a](f);c(this).blur(); +return false});b&&this.css.jq[a].length!==1&&this._warning({type:c.jPlayer.warning.CSS_SELECTOR_COUNT,context:this.css.cs[a],message:c.jPlayer.warningMsg.CSS_SELECTOR_COUNT+this.css.jq[a].length+" found for "+a+" method.",hint:c.jPlayer.warningHint.CSS_SELECTOR_COUNT})}else this._warning({type:c.jPlayer.warning.CSS_SELECTOR_METHOD,context:a,message:c.jPlayer.warningMsg.CSS_SELECTOR_METHOD,hint:c.jPlayer.warningHint.CSS_SELECTOR_METHOD});else this._warning({type:c.jPlayer.warning.CSS_SELECTOR_STRING, +context:b,message:c.jPlayer.warningMsg.CSS_SELECTOR_STRING,hint:c.jPlayer.warningHint.CSS_SELECTOR_STRING})},seekBar:function(a){if(this.css.jq.seekBar){var b=this.css.jq.seekBar.offset();a=a.pageX-b.left;b=this.css.jq.seekBar.width();this.playHead(100*a/b)}},playBar:function(a){this.seekBar(a)},currentTime:function(){},duration:function(){},option:function(a,b){var d=a;if(arguments.length===0)return c.extend(true,{},this.options);if(typeof a==="string"){var f=a.split(".");if(b===h){for(var e=c.extend(true, +{},this.options),g=0;g=9||this.htmlElement.media.load()}},_html_load:function(){if(this.status.waitForLoad){this.status.waitForLoad=false;this.htmlElement.media.src=this.status.src; +try{this.htmlElement.media.load()}catch(a){}}clearTimeout(this.internal.htmlDlyCmdId)},_html_play:function(a){var b=this;this._html_load();this.htmlElement.media.play();if(!isNaN(a))try{this.htmlElement.media.currentTime=a}catch(d){this.internal.htmlDlyCmdId=setTimeout(function(){b.play(a)},100);return}this._html_checkWaitForPlay()},_html_pause:function(a){var b=this;a>0?this._html_load():clearTimeout(this.internal.htmlDlyCmdId);this.htmlElement.media.pause();if(!isNaN(a))try{this.htmlElement.media.currentTime= +a}catch(d){this.internal.htmlDlyCmdId=setTimeout(function(){b.pause(a)},100);return}a>0&&this._html_checkWaitForPlay()},_html_playHead:function(a){var b=this;this._html_load();try{if(typeof this.htmlElement.media.seekable==="object"&&this.htmlElement.media.seekable.length>0)this.htmlElement.media.currentTime=a*this.htmlElement.media.seekable.end(this.htmlElement.media.seekable.length-1)/100;else if(this.htmlElement.media.duration>0&&!isNaN(this.htmlElement.media.duration))this.htmlElement.media.currentTime= +a*this.htmlElement.media.duration/100;else throw"e";}catch(d){this.internal.htmlDlyCmdId=setTimeout(function(){b.playHead(a)},100);return}this.status.waitForLoad||this._html_checkWaitForPlay()},_html_checkWaitForPlay:function(){if(this.status.waitForPlay){this.status.waitForPlay=false;this.css.jq.videoPlay.length&&this.css.jq.videoPlay.hide();if(this.status.video){this.internal.poster.jq.hide();this.internal.video.jq.css({width:this.status.width,height:this.status.height})}}},_html_volume:function(a){if(this.html.audio.available)this.htmlElement.audio.volume= +a;if(this.html.video.available)this.htmlElement.video.volume=a},_html_mute:function(a){if(this.html.audio.available)this.htmlElement.audio.muted=a;if(this.html.video.available)this.htmlElement.video.muted=a},_flash_setAudio:function(a){var b=this;try{c.each(this.formats,function(f,e){if(b.flash.support[e]&&a[e]){switch(e){case "m4a":b._getMovie().fl_setAudio_m4a(a[e]);break;case "mp3":b._getMovie().fl_setAudio_mp3(a[e])}b.status.src=a[e];b.status.format[e]=true;b.status.formatType=e;return false}}); +if(this.options.preload==="auto"){this._flash_load();this.status.waitForLoad=false}}catch(d){this._flashError(d)}},_flash_setVideo:function(a){var b=this;try{c.each(this.formats,function(f,e){if(b.flash.support[e]&&a[e]){switch(e){case "m4v":b._getMovie().fl_setVideo_m4v(a[e])}b.status.src=a[e];b.status.format[e]=true;b.status.formatType=e;return false}});if(this.options.preload==="auto"){this._flash_load();this.status.waitForLoad=false}}catch(d){this._flashError(d)}},_flash_clearMedia:function(){this.internal.flash.jq.css({width:"0px", +height:"0px"});try{this._getMovie().fl_clearMedia()}catch(a){this._flashError(a)}},_flash_load:function(){try{this._getMovie().fl_load()}catch(a){this._flashError(a)}this.status.waitForLoad=false},_flash_play:function(a){try{this._getMovie().fl_play(a)}catch(b){this._flashError(b)}this.status.waitForLoad=false;this._flash_checkWaitForPlay()},_flash_pause:function(a){try{this._getMovie().fl_pause(a)}catch(b){this._flashError(b)}if(a>0){this.status.waitForLoad=false;this._flash_checkWaitForPlay()}}, +_flash_playHead:function(a){try{this._getMovie().fl_play_head(a)}catch(b){this._flashError(b)}this.status.waitForLoad||this._flash_checkWaitForPlay()},_flash_checkWaitForPlay:function(){if(this.status.waitForPlay){this.status.waitForPlay=false;this.css.jq.videoPlay.length&&this.css.jq.videoPlay.hide();if(this.status.video){this.internal.poster.jq.hide();this.internal.flash.jq.css({width:this.status.width,height:this.status.height})}}},_flash_volume:function(a){try{this._getMovie().fl_volume(a)}catch(b){this._flashError(b)}}, +_flash_mute:function(a){try{this._getMovie().fl_mute(a)}catch(b){this._flashError(b)}},_getMovie:function(){return document[this.internal.flash.id]},_checkForFlash:function(a){var b=false,d;if(window.ActiveXObject)try{new ActiveXObject("ShockwaveFlash.ShockwaveFlash."+a);b=true}catch(f){}else if(navigator.plugins&&navigator.mimeTypes.length>0)if(d=navigator.plugins["Shockwave Flash"])if(navigator.plugins["Shockwave Flash"].description.replace(/.*\s(\d+\.\d+).*/,"$1")>=a)b=true;return c.browser.msie&& +Number(c.browser.version)>=9?false:b},_validString:function(a){return a&&typeof a==="string"},_limitValue:function(a,b,d){return ad?d:a},_urlNotSetError:function(a){this._error({type:c.jPlayer.error.URL_NOT_SET,context:a,message:c.jPlayer.errorMsg.URL_NOT_SET,hint:c.jPlayer.errorHint.URL_NOT_SET})},_flashError:function(a){this._error({type:c.jPlayer.error.FLASH,context:this.internal.flash.swf,message:c.jPlayer.errorMsg.FLASH+a.message,hint:c.jPlayer.errorHint.FLASH})},_error:function(a){this._trigger(c.jPlayer.event.error, +a);if(this.options.errorAlerts)this._alert("Error!"+(a.message?"\n\n"+a.message:"")+(a.hint?"\n\n"+a.hint:"")+"\n\nContext: "+a.context)},_warning:function(a){this._trigger(c.jPlayer.event.warning,h,a);if(this.options.errorAlerts)this._alert("Warning!"+(a.message?"\n\n"+a.message:"")+(a.hint?"\n\n"+a.hint:"")+"\n\nContext: "+a.context)},_alert:function(a){alert("jPlayer "+this.version.script+" : id='"+this.internal.self.id+"' : "+a)}};c.jPlayer.error={FLASH:"e_flash",NO_SOLUTION:"e_no_solution",NO_SUPPORT:"e_no_support", +URL:"e_url",URL_NOT_SET:"e_url_not_set",VERSION:"e_version"};c.jPlayer.errorMsg={FLASH:"jPlayer's Flash fallback is not configured correctly, or a command was issued before the jPlayer Ready event. Details: ",NO_SOLUTION:"No solution can be found by jPlayer in this browser. Neither HTML nor Flash can be used.",NO_SUPPORT:"It is not possible to play any media format provided in setMedia() on this browser using your current options.",URL:"Media URL could not be loaded.",URL_NOT_SET:"Attempt to issue media playback commands, while no media url is set.", +VERSION:"jPlayer "+c.jPlayer.prototype.version.script+" needs Jplayer.swf version "+c.jPlayer.prototype.version.needFlash+" but found "};c.jPlayer.errorHint={FLASH:"Check your swfPath option and that Jplayer.swf is there.",NO_SOLUTION:"Review the jPlayer options: support and supplied.",NO_SUPPORT:"Video or audio formats defined in the supplied option are missing.",URL:"Check media URL is valid.",URL_NOT_SET:"Use setMedia() to set the media URL.",VERSION:"Update jPlayer files."};c.jPlayer.warning= +{CSS_SELECTOR_COUNT:"e_css_selector_count",CSS_SELECTOR_METHOD:"e_css_selector_method",CSS_SELECTOR_STRING:"e_css_selector_string",OPTION_KEY:"e_option_key"};c.jPlayer.warningMsg={CSS_SELECTOR_COUNT:"The number of methodCssSelectors found did not equal one: ",CSS_SELECTOR_METHOD:"The methodName given in jPlayer('cssSelector') is not a valid jPlayer method.",CSS_SELECTOR_STRING:"The methodCssSelector given in jPlayer('cssSelector') is not a String or is empty.",OPTION_KEY:"The option requested in jPlayer('option') is undefined."}; +c.jPlayer.warningHint={CSS_SELECTOR_COUNT:"Check your css selector and the ancestor.",CSS_SELECTOR_METHOD:"Check your method name.",CSS_SELECTOR_STRING:"Check your css selector is a string.",OPTION_KEY:"Check your option name."}})(jQuery); \ No newline at end of file diff --git a/public/js/playlist/helperfunctions.js b/public/js/playlist/helperfunctions.js index 3e432c77a..c073515ff 100644 --- a/public/js/playlist/helperfunctions.js +++ b/public/js/playlist/helperfunctions.js @@ -100,36 +100,49 @@ function convertDateToPosixTime(s){ return Date.UTC(year, month, day, hour, minute, sec, msec); } -/* This function decides whether a song should be played or stopped. - * It decides the current state of music through the presence/absence - * of the