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()); $showStartLocalDT = Application_Model_DateHelper::ConvertToLocalDateTime($instance->getShowInstanceStart());
$showEndLocalDT = Application_Model_DateHelper::ConvertToLocalDateTime($instance->getShowInstanceEnd()); $showEndLocalDT = Application_Model_DateHelper::ConvertToLocalDateTime($instance->getShowInstanceEnd());
/* if ($epochNow < $showStartLocalDT->getTimestamp()) {
if ($epochNow < $showStartDateHelper->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, $menu["schedule"] = array("name"=> "Add / Remove Content", "url" => "/showbuilder/index/");
'callback' => 'window["buildScheduleDialog"]'), 'title' => 'Add / Remove Content');
$menu["clear"] = array("name"=> "Remove All Content", "icon" => "delete", "url" => "/schedule/clear-show");
/*
$menu[] = array('action' => array('type' => 'ajax', 'url' => '/Schedule/clear-show'.$params, $menu[] = array('action' => array('type' => 'ajax', 'url' => '/Schedule/clear-show'.$params,
'callback' => 'window["scheduleRefetchEvents"]'), 'title' => 'Remove All Content'); 'callback' => 'window["scheduleRefetchEvents"]'), 'title' => 'Remove All Content');
*/
} }
} }
*/
if (!$instance->isRecorded()) { if (!$instance->isRecorded()) {

View File

@ -28,6 +28,20 @@ class ShowbuilderController extends Zend_Controller_Action
$request = $this->getRequest(); $request = $this->getRequest();
$baseUrl = $request->getBaseUrl(); $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()->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/timepicker/jquery.ui.timepicker.js','text/javascript');
$this->view->headScript()->appendFile($baseUrl.'/js/airtime/showbuilder/builder.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 = new DateTime($show["ends"], new DateTimeZone("UTC"));
$endDateTime->setTimezone(new DateTimeZone(date_default_timezone_get())); $endDateTime->setTimezone(new DateTimeZone(date_default_timezone_get()));
$event["id"] = $show["instance_id"]; $event["id"] = intval($show["instance_id"]);
$event["title"] = $show["name"]; $event["title"] = $show["name"];
$event["start"] = $startDateTime->format("Y-m-d H:i:s"); $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["end"] = $endDateTime->format("Y-m-d H:i:s");
$event["endUnix"] = $endDateTime->format("U");
$event["allDay"] = false; $event["allDay"] = false;
$event["description"] = $show["description"]; $event["description"] = $show["description"];
$event["showId"] = $show["show_id"]; $event["showId"] = intval($show["show_id"]);
$event["record"] = intval($show["record"]); $event["record"] = intval($show["record"]);
$event["rebroadcast"] = intval($show["rebroadcast"]); $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_datepicker_start" class="input_text" value="<?php echo $this->start_date?>"></input>
<input type="text" id="show_builder_timepicker_start" class="input_text"></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"></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"></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> <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> <table id="show_builder_table" cellpadding="0" cellspacing="0" class="datatable"></table>

View File

@ -379,6 +379,26 @@ $(window).load(function() {
function processMenuItems(oItems) { 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. //define an edit callback.
if (oItems.edit !== undefined) { if (oItems.edit !== undefined) {

View File

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