From 977d5d6f8569437a8d8a7f9616f4de6afc0dc509 Mon Sep 17 00:00:00 2001 From: Evan Prodromou Date: Sun, 8 Nov 2009 22:03:34 -0500 Subject: add default timezone to site admin panel --- actions/siteadminpanel.php | 37 +++++++++++++++++++++++++++++++++++-- 1 file changed, 35 insertions(+), 2 deletions(-) (limited to 'actions') 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')); } /** @@ -203,12 +223,25 @@ 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; } /** -- cgit v1.2.3-54-g00ecf