diff --git a/airtime_mvc/application/controllers/ScheduleController.php b/airtime_mvc/application/controllers/ScheduleController.php index ab807c083..0add3c394 100644 --- a/airtime_mvc/application/controllers/ScheduleController.php +++ b/airtime_mvc/application/controllers/ScheduleController.php @@ -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()) { diff --git a/airtime_mvc/application/controllers/ShowbuilderController.php b/airtime_mvc/application/controllers/ShowbuilderController.php index dd6134f68..4843fab3b 100644 --- a/airtime_mvc/application/controllers/ShowbuilderController.php +++ b/airtime_mvc/application/controllers/ShowbuilderController.php @@ -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'); diff --git a/airtime_mvc/application/models/Show.php b/airtime_mvc/application/models/Show.php index 31bd75d44..835c4d5f1 100644 --- a/airtime_mvc/application/models/Show.php +++ b/airtime_mvc/application/models/Show.php @@ -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"]); diff --git a/airtime_mvc/application/views/scripts/showbuilder/builder.phtml b/airtime_mvc/application/views/scripts/showbuilder/builder.phtml index d33f605ca..6dfffb539 100644 --- a/airtime_mvc/application/views/scripts/showbuilder/builder.phtml +++ b/airtime_mvc/application/views/scripts/showbuilder/builder.phtml @@ -1,6 +1,6 @@ - - - - + + + +
diff --git a/airtime_mvc/public/js/airtime/schedule/schedule.js b/airtime_mvc/public/js/airtime/schedule/schedule.js index 9bbdaaa1d..88b5aae42 100644 --- a/airtime_mvc/public/js/airtime/schedule/schedule.js +++ b/airtime_mvc/public/js/airtime/schedule/schedule.js @@ -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) { diff --git a/airtime_mvc/public/js/airtime/showbuilder/builder.js b/airtime_mvc/public/js/airtime/showbuilder/builder.js index 65a10a131..fd10c2296 100644 --- a/airtime_mvc/public/js/airtime/showbuilder/builder.js +++ b/airtime_mvc/public/js/airtime/showbuilder/builder.js @@ -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,