diff --git a/airtime_mvc/application/configs/ACL.php b/airtime_mvc/application/configs/ACL.php index 07ca7d822..ae6d83625 100644 --- a/airtime_mvc/application/configs/ACL.php +++ b/airtime_mvc/application/configs/ACL.php @@ -40,7 +40,8 @@ $ccAcl->add(new Zend_Acl_Resource('library')) ->add(new Zend_Acl_Resource('provisioning')) ->add(new Zend_Acl_Resource('player')) ->add(new Zend_Acl_Resource('soundcloud')) - ->add(new Zend_Acl_Resource('embeddablewidgets')); + ->add(new Zend_Acl_Resource('embeddablewidgets')) + ->add(new Zend_Acl_Resource('setup')); /** Creating permissions */ $ccAcl->allow('G', 'index') @@ -60,6 +61,7 @@ $ccAcl->allow('G', 'index') ->allow('G', 'downgrade') ->allow('G', 'rest:show-image', 'get') ->allow('G', 'rest:media', 'get') + ->allow('G', 'setup') ->allow('H', 'soundcloud') ->allow('H', 'rest:show-image') ->allow('H', 'rest:media') diff --git a/airtime_mvc/application/controllers/SetupController.php b/airtime_mvc/application/controllers/SetupController.php new file mode 100644 index 000000000..9b211eeb6 --- /dev/null +++ b/airtime_mvc/application/controllers/SetupController.php @@ -0,0 +1,41 @@ +_helper->getHelper('AjaxContext'); + $ajaxContext->addActionContext('setup-language-timezone', 'json'); + } + + public function setupLanguageTimezoneAction() + { + $this->view->layout()->disableLayout(); + $this->_helper->viewRenderer->setNoRender(true); + + $request = $this->getRequest(); + $form = new Application_Form_SetupLanguageTimezone(); + + if ($request->isPost()) { + + $formData = $request->getPost(); + if ($form->isValid($formData)) { + $userService = new Application_Service_UserService(); + $currentUser = $userService->getCurrentUser(); + $currentUserId = $currentUser->getDbId(); + + Application_Model_Preference::SetUserTimezone($formData["setup_timezone"], $currentUserId); + Application_Model_Preference::SetDefaultTimezone($formData["setup_timezone"]); + + Application_Model_Preference::SetUserLocale($formData["setup_language"], $currentUserId); + Application_Model_Preference::SetDefaultLocale($formData["setup_language"]); + + Application_Model_Preference::setLangTimezoneSetupComplete(true); + + $this->_redirect('/Showbuilder'); + } + } + $this->_redirect('/Showbuilder'); + } + +} \ No newline at end of file diff --git a/airtime_mvc/application/controllers/ShowbuilderController.php b/airtime_mvc/application/controllers/ShowbuilderController.php index 7051cf37c..65521749c 100644 --- a/airtime_mvc/application/controllers/ShowbuilderController.php +++ b/airtime_mvc/application/controllers/ShowbuilderController.php @@ -45,6 +45,7 @@ class ShowbuilderController extends Zend_Controller_Action //$this->view->headScript()->appendFile($baseUrl.'js/datatables/plugin/dataTables.ColReorder.js?'.$CC_CONFIG['airtime_version'],'text/javascript'); $this->view->headScript()->appendFile($baseUrl.'js/datatables/plugin/dataTables.FixedColumns.js?'.$CC_CONFIG['airtime_version'],'text/javascript'); $this->view->headScript()->appendFile($baseUrl.'js/datatables/plugin/dataTables.columnFilter.js?'.$CC_CONFIG['airtime_version'], 'text/javascript'); + $this->view->headScript()->appendFile($baseUrl.'js/js-timezone-detect/jstz-1.0.4.min.js?'.$CC_CONFIG['airtime_version'],'text/javascript'); $this->view->headScript()->appendFile($baseUrl.'js/blockui/jquery.blockUI.js?'.$CC_CONFIG['airtime_version'],'text/javascript'); $this->view->headScript()->appendFile($baseUrl.'js/airtime/buttons/buttons.js?'.$CC_CONFIG['airtime_version'],'text/javascript'); @@ -55,8 +56,22 @@ class ShowbuilderController extends Zend_Controller_Action $this->view->headLink()->appendStylesheet($baseUrl.'css/datatables/css/ColVis.css?'.$CC_CONFIG['airtime_version']); $this->view->headLink()->appendStylesheet($baseUrl.'css/datatables/css/ColReorder.css?'.$CC_CONFIG['airtime_version']); - $refer_sses = new Zend_Session_Namespace('referrer'); + $setupComplete = Application_Model_Preference::getLangTimezoneSetupComplete(); + $previousPage = $request->getHeader('Referer'); + $userService = new Application_Service_UserService(); + $currentUser = $userService->getCurrentUser(); + // If current user is Super Admin, and they came from the login page, + // and they have not seen the setup popup before + if ($currentUser->getDbType() == "S" && strpos(strtolower($previousPage), 'login') !== false + && empty($setupComplete)) { + $lang_tz_popup_form = new Application_Form_SetupLanguageTimezone(); + $this->view->lang_tz_popup_form = $lang_tz_popup_form; + $this->view->headScript()->appendFile($baseUrl.'js/airtime/nowplaying/lang-timezone-setup.js?'.$CC_CONFIG['airtime_version'],'text/javascript'); + } + + //TODO: is it safe to remove this?? + /* if ($request->isPost()) { $form = new Application_Form_RegisterAirtime(); @@ -115,6 +130,7 @@ class ShowbuilderController extends Zend_Controller_Action $this->view->dialog = $form; $this->view->headScript()->appendFile($baseUrl.'js/airtime/nowplaying/register.js?'.$CC_CONFIG['airtime_version'],'text/javascript'); } + */ //determine whether to remove/hide/display the library. $showLib = false; diff --git a/airtime_mvc/application/forms/SetupLanguageTimezone.php b/airtime_mvc/application/forms/SetupLanguageTimezone.php new file mode 100644 index 000000000..5e90308f3 --- /dev/null +++ b/airtime_mvc/application/forms/SetupLanguageTimezone.php @@ -0,0 +1,28 @@ +setDecorators(array( + array('ViewScript', array('viewScript' => 'form/setup-lang-timezone.phtml')))); + + $csrf_namespace = new Zend_Session_Namespace('csrf_namespace'); + $csrf_element = new Zend_Form_Element_Hidden('csrf'); + $csrf_element->setValue($csrf_namespace->authtoken)->setRequired('true')->removeDecorator('HtmlTag')->removeDecorator('Label'); + $this->addElement($csrf_element); + + $language = new Zend_Form_Element_Select('setup_language'); + $language->setLabel(_("Station Language")); + $language->setMultiOptions(Application_Model_Locale::getLocales()); + $this->addElement($language); + + $timezone = new Zend_Form_Element_Select('setup_timezone'); + $timezone->setLabel(_("Station Timezone")); + $timezone->setMultiOptions(Application_Common_Timezone::getTimezones()); + $this->addElement($timezone); + } +} + diff --git a/airtime_mvc/application/models/Preference.php b/airtime_mvc/application/models/Preference.php index 6143058ba..f76a0f5e2 100644 --- a/airtime_mvc/application/models/Preference.php +++ b/airtime_mvc/application/models/Preference.php @@ -1521,4 +1521,14 @@ class Application_Model_Preference { self::setValue("radio_page_display_login_button", $value); } + + public static function getLangTimezoneSetupComplete() + { + return self::getValue("lang_tz_setup_complete"); + } + + public static function setLangTimezoneSetupComplete($value) + { + self::setValue("lang_tz_setup_complete", $value); + } } diff --git a/airtime_mvc/application/views/scripts/form/setup-lang-timezone.phtml b/airtime_mvc/application/views/scripts/form/setup-lang-timezone.phtml new file mode 100644 index 000000000..117d92a82 --- /dev/null +++ b/airtime_mvc/application/views/scripts/form/setup-lang-timezone.phtml @@ -0,0 +1,16 @@ +