diff options
-rw-r--r-- | actions/siteadminpanel.php | 37 |
1 files changed, 35 insertions, 2 deletions
diff --git a/actions/siteadminpanel.php b/actions/siteadminpanel.php index 460567c22..f66aa855c 100644 --- a/actions/siteadminpanel.php +++ b/actions/siteadminpanel.php @@ -90,7 +90,7 @@ class SiteadminpanelAction extends AdminPanelAction function saveSettings() { - static $settings = array('name', 'broughtby', 'broughtbyurl', 'email'); + static $settings = array('name', 'broughtby', 'broughtbyurl', 'email', 'timezone'); $values = array(); @@ -135,6 +135,14 @@ class SiteadminpanelAction extends AdminPanelAction if (!Validate::email($values['email'], common_config('email', 'check_domain'))) { $this->clientError(_('Not a valid email address')); } + + // Validate timezone + + if (is_null($values['timezone']) || + !in_array($values['timezone'], DateTimeZone::listIdentifiers())) { + $this->clientError(_('Timezone not selected.')); + return; + } } } @@ -189,6 +197,18 @@ class SiteAdminPanelForm extends Form _('URL used for credits link in footer of each page')); $this->input('email', _('Email'), _('contact email address for your site')); + + $timezones = array(); + + foreach (DateTimeZone::listIdentifiers() as $k => $v) { + $timezones[$v] = $v; + } + + asort($timezones); + + $this->out->dropdown('timezone', _('Default timezone'), + $timezones, _('Default timezone for the site; usually UTC.'), + true, $this->value('timezone')); } /** @@ -204,11 +224,24 @@ class SiteAdminPanelForm extends Form function input($setting, $title, $instructions) { + $this->out->input($setting, $title, $this->value($setting), $instructions); + } + + /** + * Utility to simplify getting the posted-or-stored setting value + * + * @param string $setting Name of the setting + * + * @return string param value if posted, or current config value + */ + + function value($setting) + { $value = $this->out->trimmed($setting); if (empty($value)) { $value = common_config('site', $setting); } - $this->out->input($setting, $title, $value, $instructions); + return $value; } /** |