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()
{
$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->query('BEGIN');
Config::save('site', 'name', $name);
foreach ($settings as $setting) {
Config::save('site', $setting, $values['setting']);
}
$config->query('COMMIT');
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
@ -147,10 +181,34 @@ class SiteAdminPanelForm extends Form
function formData()
{
$this->out->input('name', _('Site name'),
($this->out->arg('name')) ? $this->out->arg('name') :
common_config('site', 'name'),
_('The name of your site, like "Yourcompany Microblog"'));
$this->input('name', _('Site name'),
_('The name of your site, like "Yourcompany Microblog"'));
$this->input('broughtby', _('Brought by'),
_('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);
}
/**