Update preference form so that it suits the new language negotiation

refs #6073
This commit is contained in:
Johannes Meyer 2014-06-25 13:22:04 +02:00
parent 7ff4890ab7
commit d01d17ad5e

View File

@ -30,15 +30,11 @@
namespace Icinga\Form\Preference; namespace Icinga\Form\Preference;
use \DateTimeZone; use DateTimeZone;
use \Zend_Config; use Zend_Config;
use \Zend_Form_Element_Text; use Zend_Form_Element_Select;
use \Zend_Form_Element_Select; use Icinga\Web\Form;
use \Zend_View_Helper_DateFormat; use Icinga\Util\Translator;
use \Icinga\Web\Form;
use \Icinga\Web\Form\Validator\TimeFormatValidator;
use \Icinga\Web\Form\Validator\DateFormatValidator;
use \Icinga\Util\Translator;
/** /**
* General user preferences * General user preferences
@ -49,41 +45,41 @@ class GeneralForm extends Form
* Add a select field for setting the user's language * Add a select field for setting the user's language
* *
* Possible values are determined by Translator::getAvailableLocaleCodes. * Possible values are determined by Translator::getAvailableLocaleCodes.
* Also, a 'use default format' checkbox is added in order to allow a user to discard his overwritten setting * Also, a 'use browser language' checkbox is added in order to allow a user to discard his setting
*
* @param Zend_Config $cfg The "global" section of the config.ini to be used as default value
*/ */
private function addLanguageSelection(Zend_Config $cfg) private function addLanguageSelection()
{ {
$languages = array(); $languages = array();
foreach (Translator::getAvailableLocaleCodes() as $language) { foreach (Translator::getAvailableLocaleCodes() as $language) {
$languages[$language] = $language; $languages[$language] = $language;
} }
$languages[Translator::DEFAULT_LOCALE] = Translator::DEFAULT_LOCALE; $languages[Translator::DEFAULT_LOCALE] = Translator::DEFAULT_LOCALE;
$prefs = $this->getUserPreferences(); $useBrowserLanguage = $this->getRequest()->getParam(
$useDefaultLanguage = $this->getRequest()->getParam('default_language', !$prefs->has('app.language')); 'browser_language',
!$this->getUserPreferences()->has('app.language')
);
$this->addElement( $this->addElement(
'checkbox', 'checkbox',
'default_language', 'browser_language',
array( array(
'label' => t('Use Default Language'), 'label' => t('Use your browser\'s language suggestions'),
'value' => $useDefaultLanguage, 'value' => $useBrowserLanguage,
'required' => true 'required' => true
) )
); );
$selectOptions = array( $selectOptions = array(
'label' => t('Your Current Language'), 'label' => t('Your Current Language'),
'required' => !$useDefaultLanguage, 'required' => !$useBrowserLanguage,
'multiOptions' => $languages, 'multiOptions' => $languages,
'helptext' => t('Use the following language to display texts and messages'), 'helptext' => t('Use the following language to display texts and messages'),
'value' => $prefs->get('app.language', $cfg->get('language', Translator::DEFAULT_LOCALE)) 'value' => substr(setlocale(LC_ALL, 0), 0, 5)
); );
if ($useDefaultLanguage) { if ($useBrowserLanguage) {
$selectOptions['disabled'] = 'disabled'; $selectOptions['disabled'] = 'disabled';
} }
$this->addElement('select', 'language', $selectOptions); $this->addElement('select', 'language', $selectOptions);
$this->enableAutoSubmit(array('default_language')); $this->enableAutoSubmit(array('browser_language'));
} }
/** /**
@ -145,7 +141,7 @@ class GeneralForm extends Form
$global = new Zend_Config(array()); $global = new Zend_Config(array());
} }
$this->addLanguageSelection($global); $this->addLanguageSelection();
$this->addTimezoneSelection($global); $this->addTimezoneSelection($global);
$this->setSubmitLabel('Save Changes'); $this->setSubmitLabel('Save Changes');
@ -169,7 +165,7 @@ class GeneralForm extends Form
{ {
$values = $this->getValues(); $values = $this->getValues();
return array( return array(
'app.language' => $values['default_language'] ? null : $values['language'], 'app.language' => $values['browser_language'] ? null : $values['language'],
'app.timezone' => $values['default_timezone'] ? null : $values['timezone'], 'app.timezone' => $values['default_timezone'] ? null : $values['timezone'],
'app.show_benchmark' => $values['show_benchmark'] === '1' ? true : false 'app.show_benchmark' => $values['show_benchmark'] === '1' ? true : false
); );