add some more fields to site admin panel

This commit is contained in:
Evan Prodromou 2009-11-08 15:48:05 -05:00
parent d0466da80b
commit 2f770cecf9
1 changed files with 64 additions and 6 deletions

View File

@ -90,18 +90,52 @@ class SiteadminpanelAction extends AdminPanelAction
function saveSettings() function saveSettings()
{ {
$name = $this->trimmed('name'); static $settings = array('name', 'broughtby', 'broughtbyurl', 'email');
$values = array();
foreach ($settings as $setting) {
$values[$setting] = $this->trimmed($setting);
}
// This throws an exception on validation errors
$this->validate($values);
// assert(all values are valid);
$config = new Config(); $config = new Config();
$config->query('BEGIN'); $config->query('BEGIN');
Config::save('site', 'name', $name); foreach ($settings as $setting) {
Config::save('site', $setting, $values['setting']);
}
$config->query('COMMIT'); $config->query('COMMIT');
return; return;
} }
function validate(&$values)
{
// Validate site name
if (empty($values['name'])) {
$this->clientError(_("Site name must have non-zero length."));
}
// Validate email
$values['email'] = common_canonical_email($values['email']);
if (empty($values['email'])) {
$this->clientError(_('You must have a valid contact email address'));
}
if (!Validate::email($values['email'], common_config('email', 'check_domain'))) {
$this->clientError(_('Not a valid email address'));
}
}
} }
class SiteAdminPanelForm extends Form class SiteAdminPanelForm extends Form
@ -147,10 +181,34 @@ class SiteAdminPanelForm extends Form
function formData() function formData()
{ {
$this->out->input('name', _('Site name'), $this->input('name', _('Site name'),
($this->out->arg('name')) ? $this->out->arg('name') : _('The name of your site, like "Yourcompany Microblog"'));
common_config('site', 'name'), $this->input('broughtby', _('Brought by'),
_('The name of your site, like "Yourcompany Microblog"')); _('Text used for credits link in footer of each page'));
$this->input('broughtbyurl', _('Brought by URL'),
_('URL used for credits link in footer of each page'));
$this->input('email', _('Email'),
_('contact email address for your site'));
}
/**
* Utility to simplify some of the duplicated code around
* params and settings.
*
* @param string $setting Name of the setting
* @param string $title Title to use for the input
* @param string $instructions Instructions for this field
*
* @return void
*/
function input($setting, $title, $instructions)
{
$value = $this->out->trimmed($setting);
if (empty($value)) {
$value = common_config('site', $setting);
}
$this->out->input($setting, $title, $value, $instructions);
} }
/** /**