From 4595da90876d55218dac9bf09a60a47a1149d71e Mon Sep 17 00:00:00 2001 From: james Date: Thu, 15 Mar 2012 14:29:31 -0400 Subject: [PATCH 1/4] CC-3452: Live Stream: DJs assigned to the show and Program Managers should be able to control switches and able to kick out connection - kickout buttons and switch buttons are now visible to everyone. - clicking buttons without correct permission will return proper error msg. --- .../controllers/DashboardController.php | 67 ++++++++++++++----- .../application/layouts/scripts/builder.phtml | 4 +- .../application/layouts/scripts/layout.phtml | 5 +- .../application/layouts/scripts/library.phtml | 4 +- .../layouts/scripts/playouthistory.phtml | 4 +- airtime_mvc/application/models/User.php | 4 ++ .../application/views/helpers/IsAdmin.php | 11 --- .../views/helpers/IsPermissionAllowed.php | 18 +++++ .../views/scripts/partialviews/header.phtml | 10 +-- .../public/js/airtime/dashboard/playlist.js | 33 ++++----- 10 files changed, 98 insertions(+), 62 deletions(-) delete mode 100644 airtime_mvc/application/views/helpers/IsAdmin.php create mode 100644 airtime_mvc/application/views/helpers/IsPermissionAllowed.php diff --git a/airtime_mvc/application/controllers/DashboardController.php b/airtime_mvc/application/controllers/DashboardController.php index 54aa1bfa9..9a30348a2 100644 --- a/airtime_mvc/application/controllers/DashboardController.php +++ b/airtime_mvc/application/controllers/DashboardController.php @@ -18,31 +18,66 @@ class DashboardController extends Zend_Controller_Action public function disconnectSourceAction(){ $request = $this->getRequest(); - $sourcename = $request->getParam('sourcename'); - $data = array("sourcename"=>$sourcename); - Application_Model_RabbitMq::SendMessageToPypo("disconnect_source", $data); + + $userInfo = Zend_Auth::getInstance()->getStorage()->read(); + $user = new Application_Model_User($userInfo->id); + + $show = Application_Model_Show::GetCurrentShow(); + + $show_id = isset($show['id'])?$show['id']:0; + + $source_connected = Application_Model_Preference::GetSourceStatus($sourcename); + + if($user->canSchedule($show_id) && $source_connected){ + $data = array("sourcename"=>$sourcename); + Application_Model_RabbitMq::SendMessageToPypo("disconnect_source", $data); + }else{ + if($source_connected){ + $this->view->error = "You don't have permission to disconnect source."; + }else{ + $this->view->error = "There is no source connected to this input."; + } + } } public function switchSourceAction(){ $request = $this->getRequest(); - $sourcename = $this->_getParam('sourcename'); $current_status = $this->_getParam('status'); - $change_status_to = "on"; - if(strtolower($current_status) == "on"){ - $change_status_to = "off"; + $userInfo = Zend_Auth::getInstance()->getStorage()->read(); + $user = new Application_Model_User($userInfo->id); + + $show = Application_Model_Show::GetCurrentShow(); + $show_id = isset($show['id'])?$show['id']:0; + + $source_connected = Application_Model_Preference::GetSourceStatus($sourcename); + + if($user->canSchedule($show_id) && ($source_connected || $sourcename == 'scheduled_play')){ + + $change_status_to = "on"; + + if(strtolower($current_status) == "on"){ + $change_status_to = "off"; + } + + $data = array("sourcename"=>$sourcename, "status"=>$change_status_to); + Application_Model_RabbitMq::SendMessageToPypo("switch_source", $data); + if(strtolower($current_status) == "on"){ + Application_Model_Preference::SetSourceSwitchStatus($sourcename, "off"); + $this->view->status = "OFF"; + }else{ + Application_Model_Preference::SetSourceSwitchStatus($sourcename, "on"); + $this->view->status = "ON"; + } } - - $data = array("sourcename"=>$sourcename, "status"=>$change_status_to); - Application_Model_RabbitMq::SendMessageToPypo("switch_source", $data); - if(strtolower($current_status) == "on"){ - Application_Model_Preference::SetSourceSwitchStatus($sourcename, "off"); - $this->view->status = "OFF"; - }else{ - Application_Model_Preference::SetSourceSwitchStatus($sourcename, "on"); - $this->view->status = "ON"; + else{ + if($source_connected){ + $this->view->error = "You don't have permission to switch source."; + }else{ + $this->view->error = "There is no source connected to this input."; + } } } diff --git a/airtime_mvc/application/layouts/scripts/builder.phtml b/airtime_mvc/application/layouts/scripts/builder.phtml index 5f13b0f67..1293cb873 100644 --- a/airtime_mvc/application/layouts/scripts/builder.phtml +++ b/airtime_mvc/application/layouts/scripts/builder.phtml @@ -13,11 +13,11 @@ versionNotify(); $sss = $this->SourceSwitchStatus(); $scs = $this->SourceConnectionStatus(); - $isAdmin = $this->isAdmin(); + $isPermissionAllowed = $this->IsPermissionAllowed(); ?> partial('partialviews/header.phtml', array("user" => $this->loggedInAs(), "is_trial"=>$this->isTrial(), "trial_remain"=> $this->trialRemaining(), "live_dj_switch"=>$sss['live_dj'], "live_dj_connection"=>$scs['live_dj'], "master_dj_switch"=>$sss['master_dj'], "master_dj_connection"=>$scs['master_dj'], - "scheduled_play_switch"=>$sss['scheduled_play'], "isAdmin"=>$isAdmin)) ?> + "scheduled_play_switch"=>$sss['scheduled_play'], "isPermissionAllowed"=>$isPermissionAllowed)) ?> navigation()->menu()->setPartial($partial); ?> diff --git a/airtime_mvc/application/layouts/scripts/layout.phtml b/airtime_mvc/application/layouts/scripts/layout.phtml index d074b921d..f2cdf2b4b 100644 --- a/airtime_mvc/application/layouts/scripts/layout.phtml +++ b/airtime_mvc/application/layouts/scripts/layout.phtml @@ -14,12 +14,11 @@ versionNotify(); $sss = $this->SourceSwitchStatus(); $scs = $this->SourceConnectionStatus(); - $isAdmin = $this->isAdmin(); + $isPermissionAllowed = $this->IsPermissionAllowed(); ?> partial('partialviews/header.phtml', array("user" => $this->loggedInAs(), "is_trial"=>$this->isTrial(), "trial_remain"=> $this->trialRemaining(), "live_dj_switch"=>$sss['live_dj'], "live_dj_connection"=>$scs['live_dj'], "master_dj_switch"=>$sss['master_dj'], "master_dj_connection"=>$scs['master_dj'], - "scheduled_play_switch"=>$sss['scheduled_play'], "isAdmin"=>$isAdmin)) ?> - + "scheduled_play_switch"=>$sss['scheduled_play'], "isPermissionAllowed"=>$isPermissionAllowed)) ?> navigation()->menu()->setPartial($partial); ?> diff --git a/airtime_mvc/application/layouts/scripts/library.phtml b/airtime_mvc/application/layouts/scripts/library.phtml index e3a2748e1..fb411f40f 100644 --- a/airtime_mvc/application/layouts/scripts/library.phtml +++ b/airtime_mvc/application/layouts/scripts/library.phtml @@ -14,11 +14,11 @@ versionNotify(); $sss = $this->SourceSwitchStatus(); $scs = $this->SourceConnectionStatus(); - $isAdmin = $this->isAdmin(); + $isPermissionAllowed = $this->IsPermissionAllowed(); ?> partial('partialviews/header.phtml', array("user" => $this->loggedInAs(), "is_trial"=>$this->isTrial(), "trial_remain"=> $this->trialRemaining(), "live_dj_switch"=>$sss['live_dj'], "live_dj_connection"=>$scs['live_dj'], "master_dj_switch"=>$sss['master_dj'], "master_dj_connection"=>$scs['master_dj'], - "scheduled_play_switch"=>$sss['scheduled_play'], "isAdmin"=>$isAdmin)) ?> + "scheduled_play_switch"=>$sss['scheduled_play'], "isPermissionAllowed"=>$isPermissionAllowed)) ?> navigation()->menu()->setPartial($partial); ?> diff --git a/airtime_mvc/application/layouts/scripts/playouthistory.phtml b/airtime_mvc/application/layouts/scripts/playouthistory.phtml index 0c9fee73f..47e01b11a 100644 --- a/airtime_mvc/application/layouts/scripts/playouthistory.phtml +++ b/airtime_mvc/application/layouts/scripts/playouthistory.phtml @@ -14,11 +14,11 @@ versionNotify(); $sss = $this->SourceSwitchStatus(); $scs = $this->SourceConnectionStatus(); - $isAdmin = $this->isAdmin(); + $isPermissionAllowed = $this->IsPermissionAllowed(); ?> partial('partialviews/header.phtml', array("user" => $this->loggedInAs(), "is_trial"=>$this->isTrial(), "trial_remain"=> $this->trialRemaining(), "live_dj_switch"=>$sss['live_dj'], "live_dj_connection"=>$scs['live_dj'], "master_dj_switch"=>$sss['master_dj'], "master_dj_connection"=>$scs['master_dj'], - "scheduled_play_switch"=>$sss['scheduled_play'], "isAdmin"=>$isAdmin)) ?> + "scheduled_play_switch"=>$sss['scheduled_play'], "isPermissionAllowed"=>$isPermissionAllowed)) ?> navigation()->menu()->setPartial($partial); ?> diff --git a/airtime_mvc/application/models/User.php b/airtime_mvc/application/models/User.php index b028a87e9..56312d568 100644 --- a/airtime_mvc/application/models/User.php +++ b/airtime_mvc/application/models/User.php @@ -30,6 +30,10 @@ class Application_Model_User { public function isHost($showId) { return $this->isUserType(UTYPE_HOST, $showId); } + + public function isPM() { + return $this->isUserType(UTYPE_PROGRAM_MANAGER); + } public function isAdmin() { return $this->isUserType(UTYPE_ADMIN); diff --git a/airtime_mvc/application/views/helpers/IsAdmin.php b/airtime_mvc/application/views/helpers/IsAdmin.php deleted file mode 100644 index 94c07235a..000000000 --- a/airtime_mvc/application/views/helpers/IsAdmin.php +++ /dev/null @@ -1,11 +0,0 @@ -getStorage()->read(); - $user = new Application_Model_User($userInfo->id); - return $user->isAdmin(); - } -} \ No newline at end of file diff --git a/airtime_mvc/application/views/helpers/IsPermissionAllowed.php b/airtime_mvc/application/views/helpers/IsPermissionAllowed.php new file mode 100644 index 000000000..77d331339 --- /dev/null +++ b/airtime_mvc/application/views/helpers/IsPermissionAllowed.php @@ -0,0 +1,18 @@ +getStorage()->read(); + $user = new Application_Model_User($userInfo->id); + + $show = Application_Model_Show::GetCurrentShow(); + $show_id = isset($show['id'])?$show['id']:0; + if($user->canSchedule($show_id)){ + return true; + }else{ + return false; + } + } +} \ No newline at end of file diff --git a/airtime_mvc/application/views/scripts/partialviews/header.phtml b/airtime_mvc/application/views/scripts/partialviews/header.phtml index 148ad0ab1..dd21e3c11 100644 --- a/airtime_mvc/application/views/scripts/partialviews/header.phtml +++ b/airtime_mvc/application/views/scripts/partialviews/header.phtml @@ -27,25 +27,25 @@
Scheduled Play
- ">scheduled_play_switch?> + scheduled_play_switch?>
  • - isAdmin){?> + Live DJ
    - ">live_dj_switch?> + live_dj_switch?>
  • - isAdmin){?> + Master DJ
    - ">master_dj_switch?> + master_dj_switch?>
  • diff --git a/airtime_mvc/public/js/airtime/dashboard/playlist.js b/airtime_mvc/public/js/airtime/dashboard/playlist.js index aa1461a4c..6646f94a4 100644 --- a/airtime_mvc/public/js/airtime/dashboard/playlist.js +++ b/airtime_mvc/public/js/airtime/dashboard/playlist.js @@ -343,34 +343,25 @@ function setSwitchListener(ele){ var sourcename = $(ele).attr('id') var status_span = $(ele).find("span") var status = status_span.html() - var _class = $(ele).parent().find("div.line-to-switch").attr("class") var source_connection_status = false - // user should be able to turn on/off scheduled_play switch anytime. - if(sourcename.indexOf("scheduled_play") > 0 && _class.indexOf("off") > 0){ - source_connection_status = false - }else{ - source_connection_status = true - } - - if(source_connection_status){ - $.get("/Dashboard/switch-source/format/json/sourcename/"+sourcename+"/status/"+status, function(data){ + $.get("/Dashboard/switch-source/format/json/sourcename/"+sourcename+"/status/"+status, function(data){ + if(data.error){ + alert(data.error); + }else{ status_span.html(data.status) - }); - }else{ - alert("The source is not connected to Airtime!") - } + } + }); } function kickSource(ele){ var sourcename = $(ele).attr('id') - var source_connection = $(ele).parent().find(".line-to-switch").attr("class") - if(source_connection.indexOf("off") > 0){ - alert("No source is connected to this input.") - return false - }else{ - $.get("/Dashboard/disconnect-source/format/json/sourcename/"+sourcename) - } + + $.get("/Dashboard/disconnect-source/format/json/sourcename/"+sourcename, function(data){ + if(data.error){ + alert(data.error); + } + }); } var stream_window = null; From 559acfd5a1067e9d7000209adaff79180b8f2651 Mon Sep 17 00:00:00 2001 From: james Date: Thu, 15 Mar 2012 14:33:59 -0400 Subject: [PATCH 2/4] CC-3452: Live Stream: DJs assigned to the show and Program Managers should be able to control switches and able to kick out connection - refactoring code --- .../application/layouts/scripts/builder.phtml | 3 +-- .../application/layouts/scripts/layout.phtml | 3 +-- .../layouts/scripts/playouthistory.phtml | 3 +-- .../views/helpers/IsPermissionAllowed.php | 18 ------------------ 4 files changed, 3 insertions(+), 24 deletions(-) delete mode 100644 airtime_mvc/application/views/helpers/IsPermissionAllowed.php diff --git a/airtime_mvc/application/layouts/scripts/builder.phtml b/airtime_mvc/application/layouts/scripts/builder.phtml index 1293cb873..02a9b8253 100644 --- a/airtime_mvc/application/layouts/scripts/builder.phtml +++ b/airtime_mvc/application/layouts/scripts/builder.phtml @@ -13,11 +13,10 @@ versionNotify(); $sss = $this->SourceSwitchStatus(); $scs = $this->SourceConnectionStatus(); - $isPermissionAllowed = $this->IsPermissionAllowed(); ?> partial('partialviews/header.phtml', array("user" => $this->loggedInAs(), "is_trial"=>$this->isTrial(), "trial_remain"=> $this->trialRemaining(), "live_dj_switch"=>$sss['live_dj'], "live_dj_connection"=>$scs['live_dj'], "master_dj_switch"=>$sss['master_dj'], "master_dj_connection"=>$scs['master_dj'], - "scheduled_play_switch"=>$sss['scheduled_play'], "isPermissionAllowed"=>$isPermissionAllowed)) ?> + "scheduled_play_switch"=>$sss['scheduled_play'])) ?> navigation()->menu()->setPartial($partial); ?> diff --git a/airtime_mvc/application/layouts/scripts/layout.phtml b/airtime_mvc/application/layouts/scripts/layout.phtml index f2cdf2b4b..92d38eef9 100644 --- a/airtime_mvc/application/layouts/scripts/layout.phtml +++ b/airtime_mvc/application/layouts/scripts/layout.phtml @@ -14,11 +14,10 @@ versionNotify(); $sss = $this->SourceSwitchStatus(); $scs = $this->SourceConnectionStatus(); - $isPermissionAllowed = $this->IsPermissionAllowed(); ?> partial('partialviews/header.phtml', array("user" => $this->loggedInAs(), "is_trial"=>$this->isTrial(), "trial_remain"=> $this->trialRemaining(), "live_dj_switch"=>$sss['live_dj'], "live_dj_connection"=>$scs['live_dj'], "master_dj_switch"=>$sss['master_dj'], "master_dj_connection"=>$scs['master_dj'], - "scheduled_play_switch"=>$sss['scheduled_play'], "isPermissionAllowed"=>$isPermissionAllowed)) ?> + "scheduled_play_switch"=>$sss['scheduled_play'])) ?> navigation()->menu()->setPartial($partial); ?> diff --git a/airtime_mvc/application/layouts/scripts/playouthistory.phtml b/airtime_mvc/application/layouts/scripts/playouthistory.phtml index 47e01b11a..1e8028866 100644 --- a/airtime_mvc/application/layouts/scripts/playouthistory.phtml +++ b/airtime_mvc/application/layouts/scripts/playouthistory.phtml @@ -14,11 +14,10 @@ versionNotify(); $sss = $this->SourceSwitchStatus(); $scs = $this->SourceConnectionStatus(); - $isPermissionAllowed = $this->IsPermissionAllowed(); ?> partial('partialviews/header.phtml', array("user" => $this->loggedInAs(), "is_trial"=>$this->isTrial(), "trial_remain"=> $this->trialRemaining(), "live_dj_switch"=>$sss['live_dj'], "live_dj_connection"=>$scs['live_dj'], "master_dj_switch"=>$sss['master_dj'], "master_dj_connection"=>$scs['master_dj'], - "scheduled_play_switch"=>$sss['scheduled_play'], "isPermissionAllowed"=>$isPermissionAllowed)) ?> + "scheduled_play_switch"=>$sss['scheduled_play'])) ?> navigation()->menu()->setPartial($partial); ?> diff --git a/airtime_mvc/application/views/helpers/IsPermissionAllowed.php b/airtime_mvc/application/views/helpers/IsPermissionAllowed.php deleted file mode 100644 index 77d331339..000000000 --- a/airtime_mvc/application/views/helpers/IsPermissionAllowed.php +++ /dev/null @@ -1,18 +0,0 @@ -getStorage()->read(); - $user = new Application_Model_User($userInfo->id); - - $show = Application_Model_Show::GetCurrentShow(); - $show_id = isset($show['id'])?$show['id']:0; - if($user->canSchedule($show_id)){ - return true; - }else{ - return false; - } - } -} \ No newline at end of file From ae0d3c560cbdefd6dc86f9d5a90c640c93ece150 Mon Sep 17 00:00:00 2001 From: Daniel Date: Thu, 15 Mar 2012 17:56:51 -0400 Subject: [PATCH 3/4] CC-3394: Add play button to timeline table. - added image information to row in ShowBuilder.php to enable audio preview of shows. - moved around code so the audio preview functionaly is standalone - fixed the firefox bug for issue CC-3429 --- airtime_mvc/application/Bootstrap.php | 2 +- airtime_mvc/application/configs/ACL.php | 6 +- .../controllers/AudiopreviewController.php | 192 +++ .../controllers/PlaylistController.php | 69 - .../application/models/ShowBuilder.php | 9 +- .../audio-preview.phtml} | 12 +- .../public/js/airtime/common/common.js | 65 +- .../public/js/airtime/library/library.js | 63 +- .../public/js/airtime/showbuilder/builder.js | 1158 +++++++++-------- .../public/js/jplayer/preview_jplayer.js | 153 ++- .../jplayer.audio-preview.blue.monday.css | 7 +- 11 files changed, 977 insertions(+), 759 deletions(-) create mode 100644 airtime_mvc/application/controllers/AudiopreviewController.php rename airtime_mvc/application/views/scripts/{playlist/playlist-preview.phtml => audiopreview/audio-preview.phtml} (89%) diff --git a/airtime_mvc/application/Bootstrap.php b/airtime_mvc/application/Bootstrap.php index a473e4628..4ed8cb979 100644 --- a/airtime_mvc/application/Bootstrap.php +++ b/airtime_mvc/application/Bootstrap.php @@ -88,7 +88,7 @@ class Bootstrap extends Zend_Application_Bootstrap_Bootstrap $view->headScript()->appendFile($baseUrl.'/js/airtime/common/common.js?'.$CC_CONFIG['airtime_version'],'text/javascript'); if (Application_Model_Preference::GetPlanLevel() != "disabled" - && ($_SERVER['REQUEST_URI'] != '/Dashboard/stream-player' || $_SERVER['REQUEST_URI'] != '/Playlist/audio-preview-player')) { + && ($_SERVER['REQUEST_URI'] != '/Dashboard/stream-player' || $_SERVER['REQUEST_URI'] != '/audiopreview/audio-preview-player')) { $client_id = Application_Model_Preference::GetClientId(); $view->headScript()->appendScript("var livechat_client_id = '$client_id';"); $view->headScript()->appendFile($baseUrl . '/js/airtime/common/livechat.js?'.$CC_CONFIG['airtime_version'], 'text/javascript'); diff --git a/airtime_mvc/application/configs/ACL.php b/airtime_mvc/application/configs/ACL.php index d2ce2e23a..8aec515da 100644 --- a/airtime_mvc/application/configs/ACL.php +++ b/airtime_mvc/application/configs/ACL.php @@ -27,7 +27,8 @@ $ccAcl->add(new Zend_Acl_Resource('library')) ->add(new Zend_Acl_Resource('showbuilder')) ->add(new Zend_Acl_Resource('auth')) ->add(new Zend_Acl_Resource('playouthistory')) - ->add(new Zend_Acl_Resource('usersettings')); + ->add(new Zend_Acl_Resource('usersettings')) + ->add(new Zend_Acl_Resource('audiopreview')); /** Creating permissions */ $ccAcl->allow('G', 'index') @@ -48,7 +49,8 @@ $ccAcl->allow('G', 'index') ->allow('A', 'playouthistory') ->allow('A', 'user') ->allow('A', 'systemstatus') - ->allow('A', 'preference'); + ->allow('A', 'preference') + ->allow('A', 'audiopreview'); $aclPlugin = new Zend_Controller_Plugin_Acl($ccAcl); diff --git a/airtime_mvc/application/controllers/AudiopreviewController.php b/airtime_mvc/application/controllers/AudiopreviewController.php new file mode 100644 index 000000000..4bed2ff35 --- /dev/null +++ b/airtime_mvc/application/controllers/AudiopreviewController.php @@ -0,0 +1,192 @@ +_helper->getHelper('AjaxContext'); + $ajaxContext->addActionContext('show-preview', 'json') + ->addActionContext('audio-preview', 'json') + ->addActionContext('get-show', 'json') + ->addActionContext('playlist-preview', 'json') + ->addActionContext('get-playlist', 'json') + ->initContext(); + } + + /** + * Simply sets up the view to play the required audio track. + * Gets the parameters from the request and sets them to the view. + */ + public function audioPreviewAction() + { + $audioFileID = $this->_getParam('audioFileID'); + $audioFileArtist = $this->_getParam('audioFileArtist'); + $audioFileTitle = $this->_getParam('audioFileTitle'); + + $request = $this->getRequest(); + $baseUrl = $request->getBaseUrl(); + + $baseDir = dirname($_SERVER['SCRIPT_FILENAME']); + + $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'); + + $logo = Application_Model_Preference::GetStationLogo(); + if($logo){ + $this->view->logo = "data:image/png;base64,$logo"; + } else { + $this->view->logo = "$baseUrl/css/images/airtime_logo_jp.png"; + } + $this->view->audioFileID = $audioFileID; + $this->view->audioFileArtist = $audioFileArtist; + $this->view->audioFileTitle = $audioFileTitle; + + $this->_helper->viewRenderer->setRender('audio-preview'); + } + + /** + * Simply sets up the view to play the required playlist track. + * Gets the parameters from the request and sets them to the view. + */ + public function playlistPreviewAction() + { + $playlistIndex = $this->_getParam('playlistIndex'); + $playlistID = $this->_getParam('playlistID'); + + $request = $this->getRequest(); + $baseUrl = $request->getBaseUrl(); + + $baseDir = dirname($_SERVER['SCRIPT_FILENAME']); + + $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'); + + $logo = Application_Model_Preference::GetStationLogo(); + if($logo){ + $this->view->logo = "data:image/png;base64,$logo"; + } else { + $this->view->logo = "$baseUrl/css/images/airtime_logo_jp.png"; + } + $this->view->playlistIndex= $playlistIndex; + $this->view->playlistID = $playlistID; + + $this->_helper->viewRenderer->setRender('audio-preview'); + } + + /** + *Function will load and return the contents of the requested playlist. + */ + 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 ){ + + $elementMap = array( 'element_title' => isset($track['CcFiles']['track_title'])?$track['CcFiles']['track_title']:"", + 'element_artist' => isset($track['CcFiles']['artist_name'])?$track['CcFiles']['artist_name']:"", + 'element_id' => isset($track['id'])?$track['id']:"", + 'element_position' => isset($track['position'])?$track['position']:"", + ); + $fileExtension = pathinfo($track['CcFiles']['filepath'], PATHINFO_EXTENSION); + if ($fileExtension === 'mp3'){ + $elementMap['element_mp3'] = $track['CcFiles']['gunid'].'.'.$fileExtension; + } else if( $fileExtension === 'ogg') { + $elementMap['element_oga'] = $track['CcFiles']['gunid'].'.'.$fileExtension; + } else { + //the media was neither mp3 or ogg + } + $result[] = $elementMap; + } + + $this->_helper->json($result); + } + + /** + * Simply sets up the view to play the required show track. + * Gets the parameters from the request and sets them to the view. + */ + public function showPreviewAction() + { + $showID = $this->_getParam('showID'); + $showIndex = $this->_getParam('showIndex'); + + $request = $this->getRequest(); + $baseUrl = $request->getBaseUrl(); + + $baseDir = dirname($_SERVER['SCRIPT_FILENAME']); + + $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'); + + $logo = Application_Model_Preference::GetStationLogo(); + if($logo){ + $this->view->logo = "data:image/png;base64,$logo"; + } else { + $this->view->logo = "$baseUrl/css/images/airtime_logo_jp.png"; + } + + $this->view->showID = $showID; + $this->view->showIndex = $showIndex; + + $this->_helper->viewRenderer->setRender('audio-preview'); + } + + /** + *Function will load and return the contents of the requested show. + */ + public function getShowAction() + { + Logging::log("in audio previews getShowAction"); + + // disable the view and the layout + $this->view->layout()->disableLayout(); + $this->_helper->viewRenderer->setNoRender(true); + + $showID = $this->_getParam('showID'); + + if (!isset($showID)){ + return; + } + + $showInstance = new Application_Model_ShowInstance($showID); + $result = Array(); + $position = 0; + foreach ( $showInstance->getShowListContent() as $track ){ + + $elementMap = array( 'element_title' => isset($track['track_title'])?$track['track_title']:"", + 'element_artist' => isset($track['artist_name'])?$track['artist_name']:"", + 'element_position' => $position, + 'element_id' => ++$position, + ); + + $fileExtension = pathinfo($track['filepath'], PATHINFO_EXTENSION); + if ($fileExtension === 'mp3'){ + $elementMap['element_mp3'] = $track['gunid'].'.'.$fileExtension; + } else if( $fileExtension === 'ogg') { + $elementMap['element_oga'] = $track['gunid'].'.'.$fileExtension; + } else { + //the media was neither mp3 or ogg + } + $result[] = $elementMap; + } + + $this->_helper->json($result); + + } +} \ No newline at end of file diff --git a/airtime_mvc/application/controllers/PlaylistController.php b/airtime_mvc/application/controllers/PlaylistController.php index dc67546f6..a3715a6f5 100644 --- a/airtime_mvc/application/controllers/PlaylistController.php +++ b/airtime_mvc/application/controllers/PlaylistController.php @@ -198,75 +198,6 @@ class PlaylistController extends Zend_Controller_Action } } - public function playlistPreviewAction() - { - $audioFileID = $this->_getParam('audioFileID'); - $audioFileArtist = $this->_getParam('audioFileArtist'); - $audioFileTitle = $this->_getParam('audioFileTitle'); - $playlistIndex = $this->_getParam('playlistIndex'); - $playlistID = $this->_getParam('playlistID'); - - $request = $this->getRequest(); - $baseUrl = $request->getBaseUrl(); - - $baseDir = dirname($_SERVER['SCRIPT_FILENAME']); - - $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'); - - $logo = Application_Model_Preference::GetStationLogo(); - if($logo){ - $this->view->logo = "data:image/png;base64,$logo"; - } else { - $this->view->logo = "$baseUrl/css/images/airtime_logo_jp.png"; - } - - $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']:"", - 'id' => isset($track['id'])?$track['id']:"", - 'position' => isset($track['position'])?$track['position']:"", - ); - $fileExtension = pathinfo($track['CcFiles']['filepath'], PATHINFO_EXTENSION); - if ($fileExtension === 'mp3'){ - $trackMap['mp3'] = $track['CcFiles']['gunid'].'.'.$fileExtension; - } else if( $fileExtension === 'ogg') { - $trackMap['oga'] = $track['CcFiles']['gunid'].'.'.$fileExtension; - } else { - //the media was neither mp3 or ogg - } - $result[] = $trackMap; - } - - $this->_helper->json($result); - } - public function addItemsAction() { $ids = $this->_getParam('ids', array()); diff --git a/airtime_mvc/application/models/ShowBuilder.php b/airtime_mvc/application/models/ShowBuilder.php index bb87c9e6a..07d4fb684 100644 --- a/airtime_mvc/application/models/ShowBuilder.php +++ b/airtime_mvc/application/models/ShowBuilder.php @@ -126,6 +126,7 @@ class Application_Model_ShowBuilder { $row["duration"] = $showEndDT->format("U") - $showStartDT->format("U"); $row["title"] = $p_item["show_name"]; $row["instance"] = intval($p_item["si_id"]); + $row["image"] = ''; $this->contentDT = $showStartDT; @@ -156,10 +157,11 @@ class Application_Model_ShowBuilder { $this->isCurrent($startsEpoch, min($endsEpoch, $showEndEpoch), $row); $row["id"] = intval($p_item["sched_id"]); + $row["image"] = ''; $row["instance"] = intval($p_item["si_id"]); $row["starts"] = $schedStartDT->format("H:i:s"); $row["ends"] = $schedEndDT->format("H:i:s"); - + $formatter = new LengthFormatter($p_item['file_length']); $row['runtime'] = $formatter->format(); @@ -177,12 +179,14 @@ class Application_Model_ShowBuilder { //show is empty or is a special kind of show (recording etc) else if (intval($p_item["si_record"]) === 1) { $row["record"] = true; + $row["image"] = ''; } else { $row["empty"] = true; $row["id"] = 0 ; $row["instance"] = intval($p_item["si_id"]); + $row["image"] = ''; } return $row; @@ -201,7 +205,7 @@ class Application_Model_ShowBuilder { $timeFilled = new TimeFilledFormatter($runtime); $row["fRuntime"] = $timeFilled->format(); - + $row["image"] = ''; return $row; } @@ -293,7 +297,6 @@ class Application_Model_ShowBuilder { } if (!$this->hasCurrent) { - } return $display_items; diff --git a/airtime_mvc/application/views/scripts/playlist/playlist-preview.phtml b/airtime_mvc/application/views/scripts/audiopreview/audio-preview.phtml similarity index 89% rename from airtime_mvc/application/views/scripts/playlist/playlist-preview.phtml rename to airtime_mvc/application/views/scripts/audiopreview/audio-preview.phtml index fd5ba3c0a..0ec94a16a 100644 --- a/airtime_mvc/application/views/scripts/playlist/playlist-preview.phtml +++ b/airtime_mvc/application/views/scripts/audiopreview/audio-preview.phtml @@ -1,11 +1,17 @@