CC-5766 : Fix Show Contents action on calendar

show contents are now just for past shows.
takes information from the playout history.
This commit is contained in:
Naomi 2014-04-02 15:54:38 -04:00
parent f6e3cae17e
commit 044081ef13
7 changed files with 83 additions and 158 deletions

View File

@ -7,8 +7,7 @@ class AudiopreviewController extends Zend_Controller_Action
public function init()
{
$ajaxContext = $this->_helper->getHelper('AjaxContext');
$ajaxContext->addActionContext('show-preview', 'json')
->addActionContext('media-preview', 'json')
$ajaxContext->addActionContext('media-preview', 'json')
->initContext();
}
@ -21,92 +20,4 @@ class AudiopreviewController extends Zend_Controller_Action
$this->view->playlist = $jPlayerMaker->getJPlayerPlaylist();
}
/**
* 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()
{
$CC_CONFIG = Config::getConfig();
$showID = $this->_getParam('showID');
$showIndex = $this->_getParam('showIndex');
$baseUrl = Application_Common_OsPath::getBaseDir();
$this->view->headScript()->appendFile($baseUrl.'js/airtime/audiopreview/preview_jplayer.js?'.$CC_CONFIG['airtime_version'],'text/javascript');
$this->view->headScript()->appendFile($baseUrl.'js/jplayer/jplayer.playlist.min.js?'.$CC_CONFIG['airtime_version'],'text/javascript');
$this->view->headLink()->appendStylesheet($baseUrl.'js/jplayer/skin/jplayer.airtime.audio.preview.css?'.$CC_CONFIG['airtime_version']);
$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()
{
$baseUrl = Application_Common_OsPath::getBaseDir();
// 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['creator']) ? $track['creator'] : "",
'element_position' => $position,
'element_id' => ++$position,
'mime' => isset($track['mime'])?$track['mime']:""
);
$elementMap['type'] = $track['type'];
if ($track['type'] == 0) {
$mime = $track['mime'];
if (strtolower($mime) === 'audio/mp3') {
$elementMap['element_mp3'] = $track['item_id'];
} elseif (strtolower($mime) === 'audio/ogg') {
$elementMap['element_oga'] = $track['item_id'];
} elseif (strtolower($mime) === 'audio/mp4') {
$elementMap['element_m4a'] = $track['item_id'];
} elseif (strtolower($mime) === 'audio/wav') {
$elementMap['element_wav'] = $track['item_id'];
} elseif (strtolower($mime) === 'audio/x-flac') {
$elementMap['element_flac'] = $track['item_id'];
} else {
throw new Exception("Unknown file type: $mime");
}
$elementMap['uri'] = $baseUrl."api/get-media/file/".$track['item_id'];
} else {
$elementMap['uri'] = $track['filepath'];
}
$result[] = $elementMap;
}
$this->_helper->json($result);
}
}

View File

@ -146,10 +146,13 @@ class PlayouthistoryController extends Zend_Controller_Action
list($startsDT, $endsDT) = $this->getStartEnd();
$limit = intval($params["iDisplayLength"]);
$offset = intval($params["iDisplayStart"]);
$historyService = new Application_Service_HistoryService();
$r = $historyService->getPlayedItemData($startsDT, $endsDT, $params, $instance);
$r = $historyService->getPlayedItemData($startsDT, $endsDT, $instance, $offset, $limit);
$this->view->sEcho = $r["sEcho"];
$this->view->sEcho = intval($params["sEcho"]);
$this->view->iTotalDisplayRecords = $r["iTotalDisplayRecords"];
$this->view->iTotalRecords = $r["iTotalRecords"];
$this->view->history = $r["history"];

View File

@ -26,7 +26,6 @@ class ScheduleController extends Zend_Controller_Action
->addActionContext('cancel-current-show', 'json')
->addActionContext('get-form', 'json')
->addActionContext('upload-to-sound-cloud', 'json')
->addActionContext('content-context-menu', 'json')
->addActionContext('set-time-scale', 'json')
->addActionContext('set-time-interval', 'json')
->addActionContext('edit-repeating-show-instance', 'json')
@ -350,13 +349,22 @@ class ScheduleController extends Zend_Controller_Action
$originalDateTime->format("l, F jS"),
$originalDateTime->format("G:i"));
}
//$this->view->showLength = $show->getShowLength();
//$this->view->timeFilled = $show->getTimeScheduled();
//$this->view->percentFilled = $show->getPercentScheduled();
//$this->view->showContent = $show->getShowListContent();
$historyService = new Application_Service_HistoryService();
$columns = $historyService->getDatatablesLogSheetColumns();
$contents = $historyService->getPlayedItemData(null, null, $showInstanceId);
//remove the checkbox column.
array_shift($columns);
$this->view->itemColumns = $columns;
$this->view->itemContents = $contents;
$this->view->dialog = $this->view->render('schedule/show-content-dialog.phtml');
$this->view->showTitle = htmlspecialchars($show->getName());
//unset($this->view->showContent);
unset($this->view->columns);
unset($this->view->contents);
}
public function populateRepeatingShowInstanceFormAction()
@ -601,30 +609,6 @@ class ScheduleController extends Zend_Controller_Action
}
}
public function contentContextMenuAction()
{
$id = $this->_getParam('id');
$params = '/format/json/id/#id#/';
$paramsPop = str_replace('#id#', $id, $params);
// added for downlaod
$id = $this->_getParam('id');
$file_id = $this->_getParam('id', null);
$file = Application_Model_StoredFile::RecallById($file_id);
$baseUrl = $this->getRequest()->getBaseUrl();
$url = $file->getRelativeFileUrl($baseUrl).'download/true';
$menu = array();
$menu[] = array('action' => array('type' => 'gourl', 'url' => $url),
'title' => _('Download'));
//returns format jjmenu is looking for.
$this->_helper->json->sendJson($menu);
}
/**
* Sets the user specific preference for which time scale to use in Calendar.
* This is only being used by schedule.js at the moment.

View File

@ -533,14 +533,6 @@ SQL;
return $isFilled;
}
//TODO get rid of this
public function getShowListContent()
{
$con = Propel::getConnection();
return $results;
}
public function getLastAudioItemEnd()
{
$con = Propel::getConnection();

View File

@ -46,19 +46,21 @@ class Application_Service_CalendarService
if ($now > $end) {
if ($this->ccShowInstance->isRecorded()) {
$ccFile = $this->ccShowInstance->getCcFiles();
if (!isset($ccFile)) {
$media = $this->ccShowInstance->getMediaItem();
if (!isset($media)) {
$menu["error when recording"] = array (
"name" => _("Record file doesn't exist"),
"icon" => "error");
}else {
}
else {
$menu["view_recorded"] = array(
"name" => _("View Recorded File Metadata"),
"icon" => "overview",
"url" => $baseUrl."library/edit-file-md/id/".$ccFile->getDbId());
"url" => $baseUrl."library/edit-file-md/id/".$media->getId());
}
//recorded show can be uploaded to soundcloud
//TODO fix this to work with new media items.
if (Application_Model_Preference::GetUploadToSoundcloudOption()) {
$scid = $ccFile->getDbSoundcloudId();
@ -74,13 +76,15 @@ class Application_Service_CalendarService
"name"=> $text,
"icon" => "soundcloud");
}
} else {
}
else {
$menu["content"] = array(
"name"=> _("Show Content"),
"icon" => "overview",
"url" => $baseUrl."schedule/show-content-dialog");
}
} else {
}
else {
// Show content can be modified from the calendar if:
// the user is admin or hosting the show,
// the show is not recorded
@ -96,7 +100,8 @@ class Application_Service_CalendarService
"icon" => "add-remove-content",
"url" => $baseUrl."showbuilder/builder-dialog/");
//if the show is linked and it's not currently playing the user can add/remove content
} elseif ($showIsLinked && $currentShowId != $this->ccShow->getDbId()) {
}
elseif ($showIsLinked && $currentShowId != $this->ccShow->getDbId()) {
$menu["schedule"] = array(
"name"=> _("Add / Remove Content"),
@ -115,16 +120,6 @@ class Application_Service_CalendarService
"url" => $baseUrl."schedule/clear-show");
}
//"Show Content" should be a menu item at all times except when
//the show is recorded
if (!$this->ccShowInstance->isRecorded()) {
$menu["content"] = array(
"name"=> _("Show Content"),
"icon" => "overview",
"url" => $baseUrl."schedule/show-content-dialog");
}
//show is currently playing and user is admin
if ($start <= $now && $now < $end && $isAdminOrPM) {
@ -132,7 +127,8 @@ class Application_Service_CalendarService
$menu["cancel_recorded"] = array(
"name"=> _("Cancel Current Show"),
"icon" => "delete");
} else {
}
else {
$menu["cancel"] = array(
"name"=> _("Cancel Current Show"),
"icon" => "delete");
@ -154,7 +150,8 @@ class Application_Service_CalendarService
"name" => _("Edit This Instance"),
"icon" => "edit",
"url" => $baseUrl."Schedule/populate-repeating-show-instance-form");
} else {
}
else {
$menu["edit"] = array(
"name" => _("Edit"),
"icon" => "edit",
@ -170,7 +167,8 @@ class Application_Service_CalendarService
"icon" => "edit",
"url" => $baseUrl."Schedule/populate-repeating-show-instance-form");
}
} else {
}
else {
$menu["edit"] = array(
"name"=> _("Edit Show"),
"icon" => "edit",
@ -198,12 +196,14 @@ class Application_Service_CalendarService
"name"=> _("Delete This Instance and All Following"),
"icon" => "delete",
"url" => $baseUrl."schedule/delete-show");
} elseif ($populateInstance) {
}
elseif ($populateInstance) {
$menu["del"] = array(
"name"=> _("Delete"),
"icon" => "delete",
"url" => $baseUrl."schedule/delete-show-instance");
} else {
}
else {
$menu["del"] = array(
"name"=> _("Delete"),
"icon" => "delete",

View File

@ -72,14 +72,10 @@ class Application_Service_HistoryService
}
//opts is from datatables.
public function getPlayedItemData($startDT, $endDT, $opts, $instanceId=null)
public function getPlayedItemData($startDT, $endDT, $instanceId=null, $offset = 0, $limit = -1)
{
$this->con->beginTransaction();
//LIMIT OFFSET statements
$limit = intval($opts["iDisplayLength"]);
$offset = intval($opts["iDisplayStart"]);
$query = CcPlayoutHistoryQuery::create()
->_if(isset($instanceId))
->filterByDbInstanceId($instanceId)
@ -143,7 +139,6 @@ class Application_Service_HistoryService
}
return array(
"sEcho" => intval($opts["sEcho"]),
"iTotalDisplayRecords" => intval($totalCount),
"iTotalRecords" => intval($totalCount),
"history" => $datatables

View File

@ -1,3 +1,43 @@
<div id="show_content_dialog">
<div><?php echo $this->additionalShowInfo; ?></div>
<table class="datatable">
<thead>
<tr>
<?php foreach ($this->itemColumns as $column): ?>
<th class="ui-state-default"><?php echo $column["sTitle"]; ?></th>
<?php endforeach; ?>
</tr>
</thead>
<tbody>
<?php for ($i = 0; $i < count($this->itemContents["history"]); $i++): ?>
<?php
$item = $this->itemContents["history"][$i];
$trclass = $i&1 ? "even" : "odd";
?>
<tr class="<?php echo $trclass; ?>">
<?php foreach ($this->itemColumns as $column): ?>
<td>
<?php
$index = $column["mDataProp"];
if ($column["sDataType"] == "boolean") {
if ($item[$index] == "1") {
$unicodeChar = '\u2612';
}
else {
$unicodeChar = '\u2610';
}
echo json_decode('"'.$unicodeChar.'"') ." ".$column["sTitle"];
}
else {
echo $item[$index];
}
?>
</td>
<?php endforeach; ?>
</tr>
<?php endfor;?>
</tbody>
</table>
</div>