From b1193318edb8513b4763795bd7df5797fa0ee6f0 Mon Sep 17 00:00:00 2001 From: Martin Konecny Date: Fri, 25 Nov 2011 17:36:11 -0500 Subject: [PATCH] CC-3105: Settings dates (the popup select date calendar) shows Today by local machine timezone and not Airtime timezone. -fixed --- .../controllers/NowplayingController.php | 8 ++++++++ .../controllers/ScheduleController.php | 6 +++++- airtime_mvc/public/js/airtime/common/common.js | 13 +++++++++++++ .../js/airtime/nowplaying/nowplayingdatagrid.js | 2 +- .../public/js/airtime/schedule/add-show.js | 7 +++---- .../airtime/schedule/full-calendar-functions.js | 15 +-------------- .../public/js/fullcalendar/AIRTIME_DEV_README | 2 +- 7 files changed, 32 insertions(+), 21 deletions(-) diff --git a/airtime_mvc/application/controllers/NowplayingController.php b/airtime_mvc/application/controllers/NowplayingController.php index 0cf0a3850..39841ab78 100644 --- a/airtime_mvc/application/controllers/NowplayingController.php +++ b/airtime_mvc/application/controllers/NowplayingController.php @@ -18,7 +18,11 @@ class NowplayingController extends Zend_Controller_Action $baseUrl = $request->getBaseUrl(); $this->view->headScript()->appendFile($baseUrl.'/js/datatables/js/jquery.dataTables.min.js','text/javascript'); + + //nowplayingdatagrid.js requires this variable, so that datePicker widget can be offset to server time instead of client time + $this->view->headScript()->appendScript("var timezoneOffset = ".date("Z")."; //in seconds"); $this->view->headScript()->appendFile($baseUrl.'/js/airtime/nowplaying/nowplayingdatagrid.js','text/javascript'); + $this->view->headScript()->appendFile($baseUrl.'/js/airtime/nowplaying/nowview.js','text/javascript'); $refer_sses = new Zend_Session_Namespace('referrer'); @@ -104,7 +108,11 @@ class NowplayingController extends Zend_Controller_Action $baseUrl = $request->getBaseUrl(); $this->view->headScript()->appendFile($baseUrl.'/js/datatables/js/jquery.dataTables.min.js','text/javascript'); + + //nowplayingdatagrid.js requires this variable, so that datePicker widget can be offset to server time instead of client time + $this->view->headScript()->appendScript("var timezoneOffset = ".date("Z")."; //in seconds"); $this->view->headScript()->appendFile($baseUrl.'/js/airtime/nowplaying/nowplayingdatagrid.js','text/javascript'); + $this->view->headScript()->appendFile($baseUrl.'/js/airtime/nowplaying/dayview.js','text/javascript'); } diff --git a/airtime_mvc/application/controllers/ScheduleController.php b/airtime_mvc/application/controllers/ScheduleController.php index cd31e75bb..1e3d2b896 100644 --- a/airtime_mvc/application/controllers/ScheduleController.php +++ b/airtime_mvc/application/controllers/ScheduleController.php @@ -46,8 +46,12 @@ class ScheduleController extends Zend_Controller_Action $this->view->headScript()->appendFile($baseUrl.'/js/fullcalendar/fullcalendar.js','text/javascript'); $this->view->headScript()->appendFile($baseUrl.'/js/timepicker/jquery.ui.timepicker-0.0.6.js','text/javascript'); $this->view->headScript()->appendFile($baseUrl.'/js/colorpicker/js/colorpicker.js','text/javascript'); + + //full-calendar-functions.js requires this variable, so that datePicker widget can be offset to server time instead of client time + $this->view->headScript()->appendScript("var timezoneOffset = ".date("Z")."; //in seconds"); $this->view->headScript()->appendFile($baseUrl.'/js/airtime/schedule/full-calendar-functions.js','text/javascript'); - $this->view->headScript()->appendFile($baseUrl.'/js/airtime/schedule/add-show.js','text/javascript'); + + $this->view->headScript()->appendFile($baseUrl.'/js/airtime/schedule/add-show.js','text/javascript'); $this->view->headScript()->appendFile($baseUrl.'/js/airtime/schedule/schedule.js','text/javascript'); $this->view->headScript()->appendFile($baseUrl.'/js/meioMask/jquery.meio.mask.js','text/javascript'); diff --git a/airtime_mvc/public/js/airtime/common/common.js b/airtime_mvc/public/js/airtime/common/common.js index 10736e837..85fe984e6 100644 --- a/airtime_mvc/public/js/airtime/common/common.js +++ b/airtime_mvc/public/js/airtime/common/common.js @@ -6,3 +6,16 @@ $(document).ready(function() { savePanelSpace: true }); }); + +function adjustDateToServerDate(date, serverTimezoneOffset){ + //date object stores time in the browser's localtime. We need to artificially shift + //it to + var timezoneOffset = date.getTimezoneOffset()*60*1000; + + date.setTime(date.getTime() + timezoneOffset + serverTimezoneOffset*1000); + + /* date object has been shifted to artificial UTC time. Now let's + * shift it to the server's timezone */ + + return date; +} diff --git a/airtime_mvc/public/js/airtime/nowplaying/nowplayingdatagrid.js b/airtime_mvc/public/js/airtime/nowplaying/nowplayingdatagrid.js index d56d5b33a..2eea84acb 100644 --- a/airtime_mvc/public/js/airtime/nowplaying/nowplayingdatagrid.js +++ b/airtime_mvc/public/js/airtime/nowplaying/nowplayingdatagrid.js @@ -204,7 +204,7 @@ $(document).ready(function() { $("#datepicker").datepicker({ onSelect: function(dateText, inst) { getData();}}); - $("#datepicker").datepicker("setDate", new Date()); + $("#datepicker").datepicker("setDate", adjustDateToServerDate(new Date(), timezoneOffset)); } else { $('#day_view').click(function(){redirect('/Nowplaying/day-view')}); } diff --git a/airtime_mvc/public/js/airtime/schedule/add-show.js b/airtime_mvc/public/js/airtime/schedule/add-show.js index 49a0c4bea..65bafc04c 100644 --- a/airtime_mvc/public/js/airtime/schedule/add-show.js +++ b/airtime_mvc/public/js/airtime/schedule/add-show.js @@ -19,11 +19,10 @@ function startDpSelect(dateText, inst) { function endDpSelect(dateText, inst) { var time, date; - + time = dateText.split("-"); date = new Date(time[0], time[1] - 1, time[2]); - //$("#add_show_start_date").datepicker( "option", "maxDate", date); if (inst.input) inst.input.trigger('change'); } @@ -32,7 +31,7 @@ function createDateInput(el, onSelect) { var date; el.datepicker({ - minDate: new Date(), + minDate: adjustDateToServerDate(new Date(), timezoneOffset), onSelect: onSelect, dateFormat: 'yy-mm-dd' }); @@ -188,7 +187,7 @@ function setAddShowEvents() { }); form.find('input[name^="add_show_rebroadcast_date_absolute"]').datepicker({ - minDate: new Date(), + minDate: adjustDateToServerDate(new Date(), timezoneOffset), dateFormat: 'yy-mm-dd' }); form.find('input[name^="add_show_rebroadcast_time"]').timepicker({ diff --git a/airtime_mvc/public/js/airtime/schedule/full-calendar-functions.js b/airtime_mvc/public/js/airtime/schedule/full-calendar-functions.js index 898144376..7910f498f 100644 --- a/airtime_mvc/public/js/airtime/schedule/full-calendar-functions.js +++ b/airtime_mvc/public/js/airtime/schedule/full-calendar-functions.js @@ -75,19 +75,6 @@ function makeTimeStamp(date){ return timestamp; } -function adjustDateToServerDate(date, serverTimezoneOffset){ - //date object stores time in the browser's localtime. We need to artificially shift - //it to - var timezoneOffset = date.getTimezoneOffset()*60*1000; - - date.setTime(date.getTime() + timezoneOffset + serverTimezoneOffset*1000); - - /* date object has been shifted to artificial UTC time. Now let's - * shift it to the server's timezone */ - - return date; -} - function pad(number, length) { var str = '' + number; while (str.length < length) { @@ -101,7 +88,7 @@ function dayClick(date, allDay, jsEvent, view) { var now, today, selected, chosenDate, chosenTime; now = adjustDateToServerDate(new Date(), serverTimezoneOffset); - + if(view.name === "month") { today = new Date(now.getFullYear(), now.getMonth(), now.getDate()); selected = new Date(date.getFullYear(), date.getMonth(), date.getDate()); diff --git a/airtime_mvc/public/js/fullcalendar/AIRTIME_DEV_README b/airtime_mvc/public/js/fullcalendar/AIRTIME_DEV_README index 468b1e497..ffa4294a0 100644 --- a/airtime_mvc/public/js/fullcalendar/AIRTIME_DEV_README +++ b/airtime_mvc/public/js/fullcalendar/AIRTIME_DEV_README @@ -50,7 +50,7 @@ martin@Thinkpad-T410:~/workspace/airtime/airtime_mvc/public/js/fullcalendar$ dif +})(jQuery); -adjustDateToServerDate() function is defined in "js/airtime/schedule/full-calendar-functions.js" +adjustDateToServerDate() function is defined in "js/airtime/common/common.js" Please make this change before updating!!!