From 470cf0dbf81a8aaf02b5bfa1a937950f22a4c6e3 Mon Sep 17 00:00:00 2001 From: Daniel Date: Fri, 9 Mar 2012 18:47:08 -0500 Subject: [PATCH] CC-3395: Play preview for playlists and timelines for shows should show a list under the pop-up player which will play the entire playlist. - Updated jplayer so it now shows a list view under the player which shows details of the track being played, and for playlists the entire playlist list. - Also enabled playing playlists from the library. --- .../application/controllers/ApiController.php | 4 +- .../controllers/LibraryController.php | 8 +- .../controllers/PlaylistController.php | 58 ++- .../playlist/audio-preview-player.phtml | 33 -- .../scripts/playlist/playlist-preview.phtml | 50 ++ .../public/js/airtime/library/library.js | 51 +- .../js/airtime/library/preview_jplayer.js | 35 -- airtime_mvc/public/js/airtime/library/spl.js | 9 - .../public/js/jplayer/jplayer.playlist.min.js | 452 ++++++++++++++++++ .../public/js/jplayer/preview_jplayer.js | 93 ++++ .../jplayer.audio-preview.blue.monday.css | 17 +- 11 files changed, 704 insertions(+), 106 deletions(-) delete mode 100644 airtime_mvc/application/views/scripts/playlist/audio-preview-player.phtml create mode 100644 airtime_mvc/application/views/scripts/playlist/playlist-preview.phtml delete mode 100644 airtime_mvc/public/js/airtime/library/preview_jplayer.js create mode 100644 airtime_mvc/public/js/jplayer/jplayer.playlist.min.js create mode 100644 airtime_mvc/public/js/jplayer/preview_jplayer.js diff --git a/airtime_mvc/application/controllers/ApiController.php b/airtime_mvc/application/controllers/ApiController.php index 40cb57c18..7d54065d1 100644 --- a/airtime_mvc/application/controllers/ApiController.php +++ b/airtime_mvc/application/controllers/ApiController.php @@ -148,7 +148,7 @@ class ApiController extends Zend_Controller_Action header('Content-Disposition: inline; filename="'.$file_base_name.'"'); } - $this->smartReadFile($filepath, $ext); + $this->smartReadFile($filepath, 'audio/'.$ext); exit; }else{ header ("HTTP/1.1 404 Not Found"); @@ -170,7 +170,7 @@ class ApiController extends Zend_Controller_Action * @link https://groups.google.com/d/msg/jplayer/nSM2UmnSKKA/Hu76jDZS4xcJ * @link http://php.net/manual/en/function.readfile.php#86244 */ - function smartReadFile($location, $mimeType = 'audio/mpeg') + function smartReadFile($location, $mimeType = 'audio/mp3') { $size= filesize($location); $time= date('r', filemtime($location)); diff --git a/airtime_mvc/application/controllers/LibraryController.php b/airtime_mvc/application/controllers/LibraryController.php index fd43c9895..3b63d3ce3 100644 --- a/airtime_mvc/application/controllers/LibraryController.php +++ b/airtime_mvc/application/controllers/LibraryController.php @@ -58,7 +58,7 @@ class LibraryController extends Zend_Controller_Action $this->view->headScript()->appendFile($baseUrl.'/js/airtime/buttons/buttons.js?'.$CC_CONFIG['airtime_version'],'text/javascript'); $this->view->headScript()->appendFile($baseUrl.'/js/airtime/library/library.js?'.$CC_CONFIG['airtime_version'],'text/javascript'); $this->view->headScript()->appendFile($baseUrl.'/js/airtime/library/main_library.js?'.$CC_CONFIG['airtime_version'],'text/javascript'); - + $this->view->headLink()->appendStylesheet($baseUrl.'/css/media_library.css?'.$CC_CONFIG['airtime_version']); $this->view->headLink()->appendStylesheet($baseUrl.'/css/jquery.contextMenu.css?'.$CC_CONFIG['airtime_version']); $this->view->headLink()->appendStylesheet($baseUrl.'/css/datatables/css/ColVis.css?'.$CC_CONFIG['airtime_version']); @@ -88,8 +88,7 @@ class LibraryController extends Zend_Controller_Action if (isset($this->pl_sess->id) && $screen == "playlist") { $menu["pl_add"] = array("name"=> "Add to Playlist", "icon" => "copy"); } - //Open a jPlayer window and play the audio clip. - $menu["play"] = array("name"=> "Play", "icon" => "big_play"); + $menu["edit"] = array("name"=> "Edit Metadata", "icon" => "edit", "url" => "/library/edit-file-md/id/{$id}"); @@ -134,6 +133,9 @@ class LibraryController extends Zend_Controller_Action $menu["del"] = array("name"=> "Delete", "icon" => "delete", "url" => "/library/delete"); } + //Open a jPlayer window and play the audio clip. + $menu["play"] = array("name"=> "Play", "icon" => "big_play"); + $this->view->items = $menu; } diff --git a/airtime_mvc/application/controllers/PlaylistController.php b/airtime_mvc/application/controllers/PlaylistController.php index 5351812be..b64189b99 100644 --- a/airtime_mvc/application/controllers/PlaylistController.php +++ b/airtime_mvc/application/controllers/PlaylistController.php @@ -20,6 +20,8 @@ class PlaylistController extends Zend_Controller_Action ->addActionContext('get-playlist-fades', 'json') ->addActionContext('set-playlist-name', 'json') ->addActionContext('set-playlist-description', 'json') + ->addActionContext('playlist-preview', 'json') + ->addActionContext('get-playlist', 'json') ->initContext(); $this->pl_sess = new Zend_Session_Namespace(UI_PLAYLIST_SESSNAME); @@ -196,17 +198,25 @@ class PlaylistController extends Zend_Controller_Action } } - public function audioPreviewPlayerAction() + public function playlistPreviewAction() { - $fileID = $this->_getParam('fileID'); - $playlistIndex = $this->_getParam('index'); - + $audioFileID = $this->_getParam('audioFileID'); + $audioFileArtist = $this->_getParam('audioFileArtist'); + $audioFileTitle = $this->_getParam('audioFileTitle'); + $playlistIndex = $this->_getParam('playlistIndex'); + $playlistID = $this->_getParam('playlistID'); + Logging::log($audioFileID); + Logging::log($audioFileArtist); + Logging::log($audioFileTitle); + Logging::log($playlistIndex); + Logging::log($playlistID); $request = $this->getRequest(); $baseUrl = $request->getBaseUrl(); + $baseDir = dirname($_SERVER['SCRIPT_FILENAME']); - $this->view->headScript()->appendFile($baseUrl.'/js/airtime/library/preview_jplayer.js?'.filemtime($baseDir.'/js/airtime/library/preview_jplayer.js'),'text/javascript'); - $this->view->headScript()->appendFile($baseUrl.'/js/jplayer/jquery.jplayer.min.js?'.filemtime($baseDir.'/js/jplayer/jquery.jplayer.min.js'),'text/javascript'); + $this->view->headScript()->appendFile($baseUrl.'/js/jplayer/preview_jplayer.js?'.filemtime($baseDir.'/js/jplayer/preview_jplayer.js'),'text/javascript'); + $this->view->headScript()->appendFile($baseUrl.'/js/jplayer/jplayer.playlist.min.js?'.filemtime($baseDir.'/js/jplayer/jplayer.playlist.min.js'),'text/javascript'); $this->view->headLink()->appendStylesheet($baseUrl.'/js/jplayer/skin/jplayer.audio-preview.blue.monday.css?'.filemtime($baseDir.'/js/jplayer/skin/jplayer.audio-preview.blue.monday.css')); $this->_helper->layout->setLayout('audioPlayer'); @@ -216,11 +226,43 @@ class PlaylistController extends Zend_Controller_Action } else { $this->view->logo = "$baseUrl/css/images/airtime_logo_jp.png"; } - - $this->view->fileName = $fileID; + Logging::log("The play list index is $playlistIndex"); + $this->view->audioFileID = $audioFileID; + $this->view->audioFileArtist = $audioFileArtist; + $this->view->audioFileTitle = $audioFileTitle; $this->view->playlistIndex= $playlistIndex; + $this->view->playlistID = $playlistID; + } + public function getPlaylistAction(){ + + // disable the view and the layout + $this->view->layout()->disableLayout(); + $this->_helper->viewRenderer->setNoRender(true); + + $playlistID = $this->_getParam('playlistID'); + + if (!isset($playlistID)){ + return; + } + + $pl = new Application_Model_Playlist($playlistID); + $result = Array(); + + foreach ( $pl->getContents() as $track ){ + $trackMap = array( 'title' => isset($track['CcFiles']['track_title'])?$track['CcFiles']['track_title']:"", + 'artist' => isset($track['CcFiles']['artist_name'])?$track['CcFiles']['artist_name']:"", + 'mp3' => '/api/get-media/fileID/'.$track['CcFiles']['gunid'].'.'.pathinfo($track['CcFiles']['filepath'], PATHINFO_EXTENSION), + 'id' => isset($track['id'])?$track['id']:"", + 'position' => isset($track['position'])?$track['position']:"", + ); + $result[] = $trackMap; + } + + $this->_helper->json($result); + } + public function addItemsAction() { $ids = $this->_getParam('ids', array()); diff --git a/airtime_mvc/application/views/scripts/playlist/audio-preview-player.phtml b/airtime_mvc/application/views/scripts/playlist/audio-preview-player.phtml deleted file mode 100644 index cce1ea02b..000000000 --- a/airtime_mvc/application/views/scripts/playlist/audio-preview-player.phtml +++ /dev/null @@ -1,33 +0,0 @@ -
- fileName" ?> - -