diff --git a/airtime_mvc/application/Bootstrap.php b/airtime_mvc/application/Bootstrap.php index 60a9c9a64..69269b3b4 100644 --- a/airtime_mvc/application/Bootstrap.php +++ b/airtime_mvc/application/Bootstrap.php @@ -52,37 +52,58 @@ class Bootstrap extends Zend_Application_Bootstrap_Bootstrap { $view = $this->getResource('view'); $baseUrl = Zend_Controller_Front::getInstance()->getBaseUrl(); + $baseDir = dirname($_SERVER['SCRIPT_FILENAME']); - $view->headLink()->appendStylesheet($baseUrl.'/css/redmond/jquery-ui-1.8.8.custom.css'); - $view->headLink()->appendStylesheet($baseUrl.'/css/pro_dropdown_3.css'); - $view->headLink()->appendStylesheet($baseUrl.'/css/qtip/jquery.qtip.min.css'); - $view->headLink()->appendStylesheet($baseUrl.'/css/styles.css'); + $view->headLink()->appendStylesheet($baseUrl.'/css/redmond/jquery-ui-1.8.8.custom.css?'.filemtime($baseDir.'/css/redmond/jquery-ui-1.8.8.custom.css')); + $view->headLink()->appendStylesheet($baseUrl.'/css/pro_dropdown_3.css?'.filemtime($baseDir.'/css/pro_dropdown_3.css')); + $view->headLink()->appendStylesheet($baseUrl.'/css/qtip/jquery.qtip.min.css?'.filemtime($baseDir.'/css/qtip/jquery.qtip.min.css')); + $view->headLink()->appendStylesheet($baseUrl.'/css/styles.css?'.filemtime($baseDir.'/css/styles.css')); } protected function _initHeadScript() { + global $CC_CONFIG; + $view = $this->getResource('view'); $baseUrl = Zend_Controller_Front::getInstance()->getBaseUrl(); + $baseDir = dirname($_SERVER['SCRIPT_FILENAME']); - $view->headScript()->appendFile($baseUrl.'/js/libs/jquery-1.5.2.min.js','text/javascript'); - $view->headScript()->appendFile($baseUrl.'/js/libs/jquery-ui-1.8.11.custom.min.js','text/javascript'); - $view->headScript()->appendFile($baseUrl.'/js/libs/jquery.stickyPanel.js','text/javascript'); - $view->headScript()->appendFile($baseUrl.'/js/qtip/jquery.qtip2.min.js','text/javascript'); - $view->headScript()->appendFile($baseUrl.'/js/jplayer/jquery.jplayer.min.js'); + $view->headScript()->appendFile($baseUrl.'/js/libs/jquery-1.5.2.min.js?'.filemtime($baseDir.'/js/libs/jquery-1.5.2.min.js'),'text/javascript'); + $view->headScript()->appendFile($baseUrl.'/js/libs/jquery-ui-1.8.11.custom.min.js?'.filemtime($baseDir.'/js/libs/jquery-ui-1.8.11.custom.min.js'),'text/javascript'); + $view->headScript()->appendFile($baseUrl.'/js/libs/jquery.stickyPanel.js?'.filemtime($baseDir.'/js/libs/jquery.stickyPanel.js'),'text/javascript'); + $view->headScript()->appendFile($baseUrl.'/js/qtip/jquery.qtip2.min.js?'.filemtime($baseDir.'/js/qtip/jquery.qtip2.min.js'),'text/javascript'); + $view->headScript()->appendFile($baseUrl.'/js/jplayer/jquery.jplayer.min.js?'.filemtime($baseDir.'/js/jplayer/jquery.jplayer.min.js')); $view->headScript()->appendScript("var baseUrl='$baseUrl/'"); //scripts for now playing bar - $view->headScript()->appendFile($baseUrl.'/js/airtime/dashboard/helperfunctions.js','text/javascript'); - $view->headScript()->appendFile($baseUrl.'/js/airtime/dashboard/playlist.js','text/javascript'); - $view->headScript()->appendFile($baseUrl.'/js/airtime/dashboard/versiontooltip.js','text/javascript'); + $view->headScript()->appendFile($baseUrl.'/js/airtime/dashboard/helperfunctions.js?'.filemtime($baseDir.'/js/airtime/dashboard/helperfunctions.js'),'text/javascript'); + $view->headScript()->appendFile($baseUrl.'/js/airtime/dashboard/playlist.js?'.filemtime($baseDir.'/js/airtime/dashboard/playlist.js'),'text/javascript'); + $view->headScript()->appendFile($baseUrl.'/js/airtime/dashboard/versiontooltip.js?'.filemtime($baseDir.'/js/airtime/dashboard/versiontooltip.js'),'text/javascript'); - $view->headScript()->appendFile($baseUrl.'/js/airtime/common/common.js','text/javascript'); + $view->headScript()->appendFile($baseUrl.'/js/airtime/common/common.js?'.filemtime($baseDir.'/js/airtime/common/common.js'),'text/javascript'); if (Application_Model_Preference::GetPlanLevel() != "disabled" && $_SERVER['REQUEST_URI'] != '/Dashboard/stream-player') { $client_id = Application_Model_Preference::GetClientId(); $view->headScript()->appendScript("var livechat_client_id = '$client_id';"); - $view->headScript()->appendFile($baseUrl . '/js/airtime/common/livechat.js', 'text/javascript'); + $view->headScript()->appendFile($baseUrl . '/js/airtime/common/livechat.js?'.filemtime($baseDir.'/js/airtime/common/livechat.js'), 'text/javascript'); + } + if(isset($CC_CONFIG['demo']) && $CC_CONFIG['demo'] == 1){ + // since we need to append google analytic code right before we can't use appendFile function + // we will just store raw html into some variable + $view->google_analytics = ""; } } diff --git a/airtime_mvc/application/controllers/DashboardController.php b/airtime_mvc/application/controllers/DashboardController.php index afdb26f33..b2a1e80a9 100644 --- a/airtime_mvc/application/controllers/DashboardController.php +++ b/airtime_mvc/application/controllers/DashboardController.php @@ -17,7 +17,9 @@ class DashboardController extends Zend_Controller_Action { $request = $this->getRequest(); $baseUrl = $request->getBaseUrl(); - $this->view->headLink()->appendStylesheet($baseUrl.'/js/jplayer/skin/jplayer.blue.monday.css'); + $baseDir = dirname($_SERVER['SCRIPT_FILENAME']); + + $this->view->headLink()->appendStylesheet($baseUrl.'/js/jplayer/skin/jplayer.blue.monday.css?'.filemtime($baseDir.'/js/jplayer/skin/jplayer.blue.monday.css')); $this->_helper->layout->setLayout('bare'); $logo = Application_Model_Preference::GetStationLogo(); diff --git a/airtime_mvc/application/controllers/LibraryController.php b/airtime_mvc/application/controllers/LibraryController.php index f0b72099d..25813af73 100644 --- a/airtime_mvc/application/controllers/LibraryController.php +++ b/airtime_mvc/application/controllers/LibraryController.php @@ -26,16 +26,17 @@ class LibraryController extends Zend_Controller_Action { $request = $this->getRequest(); $baseUrl = $request->getBaseUrl(); + $baseDir = dirname($_SERVER['SCRIPT_FILENAME']); - $this->view->headScript()->appendFile($baseUrl.'/js/contextmenu/jjmenu.js','text/javascript'); - $this->view->headScript()->appendFile($baseUrl.'/js/datatables/js/jquery.dataTables.js','text/javascript'); - $this->view->headScript()->appendFile($baseUrl.'/js/datatables/plugin/dataTables.pluginAPI.js','text/javascript'); - $this->view->headScript()->appendFile($baseUrl.'/js/datatables/plugin/dataTables.fnSetFilteringDelay.js','text/javascript'); - $this->view->headScript()->appendFile($baseUrl.'/js/airtime/library/library.js','text/javascript'); - $this->view->headScript()->appendFile($baseUrl.'/js/airtime/library/advancedsearch.js','text/javascript'); + $this->view->headScript()->appendFile($baseUrl.'/js/contextmenu/jjmenu.js?'.filemtime($baseDir.'/js/contextmenu/jjmenu.js'),'text/javascript'); + $this->view->headScript()->appendFile($baseUrl.'/js/datatables/js/jquery.dataTables.js?'.filemtime($baseDir.'/js/datatables/js/jquery.dataTables.js'),'text/javascript'); + $this->view->headScript()->appendFile($baseUrl.'/js/datatables/plugin/dataTables.pluginAPI.js?'.filemtime($baseDir.'/js/datatables/plugin/dataTables.pluginAPI.js'),'text/javascript'); + $this->view->headScript()->appendFile($baseUrl.'/js/datatables/plugin/dataTables.fnSetFilteringDelay.js?'.filemtime($baseDir.'/js/datatables/plugin/dataTables.fnSetFilteringDelay.js'),'text/javascript'); + $this->view->headScript()->appendFile($baseUrl.'/js/airtime/library/library.js?'.filemtime($baseDir.'/js/airtime/library/library.js'),'text/javascript'); + $this->view->headScript()->appendFile($baseUrl.'/js/airtime/library/advancedsearch.js?'.filemtime($baseDir.'/js/airtime/library/advancedsearch.js'),'text/javascript'); - $this->view->headLink()->appendStylesheet($baseUrl.'/css/media_library.css'); - $this->view->headLink()->appendStylesheet($baseUrl.'/css/contextmenu.css'); + $this->view->headLink()->appendStylesheet($baseUrl.'/css/media_library.css?'.filemtime($baseDir.'/css/media_library.css')); + $this->view->headLink()->appendStylesheet($baseUrl.'/css/contextmenu.css?'.filemtime($baseDir.'/css/contextmenu.css')); $this->_helper->layout->setLayout('library'); diff --git a/airtime_mvc/application/controllers/LoginController.php b/airtime_mvc/application/controllers/LoginController.php index b8c786be9..565b76f85 100644 --- a/airtime_mvc/application/controllers/LoginController.php +++ b/airtime_mvc/application/controllers/LoginController.php @@ -23,8 +23,9 @@ class LoginController extends Zend_Controller_Action $error = false; $request = $this->getRequest(); $baseUrl = $request->getBaseUrl(); + $baseDir = dirname($_SERVER['SCRIPT_FILENAME']); - $this->view->headScript()->appendFile($baseUrl.'/js/airtime/login/login.js','text/javascript'); + $this->view->headScript()->appendFile($baseUrl.'/js/airtime/login/login.js?'.filemtime($baseDir.'/js/airtime/login/login.js'),'text/javascript'); $form = new Application_Form_Login(); diff --git a/airtime_mvc/application/controllers/NowplayingController.php b/airtime_mvc/application/controllers/NowplayingController.php index 39841ab78..8c0e6c046 100644 --- a/airtime_mvc/application/controllers/NowplayingController.php +++ b/airtime_mvc/application/controllers/NowplayingController.php @@ -16,14 +16,15 @@ class NowplayingController extends Zend_Controller_Action { $request = $this->getRequest(); $baseUrl = $request->getBaseUrl(); + $baseDir = dirname($_SERVER['SCRIPT_FILENAME']); - $this->view->headScript()->appendFile($baseUrl.'/js/datatables/js/jquery.dataTables.min.js','text/javascript'); + $this->view->headScript()->appendFile($baseUrl.'/js/datatables/js/jquery.dataTables.min.js?'.filemtime($baseDir.'/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/nowplayingdatagrid.js?'.filemtime($baseDir.'/js/airtime/nowplaying/nowplayingdatagrid.js'),'text/javascript'); - $this->view->headScript()->appendFile($baseUrl.'/js/airtime/nowplaying/nowview.js','text/javascript'); + $this->view->headScript()->appendFile($baseUrl.'/js/airtime/nowplaying/nowview.js?'.filemtime($baseDir.'/js/airtime/nowplaying/nowview.js'),'text/javascript'); $refer_sses = new Zend_Session_Namespace('referrer'); $userInfo = Zend_Auth::getInstance()->getStorage()->read(); @@ -67,7 +68,7 @@ class NowplayingController extends Zend_Controller_Action $this->view->logoImg = $logo; } $this->view->dialog = $form; - $this->view->headScript()->appendFile($baseUrl.'/js/airtime/nowplaying/register.js','text/javascript'); + $this->view->headScript()->appendFile($baseUrl.'/js/airtime/nowplaying/register.js?'.filemtime($baseDir.'/js/airtime/nowplaying/register.js'),'text/javascript'); } }else{ //popup if previous page was login @@ -82,7 +83,7 @@ class NowplayingController extends Zend_Controller_Action $this->view->logoImg = $logo; } $this->view->dialog = $form; - $this->view->headScript()->appendFile($baseUrl.'/js/airtime/nowplaying/register.js','text/javascript'); + $this->view->headScript()->appendFile($baseUrl.'/js/airtime/nowplaying/register.js?'.filemtime($baseDir.'/js/airtime/nowplaying/register.js'),'text/javascript'); } } } @@ -106,14 +107,15 @@ class NowplayingController extends Zend_Controller_Action { $request = $this->getRequest(); $baseUrl = $request->getBaseUrl(); + $baseDir = dirname($_SERVER['SCRIPT_FILENAME']); - $this->view->headScript()->appendFile($baseUrl.'/js/datatables/js/jquery.dataTables.min.js','text/javascript'); + $this->view->headScript()->appendFile($baseUrl.'/js/datatables/js/jquery.dataTables.min.js?'.filemtime($baseDir.'/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/nowplayingdatagrid.js?'.filemtime($baseDir.'/js/airtime/nowplaying/nowplayingdatagrid.js'),'text/javascript'); - $this->view->headScript()->appendFile($baseUrl.'/js/airtime/nowplaying/dayview.js','text/javascript'); + $this->view->headScript()->appendFile($baseUrl.'/js/airtime/nowplaying/dayview.js?'.filemtime($baseDir.'/js/airtime/nowplaying/dayview.js'),'text/javascript'); } public function remindmeAction() diff --git a/airtime_mvc/application/controllers/PlaylistController.php b/airtime_mvc/application/controllers/PlaylistController.php index 9c3bc11ec..5f78bdd2d 100644 --- a/airtime_mvc/application/controllers/PlaylistController.php +++ b/airtime_mvc/application/controllers/PlaylistController.php @@ -79,9 +79,10 @@ class PlaylistController extends Zend_Controller_Action { $request = $this->getRequest(); $baseUrl = $request->getBaseUrl(); + $baseDir = dirname($_SERVER['SCRIPT_FILENAME']); - $this->view->headScript()->appendFile($baseUrl.'/js/airtime/library/spl.js','text/javascript'); - $this->view->headLink()->appendStylesheet($baseUrl.'/css/playlist_builder.css'); + $this->view->headScript()->appendFile($baseUrl.'/js/airtime/library/spl.js?'.filemtime($baseDir.'/js/airtime/library/spl.js'),'text/javascript'); + $this->view->headLink()->appendStylesheet($baseUrl.'/css/playlist_builder.css?'.filemtime($baseDir.'/css/playlist_builder.css')); $this->_helper->viewRenderer->setResponseSegment('spl'); $pl = $this->getPlaylist(); diff --git a/airtime_mvc/application/controllers/PluploadController.php b/airtime_mvc/application/controllers/PluploadController.php index df893ce0e..0a650498a 100644 --- a/airtime_mvc/application/controllers/PluploadController.php +++ b/airtime_mvc/application/controllers/PluploadController.php @@ -15,12 +15,13 @@ class PluploadController extends Zend_Controller_Action { $request = $this->getRequest(); $baseUrl = $request->getBaseUrl(); + $baseDir = dirname($_SERVER['SCRIPT_FILENAME']); - $this->view->headScript()->appendFile($baseUrl.'/js/plupload/plupload.full.min.js','text/javascript'); - $this->view->headScript()->appendFile($baseUrl.'/js/plupload/jquery.plupload.queue.min.js','text/javascript'); - $this->view->headScript()->appendFile($baseUrl.'/js/airtime/library/plupload.js','text/javascript'); + $this->view->headScript()->appendFile($baseUrl.'/js/plupload/plupload.full.min.js?'.filemtime($baseDir.'/js/plupload/plupload.full.min.js'),'text/javascript'); + $this->view->headScript()->appendFile($baseUrl.'/js/plupload/jquery.plupload.queue.min.js?'.filemtime($baseDir.'/js/plupload/jquery.plupload.queue.min.js'),'text/javascript'); + $this->view->headScript()->appendFile($baseUrl.'/js/airtime/library/plupload.js?'.filemtime($baseDir.'/js/airtime/library/plupload.js'),'text/javascript'); - $this->view->headLink()->appendStylesheet($baseUrl.'/css/plupload.queue.css'); + $this->view->headLink()->appendStylesheet($baseUrl.'/css/plupload.queue.css?'.filemtime($baseDir.'/css/plupload.queue.css')); } public function uploadAction() diff --git a/airtime_mvc/application/controllers/PreferenceController.php b/airtime_mvc/application/controllers/PreferenceController.php index 03ddd677b..62b9343b4 100644 --- a/airtime_mvc/application/controllers/PreferenceController.php +++ b/airtime_mvc/application/controllers/PreferenceController.php @@ -21,8 +21,9 @@ class PreferenceController extends Zend_Controller_Action { $request = $this->getRequest(); $baseUrl = $request->getBaseUrl(); + $baseDir = dirname($_SERVER['SCRIPT_FILENAME']); - $this->view->headScript()->appendFile($baseUrl.'/js/airtime/preferences/preferences.js','text/javascript'); + $this->view->headScript()->appendFile($baseUrl.'/js/airtime/preferences/preferences.js?'.filemtime($baseDir.'/js/airtime/preferences/preferences.js'),'text/javascript'); $this->view->statusMsg = ""; $form = new Application_Form_Preferences(); @@ -58,8 +59,9 @@ class PreferenceController extends Zend_Controller_Action { $request = $this->getRequest(); $baseUrl = $request->getBaseUrl(); + $baseDir = dirname($_SERVER['SCRIPT_FILENAME']); - $this->view->headScript()->appendFile($baseUrl.'/js/airtime/preferences/support-setting.js','text/javascript'); + $this->view->headScript()->appendFile($baseUrl.'/js/airtime/preferences/support-setting.js?'.filemtime($baseDir.'/js/airtime/preferences/support-setting.js'),'text/javascript'); $this->view->statusMsg = ""; $isSass = Application_Model_Preference::GetPlanLevel() == 'disabled'?false:true; @@ -117,9 +119,10 @@ class PreferenceController extends Zend_Controller_Action if(Application_Model_Preference::GetPlanLevel() == 'disabled'){ $request = $this->getRequest(); $baseUrl = $request->getBaseUrl(); + $baseDir = dirname($_SERVER['SCRIPT_FILENAME']); - $this->view->headScript()->appendFile($baseUrl.'/js/serverbrowse/serverbrowser.js','text/javascript'); - $this->view->headScript()->appendFile($baseUrl.'/js/airtime/preferences/musicdirs.js','text/javascript'); + $this->view->headScript()->appendFile($baseUrl.'/js/serverbrowse/serverbrowser.js?'.filemtime($baseDir.'/js/serverbrowse/serverbrowser.js'),'text/javascript'); + $this->view->headScript()->appendFile($baseUrl.'/js/airtime/preferences/musicdirs.js?'.filemtime($baseDir.'/js/airtime/preferences/musicdirs.js'),'text/javascript'); $watched_dirs_pref = new Application_Form_WatchedDirPreferences(); @@ -131,9 +134,10 @@ class PreferenceController extends Zend_Controller_Action { $request = $this->getRequest(); $baseUrl = $request->getBaseUrl(); + $baseDir = dirname($_SERVER['SCRIPT_FILENAME']); - $this->view->headScript()->appendFile($baseUrl.'/js/airtime/preferences/streamsetting.js','text/javascript'); - $this->view->headScript()->appendFile($baseUrl.'/js/meioMask/jquery.meio.mask.js','text/javascript'); + $this->view->headScript()->appendFile($baseUrl.'/js/airtime/preferences/streamsetting.js?'.filemtime($baseDir.'/js/airtime/preferences/streamsetting.js'),'text/javascript'); + $this->view->headScript()->appendFile($baseUrl.'/js/meioMask/jquery.meio.mask.js?'.filemtime($baseDir.'/js/meioMask/jquery.meio.mask.js'),'text/javascript'); // get current settings $temp = Application_Model_StreamSetting::getStreamSetting(); diff --git a/airtime_mvc/application/controllers/ScheduleController.php b/airtime_mvc/application/controllers/ScheduleController.php index 0110ea335..82d7214f0 100644 --- a/airtime_mvc/application/controllers/ScheduleController.php +++ b/airtime_mvc/application/controllers/ScheduleController.php @@ -39,27 +39,28 @@ class ScheduleController extends Zend_Controller_Action { $request = $this->getRequest(); $baseUrl = $request->getBaseUrl(); + $baseDir = dirname($_SERVER['SCRIPT_FILENAME']); - $this->view->headScript()->appendFile($baseUrl.'/js/contextmenu/jjmenu.js','text/javascript'); - $this->view->headScript()->appendFile($baseUrl.'/js/datatables/js/jquery.dataTables.js','text/javascript'); - $this->view->headScript()->appendFile($baseUrl.'/js/datatables/plugin/dataTables.pluginAPI.js','text/javascript'); - $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'); + $this->view->headScript()->appendFile($baseUrl.'/js/contextmenu/jjmenu.js?'.filemtime($baseDir.'/js/contextmenu/jjmenu.js'),'text/javascript'); + $this->view->headScript()->appendFile($baseUrl.'/js/datatables/js/jquery.dataTables.js?'.filemtime($baseDir.'/js/datatables/js/jquery.dataTables.js'),'text/javascript'); + $this->view->headScript()->appendFile($baseUrl.'/js/datatables/plugin/dataTables.pluginAPI.js?'.filemtime($baseDir.'/js/datatables/plugin/dataTables.pluginAPI.js'),'text/javascript'); + $this->view->headScript()->appendFile($baseUrl.'/js/fullcalendar/fullcalendar.js?'.filemtime($baseDir.'/js/fullcalendar/fullcalendar.js'),'text/javascript'); + $this->view->headScript()->appendFile($baseUrl.'/js/timepicker/jquery.ui.timepicker-0.0.6.js?'.filemtime($baseDir.'/js/timepicker/jquery.ui.timepicker-0.0.6.js'),'text/javascript'); + $this->view->headScript()->appendFile($baseUrl.'/js/colorpicker/js/colorpicker.js?'.filemtime($baseDir.'/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/full-calendar-functions.js?'.filemtime($baseDir.'/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/schedule.js','text/javascript'); - $this->view->headScript()->appendFile($baseUrl.'/js/meioMask/jquery.meio.mask.js','text/javascript'); + $this->view->headScript()->appendFile($baseUrl.'/js/airtime/schedule/add-show.js?'.filemtime($baseDir.'/js/airtime/schedule/add-show.js'),'text/javascript'); + $this->view->headScript()->appendFile($baseUrl.'/js/airtime/schedule/schedule.js?'.filemtime($baseDir.'/js/airtime/schedule/schedule.js'),'text/javascript'); + $this->view->headScript()->appendFile($baseUrl.'/js/meioMask/jquery.meio.mask.js?'.filemtime($baseDir.'/js/meioMask/jquery.meio.mask.js'),'text/javascript'); - $this->view->headLink()->appendStylesheet($baseUrl.'/css/jquery-ui-timepicker.css'); - $this->view->headLink()->appendStylesheet($baseUrl.'/css/fullcalendar.css'); - $this->view->headLink()->appendStylesheet($baseUrl.'/css/colorpicker/css/colorpicker.css'); - $this->view->headLink()->appendStylesheet($baseUrl.'/css/add-show.css'); - $this->view->headLink()->appendStylesheet($baseUrl.'/css/contextmenu.css'); + $this->view->headLink()->appendStylesheet($baseUrl.'/css/jquery-ui-timepicker.css?'.filemtime($baseDir.'/css/jquery-ui-timepicker.css')); + $this->view->headLink()->appendStylesheet($baseUrl.'/css/fullcalendar.css?'.filemtime($baseDir.'/css/fullcalendar.css')); + $this->view->headLink()->appendStylesheet($baseUrl.'/css/colorpicker/css/colorpicker.css?'.filemtime($baseDir.'/css/colorpicker/css/colorpicker.css')); + $this->view->headLink()->appendStylesheet($baseUrl.'/css/add-show.css?'.filemtime($baseDir.'/css/add-show.css')); + $this->view->headLink()->appendStylesheet($baseUrl.'/css/contextmenu.css?'.filemtime($baseDir.'/css/contextmenu.css')); Application_Model_Schedule::createNewFormSections($this->view); diff --git a/airtime_mvc/application/controllers/SystemstatusController.php b/airtime_mvc/application/controllers/SystemstatusController.php index 3ed5e2508..35feec893 100644 --- a/airtime_mvc/application/controllers/SystemstatusController.php +++ b/airtime_mvc/application/controllers/SystemstatusController.php @@ -6,9 +6,10 @@ class SystemstatusController extends Zend_Controller_Action { $request = $this->getRequest(); $baseUrl = $request->getBaseUrl(); + $baseDir = dirname($_SERVER['SCRIPT_FILENAME']); - $this->view->headScript()->appendFile($baseUrl.'/js/airtime/status/status.js','text/javascript'); - $this->view->headScript()->appendFile($baseUrl.'/js/sprintf/sprintf-0.7-beta1.js','text/javascript'); + $this->view->headScript()->appendFile($baseUrl.'/js/airtime/status/status.js?'.filemtime($baseDir.'/js/airtime/status/status.js'),'text/javascript'); + $this->view->headScript()->appendFile($baseUrl.'/js/sprintf/sprintf-0.7-beta1.js?'.filemtime($baseDir.'/js/sprintf/sprintf-0.7-beta1.js'),'text/javascript'); } public function indexAction() diff --git a/airtime_mvc/application/controllers/UserController.php b/airtime_mvc/application/controllers/UserController.php index 3c8b993f2..30e39cfcd 100644 --- a/airtime_mvc/application/controllers/UserController.php +++ b/airtime_mvc/application/controllers/UserController.php @@ -23,9 +23,11 @@ class UserController extends Zend_Controller_Action $request = $this->getRequest(); $baseUrl = $request->getBaseUrl(); - $this->view->headScript()->appendFile($baseUrl.'/js/datatables/js/jquery.dataTables.js','text/javascript'); - $this->view->headScript()->appendFile($baseUrl.'/js/datatables/plugin/dataTables.pluginAPI.js','text/javascript'); - $this->view->headScript()->appendFile($baseUrl.'/js/airtime/user/user.js','text/javascript'); + $baseDir = dirname($_SERVER['SCRIPT_FILENAME']); + + $this->view->headScript()->appendFile($baseUrl.'/js/datatables/js/jquery.dataTables.js?'.filemtime($baseDir.'/js/datatables/js/jquery.dataTables.js'),'text/javascript'); + $this->view->headScript()->appendFile($baseUrl.'/js/datatables/plugin/dataTables.pluginAPI.js?'.filemtime($baseDir.'/js/datatables/plugin/dataTables.pluginAPI.js'),'text/javascript'); + $this->view->headScript()->appendFile($baseUrl.'/js/airtime/user/user.js?'.filemtime($baseDir.'/js/airtime/user/user.js'),'text/javascript'); $form = new Application_Form_AddUser(); diff --git a/airtime_mvc/application/layouts/scripts/bare.phtml b/airtime_mvc/application/layouts/scripts/bare.phtml index 43c42463c..b89443505 100644 --- a/airtime_mvc/application/layouts/scripts/bare.phtml +++ b/airtime_mvc/application/layouts/scripts/bare.phtml @@ -5,6 +5,7 @@ Live stream headScript() ?> headLink() ?> + google_analytics)?$this->google_analytics:"" ?>
layout()->content ?>
diff --git a/airtime_mvc/application/layouts/scripts/layout.phtml b/airtime_mvc/application/layouts/scripts/layout.phtml index 53ff557d1..10e6a5ec9 100644 --- a/airtime_mvc/application/layouts/scripts/layout.phtml +++ b/airtime_mvc/application/layouts/scripts/layout.phtml @@ -5,6 +5,7 @@ headTitle() ?> headScript() ?> headLink() ?> + google_analytics)?$this->google_analytics:"" ?> diff --git a/airtime_mvc/application/layouts/scripts/library.phtml b/airtime_mvc/application/layouts/scripts/library.phtml index 1241dfb50..b2982c1f4 100644 --- a/airtime_mvc/application/layouts/scripts/library.phtml +++ b/airtime_mvc/application/layouts/scripts/library.phtml @@ -5,6 +5,7 @@ headTitle() ?> headScript() ?> headLink() ?> + google_analytics)?$this->google_analytics:"" ?> diff --git a/airtime_mvc/application/layouts/scripts/login.phtml b/airtime_mvc/application/layouts/scripts/login.phtml index 88328f2c5..e91b735ee 100644 --- a/airtime_mvc/application/layouts/scripts/login.phtml +++ b/airtime_mvc/application/layouts/scripts/login.phtml @@ -5,6 +5,7 @@ headTitle() ?> headScript() ?> headLink() ?> + google_analytics)?$this->google_analytics:"" ?> diff --git a/airtime_mvc/application/layouts/scripts/search.phtml b/airtime_mvc/application/layouts/scripts/search.phtml index 8cedbe21b..c3195b101 100644 --- a/airtime_mvc/application/layouts/scripts/search.phtml +++ b/airtime_mvc/application/layouts/scripts/search.phtml @@ -5,6 +5,7 @@ headTitle() ?> headScript() ?> headLink() ?> + google_analytics)?$this->google_analytics:"" ?>
partial('partialviews/header.phtml', array("user" => $this->loggedInAs())) ?>
diff --git a/python_apps/show-recorder/recorder.cfg b/python_apps/show-recorder/recorder.cfg index c010a8645..d817a32b2 100644 --- a/python_apps/show-recorder/recorder.cfg +++ b/python_apps/show-recorder/recorder.cfg @@ -24,6 +24,7 @@ record_bitrate = 256 record_samplerate = 44100 record_channels = 2 record_sample_size = 16 +record_timeout = 3600 #can be either ogg|mp3, mp3 recording requires installation of the package "lame" record_file_type = 'ogg' diff --git a/python_apps/show-recorder/recorder.py b/python_apps/show-recorder/recorder.py index 80bc4ada8..3ec1caf39 100644 --- a/python_apps/show-recorder/recorder.py +++ b/python_apps/show-recorder/recorder.py @@ -179,7 +179,7 @@ class CommandListener(): self.sr = None self.current_schedule = {} self.shows_to_record = {} - self.time_till_next_show = 3600 + self.time_till_next_show = config["record_timeout"] self.logger.info("RecorderFetch: init complete") self.server_timezone = ''; @@ -213,7 +213,7 @@ class CommandListener(): self.parse_shows(temp) self.server_timezone = m['server_timezone'] elif(command == 'cancel_recording'): - if self.sr.is_recording(): + if self.sr is not None and self.sr.is_recording(): self.sr.cancel_recording() def parse_shows(self, shows): @@ -245,7 +245,7 @@ class CommandListener(): self.logger.debug("Next show %s", next_show) self.logger.debug("Now %s", tnow) else: - out = 3600 + out = config["record_timeout"] return out def start_record(self): @@ -272,8 +272,7 @@ class CommandListener(): self.sr.start() #remove show from shows to record. del self.shows_to_record[start_time] - time_till_next_show = self.get_time_till_next_show() - self.time_till_next_show = time_till_next_show + self.time_till_next_show = self.get_time_till_next_show() except Exception,e : import traceback top = traceback.format_exc() @@ -306,19 +305,40 @@ class CommandListener(): self.logger.error(e) loops = 1 + recording = False + while True: self.logger.info("Loop #%s", loops) try: # block until 5 seconds before the next show start - self.connection.drain_events(timeout=self.time_till_next_show) + self.connection.drain_events(timeout=int(self.time_till_next_show)) except socket.timeout, s: self.logger.info(s) + + # start_record set time_till_next_show to config["record_timeout"] so we should check before + # if timeout amount was 1 hr.. + update_schedule = False + if int(self.time_till_next_show) == int(config["record_timeout"]) : + update_schedule = True + # start recording self.start_record() + + # if real timeout happended get show schedule from airtime + if update_schedule : + temp = self.api_client.get_shows_to_record() + if temp is not None: + shows = temp['shows'] + self.server_timezone = temp['server_timezone'] + self.parse_shows(shows) + self.logger.info("Real Timeout: the schedule has updated") + except Exception, e: - self.logger.info(e) + import traceback + top = traceback.format_exc() + self.logger.error('Exception: %s', e) + self.logger.error("traceback: %s", top) time.sleep(3) - loops += 1 if __name__ == '__main__':