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:
parent
f6e3cae17e
commit
044081ef13
|
@ -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);
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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"];
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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>
|
||||
|
|
Loading…
Reference in New Issue