CC-3174 : showbuilder

adding add/remove to the context menu.
airtimeline now has default set start/end times in the inputs.
This commit is contained in:
Naomi Aro 2012-02-09 23:41:12 +01:00
parent fdd962f5ce
commit 941da1fe44
6 changed files with 73 additions and 30 deletions

View File

@ -198,20 +198,24 @@ class ScheduleController extends Zend_Controller_Action
$showStartLocalDT = Application_Model_DateHelper::ConvertToLocalDateTime($instance->getShowInstanceStart());
$showEndLocalDT = Application_Model_DateHelper::ConvertToLocalDateTime($instance->getShowInstanceEnd());
/*
if ($epochNow < $showStartDateHelper->getTimestamp()) {
if ($epochNow < $showStartLocalDT->getTimestamp()) {
if ($user->isUserType(array(UTYPE_ADMIN, UTYPE_PROGRAM_MANAGER, UTYPE_HOST),$show->getShowId()) && !$show->isRecorded() && !$show->isRebroadcast()) {
if ($user->isUserType(array(UTYPE_ADMIN, UTYPE_PROGRAM_MANAGER, UTYPE_HOST), $instance->getShowId())
&& !$instance->isRecorded()
&& !$instance->isRebroadcast()) {
$menu[] = array('action' => array('type' => 'ajax', 'url' => '/Schedule/schedule-show-dialog'.$params,
'callback' => 'window["buildScheduleDialog"]'), 'title' => 'Add / Remove Content');
$menu["schedule"] = array("name"=> "Add / Remove Content", "url" => "/showbuilder/index/");
$menu["clear"] = array("name"=> "Remove All Content", "icon" => "delete", "url" => "/schedule/clear-show");
/*
$menu[] = array('action' => array('type' => 'ajax', 'url' => '/Schedule/clear-show'.$params,
'callback' => 'window["scheduleRefetchEvents"]'), 'title' => 'Remove All Content');
*/
}
}
*/
if (!$instance->isRecorded()) {

View File

@ -28,6 +28,20 @@ class ShowbuilderController extends Zend_Controller_Action
$request = $this->getRequest();
$baseUrl = $request->getBaseUrl();
$now = time();
$from = $request->getParam("from", $now);
$to = $request->getParam("to", $now+(24*60*60));
$start = DateTime::createFromFormat("U", $from, new DateTimeZone("UTC"));
$start->setTimezone(new DateTimeZone(date_default_timezone_get()));
$end = DateTime::createFromFormat("U", $to, new DateTimeZone("UTC"));
$end->setTimezone(new DateTimeZone(date_default_timezone_get()));
$this->view->start_date = $start->format("Y-m-d");
$this->view->start_time = $start->format("H:i");
$this->view->end_date = $end->format("Y-m-d");
$this->view->end_time = $end->format("H:i");
$this->view->headScript()->appendScript("var serverTimezoneOffset = ".date("Z")."; //in seconds");
$this->view->headScript()->appendFile($baseUrl.'/js/timepicker/jquery.ui.timepicker.js','text/javascript');
$this->view->headScript()->appendFile($baseUrl.'/js/airtime/showbuilder/builder.js','text/javascript');

View File

@ -1527,13 +1527,15 @@ class Application_Model_Show {
$endDateTime = new DateTime($show["ends"], new DateTimeZone("UTC"));
$endDateTime->setTimezone(new DateTimeZone(date_default_timezone_get()));
$event["id"] = $show["instance_id"];
$event["id"] = intval($show["instance_id"]);
$event["title"] = $show["name"];
$event["start"] = $startDateTime->format("Y-m-d H:i:s");
$event["startUnix"] = $startDateTime->format("U");
$event["end"] = $endDateTime->format("Y-m-d H:i:s");
$event["endUnix"] = $endDateTime->format("U");
$event["allDay"] = false;
$event["description"] = $show["description"];
$event["showId"] = $show["show_id"];
$event["showId"] = intval($show["show_id"]);
$event["record"] = intval($show["record"]);
$event["rebroadcast"] = intval($show["rebroadcast"]);

View File

@ -1,6 +1,6 @@
<input type="text" id="show_builder_datepicker_start" class="input_text"></input>
<input type="text" id="show_builder_timepicker_start" class="input_text"></input>
<input type="text" id="show_builder_datepicker_end" class="input_text"></input>
<input type="text" id="show_builder_timepicker_end" class="input_text"></input>
<input type="text" id="show_builder_datepicker_start" class="input_text" value="<?php echo $this->start_date?>"></input>
<input type="text" id="show_builder_timepicker_start" class="input_text" value="<?php echo $this->start_time?>"></input>
<input type="text" id="show_builder_datepicker_end" class="input_text" value="<?php echo $this->end_date?>"></input>
<input type="text" id="show_builder_timepicker_end" class="input_text" value="<?php echo $this->end_time?>"></input>
<input type="button" id="show_builder_timerange_button" class="ui-button ui-state-default" value="GO"></input>
<table id="show_builder_table" cellpadding="0" cellspacing="0" class="datatable"></table>

View File

@ -379,6 +379,26 @@ $(window).load(function() {
function processMenuItems(oItems) {
//define a schedule callback.
if (oItems.schedule !== undefined) {
callback = function() {
document.location = oItems.schedule.url + "from/" + data.startUnix + "/to/" + data.endUnix;
};
oItems.schedule.callback = callback;
}
//define a clear callback.
if (oItems.clear !== undefined) {
callback = function() {
$.post(oItems.clear.url, {format: "json", id: data.id}, function(json){
scheduleRefetchEvents(json);
});
};
oItems.clear.callback = callback;
}
//define an edit callback.
if (oItems.edit !== undefined) {

View File

@ -4,7 +4,10 @@ $(document).ready(function() {
oBaseDatePickerSettings,
oBaseTimePickerSettings,
fnAddSelectedItems,
fnRemoveSelectedItems;
fnRemoveSelectedItems,
oRange,
fnServerData,
fnShowBuilderRowCallback;
oBaseDatePickerSettings = {
dateFormat: 'yy-mm-dd',
@ -35,11 +38,9 @@ $(document).ready(function() {
* @return Number iTime
*/
function fnGetUIPickerUnixTimestamp(sDatePickerId, sTimePickerId) {
var oDate,
oTimePicker = $( sTimePickerId ),
var date,
time,
iTime,
iHour,
iMin,
iServerOffset,
iClientOffset;
@ -47,18 +48,16 @@ $(document).ready(function() {
return 0;
}
oDate = $( sDatePickerId ).datepicker( "getDate" );
//string.split(separator, limit)
//nothing has been selected from this datepicker.
if (oDate === null) {
oDate = new Date();
}
else {
iHour = oTimePicker.timepicker('getHour');
iMin = oTimePicker.timepicker('getMinute');
oDate.setHours(iHour, iMin);
}
date = $(sDatePickerId).val();
time = $(sTimePickerId).val();
date = date.split("-");
time = time.split(":");
//0 based month in js.
oDate = new Date(date[0], date[1]-1, date[2], time[0], time[1]);
iTime = oDate.getTime(); //value is in millisec.
iTime = Math.round(iTime / 1000);
@ -98,7 +97,7 @@ $(document).ready(function() {
};
}
var fnServerData = function ( sSource, aoData, fnCallback ) {
fnServerData = function ( sSource, aoData, fnCallback ) {
aoData.push( { name: "format", value: "json"} );
if (fnServerData.hasOwnProperty("start")) {
@ -116,8 +115,12 @@ $(document).ready(function() {
"success": fnCallback
} );
};
oRange = fnGetScheduleRange();
fnServerData.start = oRange.start;
fnServerData.end = oRange.end;
var fnShowBuilderRowCallback = function ( nRow, aData, iDisplayIndex, iDisplayIndexFull ){
fnShowBuilderRowCallback = function ( nRow, aData, iDisplayIndex, iDisplayIndexFull ){
var i,
sSeparatorHTML,
fnPrepareSeparatorRow,