diff options
Diffstat (limited to 'actions')
-rw-r--r-- | actions/apigroupcreate.php | 62 | ||||
-rw-r--r-- | actions/apistatusesupdate.php | 2 | ||||
-rw-r--r-- | actions/designadminpanel.php | 307 | ||||
-rw-r--r-- | actions/emailsettings.php | 3 | ||||
-rw-r--r-- | actions/login.php | 4 | ||||
-rw-r--r-- | actions/newgroup.php | 46 | ||||
-rw-r--r-- | actions/profilesettings.php | 2 | ||||
-rw-r--r-- | actions/siteadminpanel.php | 173 |
8 files changed, 327 insertions, 272 deletions
diff --git a/actions/apigroupcreate.php b/actions/apigroupcreate.php index 895dfb7ab..8827d1c5c 100644 --- a/actions/apigroupcreate.php +++ b/actions/apigroupcreate.php @@ -117,61 +117,13 @@ class ApiGroupCreateAction extends ApiAuthAction return; } - $group = new User_group(); - - $group->query('BEGIN'); - - $group->nickname = $this->nickname; - $group->fullname = $this->fullname; - $group->homepage = $this->homepage; - $group->description = $this->description; - $group->location = $this->location; - $group->created = common_sql_now(); - - $result = $group->insert(); - - if (!$result) { - common_log_db_error($group, 'INSERT', __FILE__); - $this->serverError( - _('Could not create group.'), - 500, - $this->format - ); - return; - } - - $result = $group->setAliases($this->aliases); - - if (!$result) { - $this->serverError( - _('Could not create aliases.'), - 500, - $this->format - ); - return; - } - - $member = new Group_member(); - - $member->group_id = $group->id; - $member->profile_id = $this->user->id; - $member->is_admin = 1; - $member->created = $group->created; - - $result = $member->insert(); - - if (!$result) { - common_log_db_error($member, 'INSERT', __FILE__); - $this->serverError( - _('Could not set group membership.'), - 500, - $this->format - ); - return; - } - - $group->query('COMMIT'); - + $group = User_group::register(array('nickname' => $this->nickname, + 'fullname' => $this->fullname, + 'homepage' => $this->homepage, + 'description' => $this->description, + 'location' => $this->location, + 'aliases' => $this->aliases, + 'userid' => $this->user->id)); switch($this->format) { case 'xml': $this->showSingleXmlGroup($group); diff --git a/actions/apistatusesupdate.php b/actions/apistatusesupdate.php index 7ddf7703b..85a7c8c08 100644 --- a/actions/apistatusesupdate.php +++ b/actions/apistatusesupdate.php @@ -85,7 +85,7 @@ class ApiStatusesUpdateAction extends ApiAuthAction $this->lat = $this->trimmed('lat'); $this->lon = $this->trimmed('long'); - if (empty($this->source) || in_array($source, self::$reserved_sources)) { + if (empty($this->source) || in_array($this->source, self::$reserved_sources)) { $this->source = 'api'; } diff --git a/actions/designadminpanel.php b/actions/designadminpanel.php index d1aadc8c2..7c71c032a 100644 --- a/actions/designadminpanel.php +++ b/actions/designadminpanel.php @@ -74,7 +74,7 @@ class DesignadminpanelAction extends AdminPanelAction } /** - * Show the site admin panel form + * Get the default design and show the design admin panel form * * @return void */ @@ -82,7 +82,6 @@ class DesignadminpanelAction extends AdminPanelAction function showForm() { $this->design = Design::siteDesign(); - $form = new DesignAdminPanelForm($this); $form->show(); return; @@ -101,8 +100,7 @@ class DesignadminpanelAction extends AdminPanelAction } else if ($this->arg('defaults')) { $this->restoreDefaults(); } else { - $this->success = false; - $this->message = 'Unexpected form submission.'; + $this->clientError(_('Unexpected form submission.')); } } @@ -114,7 +112,6 @@ class DesignadminpanelAction extends AdminPanelAction function saveDesignSettings() { - // Workaround for PHP returning empty $_POST and $_FILES when POST // length > post_max_size in php.ini @@ -124,8 +121,7 @@ class DesignadminpanelAction extends AdminPanelAction ) { $msg = _('The server was unable to handle that much POST ' . 'data (%s bytes) due to its current configuration.'); - $this->success = false; - $this->msg = $e->getMessage(sprintf($msg, $_SERVER['CONTENT_LENGTH'])); + $this->clientException(sprintf($msg, $_SERVER['CONTENT_LENGTH'])); return; } @@ -133,25 +129,30 @@ class DesignadminpanelAction extends AdminPanelAction $bgimage = $this->saveBackgroundImage(); - static $settings = array('theme'); + static $settings = array( + 'site' => array('theme', 'logo'), + 'theme' => array('server', 'dir', 'path'), + 'avatar' => array('server', 'dir', 'path'), + 'background' => array('server', 'dir', 'path') + ); + $values = array(); - foreach ($settings as $setting) { - $values[$setting] = $this->trimmed($setting); + foreach ($settings as $section => $parts) { + foreach ($parts as $setting) { + $values[$section][$setting] = $this->trimmed("$section-$setting"); + } } - // This throws an exception on validation errors - try { - $bgcolor = new WebColor($this->trimmed('design_background')); - $ccolor = new WebColor($this->trimmed('design_content')); - $sbcolor = new WebColor($this->trimmed('design_sidebar')); - $tcolor = new WebColor($this->trimmed('design_text')); - $lcolor = new WebColor($this->trimmed('design_links')); - } catch (WebColorException $e) { - $this->success = false; - $this->msg = $e->getMessage(); - return; - } + $this->validate($values); + + // assert(all values are valid); + + $bgcolor = new WebColor($this->trimmed('design_background')); + $ccolor = new WebColor($this->trimmed('design_content')); + $sbcolor = new WebColor($this->trimmed('design_sidebar')); + $tcolor = new WebColor($this->trimmed('design_text')); + $lcolor = new WebColor($this->trimmed('design_links')); $onoff = $this->arg('design_background-image_onoff'); @@ -166,16 +167,14 @@ class DesignadminpanelAction extends AdminPanelAction $tile = $this->boolean('design_background-image_repeat'); - $this->validate($values); - - // assert(all values are valid); - $config = new Config(); $config->query('BEGIN'); - foreach ($settings as $setting) { - Config::save('site', $setting, $values[$setting]); + foreach ($settings as $section => $parts) { + foreach ($parts as $setting) { + Config::save($section, $setting, $values[$section][$setting]); + } } if (isset($bgimage)) { @@ -197,32 +196,6 @@ class DesignadminpanelAction extends AdminPanelAction $config->query('COMMIT'); return; - - } - - /** - * Delete a design setting - * - * @return mixed $result false if something didn't work - */ - - function deleteSetting($section, $setting) - { - $config = new Config(); - - $config->section = $section; - $config->setting = $setting; - - if ($config->find(true)) { - $result = $config->delete(); - if (!$result) { - common_log_db_error($config, 'DELETE', __FILE__); - $this->clientError(_("Unable to delete design setting.")); - return null; - } - } - - return $result; } /** @@ -233,6 +206,7 @@ class DesignadminpanelAction extends AdminPanelAction function restoreDefaults() { + $this->deleteSetting('site', 'logo'); $this->deleteSetting('site', 'theme'); $settings = array( @@ -243,6 +217,8 @@ class DesignadminpanelAction extends AdminPanelAction foreach ($settings as $setting) { $this->deleteSetting('design', $setting); } + + // XXX: Should we restore the default dir settings, etc.? --Z } /** @@ -264,8 +240,7 @@ class DesignadminpanelAction extends AdminPanelAction $imagefile = ImageFile::fromUpload('design_background-image_file'); } catch (Exception $e) { - $this->success = false; - $this->msg = $e->getMessage(); + $this->clientError('Unable to save background image.'); return; } @@ -297,8 +272,48 @@ class DesignadminpanelAction extends AdminPanelAction function validate(&$values) { - if (!in_array($values['theme'], Theme::listAvailable())) { - $this->clientError(sprintf(_("Theme not available: %s"), $values['theme'])); + + if (!empty($values['site']['logo']) && + !Validate::uri($values['site']['logo'], array('allowed_schemes' => array('http', 'https')))) { + $this->clientError(_("Invalid logo URL.")); + } + + if (!in_array($values['site']['theme'], Theme::listAvailable())) { + $this->clientError(sprintf(_("Theme not available: %s"), $values['site']['theme'])); + } + + // Make sure the directories are there + + if (!empty($values['theme']['dir']) && !is_readable($values['theme']['dir'])) { + $this->clientError(sprintf(_("Theme directory not readable: %s"), $values['theme']['dir'])); + } + + if (empty($values['avatar']['dir']) || !is_writable($values['avatar']['dir'])) { + $this->clientError(sprintf(_("Avatar directory not writable: %s"), $values['avatar']['dir'])); + } + + if (empty($values['background']['dir']) || !is_writable($values['background']['dir'])) { + $this->clientError(sprintf(_("Background directory not writable: %s"), $values['background']['dir'])); + } + + // Do we need to do anything else but validate the + // other fields for length? Design settings are + // validated elsewhere --Z + + static $settings = array( + 'theme' => array('server', 'path'), + 'avatar' => array('server', 'path'), + 'background' => array('server', 'path') + ); + + foreach ($settings as $section => $parts) { + foreach ($parts as $setting) { + if (mb_strlen($values[$section][$setting]) > 255) { + $this->clientError(sprintf(_("Max length for %s %s is 255 characters."), + $section, $setting)); + return; + } + } } } @@ -332,7 +347,7 @@ class DesignadminpanelAction extends AdminPanelAction } -class DesignAdminPanelForm extends Form +class DesignAdminPanelForm extends AdminForm { /** @@ -393,33 +408,85 @@ class DesignAdminPanelForm extends Form function formData() { - $design = $this->out->design; + $this->out->elementStart('fieldset', array('id' => 'settings_design_logo')); + $this->out->element('legend', null, _('Change logo')); - $themes = Theme::listAvailable(); + $this->out->elementStart('ul', 'form_data'); - asort($themes); + $this->li(); + $this->input('logo', _('Site logo'), 'Logo for the site (full URL)', 'site'); + $this->unli(); - $themes = array_combine($themes, $themes); + $this->out->elementEnd('ul'); - $this->out->elementStart('fieldset', array('id' => - 'settings_design_theme')); + $this->out->elementEnd('fieldset'); + $this->out->elementStart('fieldset', array('id' => 'settings_design_theme')); $this->out->element('legend', null, _('Change theme')); + $this->out->elementStart('ul', 'form_data'); - $this->out->elementStart('li'); - $this->out->dropdown('theme', _('Theme'), + $themes = Theme::listAvailable(); + + // XXX: listAvailable() can return an empty list if you + // screw up your settings, so just in case: + + if (empty($themes)) { + $themes = array('default', 'default'); + } + + asort($themes); + $themes = array_combine($themes, $themes); + + $this->li(); + $this->out->dropdown('site-theme', _('Site theme'), $themes, _('Theme for the site.'), - false, $this->value('theme')); - $this->out->elementEnd('li'); + false, $this->value('theme', 'site')); + $this->unli(); + + $this->li(); + $this->input('server', _('Theme server'), 'Server for themes', 'theme'); + $this->unli(); + + $this->li(); + $this->input('path', _('Theme path'), 'Web path to themes', 'theme'); + $this->unli(); + + $this->li(); + $this->input('dir', _('Theme directory'), 'Directory where themes are located', 'theme'); + $this->unli(); + + $this->out->elementEnd('ul'); + + $this->out->elementEnd('fieldset'); + $this->out->elementStart('fieldset', array('id' => 'settings_design_avatar')); + $this->out->element('legend', null, _('Avatar Settings')); + + $this->out->elementStart('ul', 'form_data'); + + $this->li(); + $this->input('server', _('Avatar server'), 'Server for avatars', 'avatar'); + $this->unli(); + + $this->li(); + $this->input('path', _('Avatar path'), 'Web path to avatars', 'avatar'); + $this->unli(); + + $this->li(); + $this->input('dir', _('Avatar directory'), 'Directory where avatars are located', 'avatar'); + $this->unli(); + $this->out->elementEnd('ul'); + $this->out->elementEnd('fieldset'); + $design = $this->out->design; $this->out->elementStart('fieldset', array('id' => 'settings_design_background-image')); $this->out->element('legend', null, _('Change background image')); $this->out->elementStart('ul', 'form_data'); - $this->out->elementStart('li'); + + $this->li(); $this->out->element('label', array('for' => 'design_background-image_file'), _('Background')); $this->out->element('input', array('name' => 'design_background-image_file', @@ -432,7 +499,7 @@ class DesignAdminPanelForm extends Form 'type' => 'hidden', 'id' => 'MAX_FILE_SIZE', 'value' => ImageFile::maxFileSizeInt())); - $this->out->elementEnd('li'); + $this->unli(); if (!empty($design->backgroundimage)) { @@ -474,27 +541,40 @@ class DesignAdminPanelForm extends Form 'class' => 'radio'), _('Off')); $this->out->element('p', 'form_guide', _('Turn background image on or off.')); - $this->out->elementEnd('li'); + $this->unli(); - $this->out->elementStart('li'); + $this->li(); $this->out->checkbox('design_background-image_repeat', _('Tile background image'), ($design->disposition & BACKGROUND_TILE) ? true : false); - $this->out->elementEnd('li'); + $this->unli(); } + $this->li(); + $this->input('server', _('Background server'), 'Server for backgrounds', 'background'); + $this->unli(); + + $this->li(); + $this->input('path', _('Background path'), 'Web path to backgrounds', 'background'); + $this->unli(); + + $this->li(); + $this->input('dir', _('Background directory'), 'Directory where backgrounds are located', 'background'); + $this->unli(); + $this->out->elementEnd('ul'); $this->out->elementEnd('fieldset'); $this->out->elementStart('fieldset', array('id' => 'settings_design_color')); $this->out->element('legend', null, _('Change colours')); + $this->out->elementStart('ul', 'form_data'); try { $bgcolor = new WebColor($design->backgroundcolor); - $this->out->elementStart('li'); + $this->li(); $this->out->element('label', array('for' => 'swatch-1'), _('Background')); $this->out->element('input', array('name' => 'design_background', 'type' => 'text', @@ -503,11 +583,11 @@ class DesignAdminPanelForm extends Form 'maxlength' => '7', 'size' => '7', 'value' => '')); - $this->out->elementEnd('li'); + $this->unli(); $ccolor = new WebColor($design->contentcolor); - $this->out->elementStart('li'); + $this->li(); $this->out->element('label', array('for' => 'swatch-2'), _('Content')); $this->out->element('input', array('name' => 'design_content', 'type' => 'text', @@ -516,11 +596,11 @@ class DesignAdminPanelForm extends Form 'maxlength' => '7', 'size' => '7', 'value' => '')); - $this->out->elementEnd('li'); + $this->unli(); $sbcolor = new WebColor($design->sidebarcolor); - $this->out->elementStart('li'); + $this->li(); $this->out->element('label', array('for' => 'swatch-3'), _('Sidebar')); $this->out->element('input', array('name' => 'design_sidebar', 'type' => 'text', @@ -529,11 +609,11 @@ class DesignAdminPanelForm extends Form 'maxlength' => '7', 'size' => '7', 'value' => '')); - $this->out->elementEnd('li'); + $this->unli(); $tcolor = new WebColor($design->textcolor); - $this->out->elementStart('li'); + $this->li(); $this->out->element('label', array('for' => 'swatch-4'), _('Text')); $this->out->element('input', array('name' => 'design_text', 'type' => 'text', @@ -542,11 +622,11 @@ class DesignAdminPanelForm extends Form 'maxlength' => '7', 'size' => '7', 'value' => '')); - $this->out->elementEnd('li'); + $this->unli(); $lcolor = new WebColor($design->linkcolor); - $this->out->elementStart('li'); + $this->li(); $this->out->element('label', array('for' => 'swatch-5'), _('Links')); $this->out->element('input', array('name' => 'design_links', 'type' => 'text', @@ -555,49 +635,16 @@ class DesignAdminPanelForm extends Form 'maxlength' => '7', 'size' => '7', 'value' => '')); - $this->out->elementEnd('li'); + $this->unli(); } catch (WebColorException $e) { common_log(LOG_ERR, 'Bad color values in site design: ' . $e->getMessage()); } - $this->out->elementEnd('ul'); $this->out->elementEnd('fieldset'); - } - - /** - * 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) - { - $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); - } - return $value; + $this->out->elementEnd('ul'); } /** @@ -618,5 +665,27 @@ class DesignAdminPanelForm extends Form 'title' => _('Reset back to default'))); $this->out->submit('save', _('Save'), 'submit form_action-secondary', - 'save', _('Save design')); } + 'save', _('Save design')); + } + + + /** + * Utility to simplify some of the duplicated code around + * params and settings. Overriding the input() in the base class + * to handle a whole bunch of cases of settings with the same + * name under different sections. + * + * @param string $setting Name of the setting + * @param string $title Title to use for the input + * @param string $instructions Instructions for this field + * @param string $section config section, default = 'site' + * + * @return void + */ + + function input($setting, $title, $instructions, $section='site') + { + $this->out->input("$section-$setting", $title, $this->value($setting, $section), $instructions); + } + } diff --git a/actions/emailsettings.php b/actions/emailsettings.php index 67b991cdc..761aaa8f3 100644 --- a/actions/emailsettings.php +++ b/actions/emailsettings.php @@ -95,7 +95,7 @@ class EmailsettingsAction extends AccountSettingsAction 'class' => 'form_settings', 'action' => common_local_url('emailsettings'))); - + $this->elementStart('fieldset'); $this->elementStart('fieldset', array('id' => 'settings_email_address')); $this->element('legend', null, _('Address')); $this->hidden('token', common_session_token()); @@ -194,6 +194,7 @@ class EmailsettingsAction extends AccountSettingsAction $this->elementEnd('ul'); $this->submit('save', _('Save')); $this->elementEnd('fieldset'); + $this->elementEnd('fieldset'); $this->elementEnd('form'); } diff --git a/actions/login.php b/actions/login.php index ad57dd667..63955e3f5 100644 --- a/actions/login.php +++ b/actions/login.php @@ -133,7 +133,7 @@ class LoginAction extends Action return; } - $nickname = common_canonical_nickname($this->trimmed('nickname')); + $nickname = $this->trimmed('nickname'); $password = $this->arg('password'); $user = common_check_user($nickname, $password); @@ -146,7 +146,7 @@ class LoginAction extends Action // success! if (!common_set_user($user)) { - $this->serverError(_('Error setting user.')); + $this->serverError(_('Error setting user. You are probably not authorized.')); return; } diff --git a/actions/newgroup.php b/actions/newgroup.php index 80da9861a..25da7f8fc 100644 --- a/actions/newgroup.php +++ b/actions/newgroup.php @@ -186,45 +186,13 @@ class NewgroupAction extends Action assert(!is_null($cur)); - $group = new User_group(); - - $group->query('BEGIN'); - - $group->nickname = $nickname; - $group->fullname = $fullname; - $group->homepage = $homepage; - $group->description = $description; - $group->location = $location; - $group->created = common_sql_now(); - - $result = $group->insert(); - - if (!$result) { - common_log_db_error($group, 'INSERT', __FILE__); - $this->serverError(_('Could not create group.')); - } - - $result = $group->setAliases($aliases); - - if (!$result) { - $this->serverError(_('Could not create aliases.')); - } - - $member = new Group_member(); - - $member->group_id = $group->id; - $member->profile_id = $cur->id; - $member->is_admin = 1; - $member->created = $group->created; - - $result = $member->insert(); - - if (!$result) { - common_log_db_error($member, 'INSERT', __FILE__); - $this->serverError(_('Could not set group membership.')); - } - - $group->query('COMMIT'); + $group = User_group::register(array('nickname' => $nickname, + 'fullname' => $fullname, + 'homepage' => $homepage, + 'description' => $description, + 'location' => $location, + 'aliases' => $aliases, + 'userid' => $cur->id)); common_redirect($group->homeUrl(), 303); } diff --git a/actions/profilesettings.php b/actions/profilesettings.php index 0a0cc5997..359664096 100644 --- a/actions/profilesettings.php +++ b/actions/profilesettings.php @@ -323,7 +323,7 @@ class ProfilesettingsAction extends AccountSettingsAction $result = $profile->update($orig_profile); - if (!$result) { + if ($result === false) { common_log_db_error($profile, 'UPDATE', __FILE__); $this->serverError(_('Couldn\'t save profile.')); return; diff --git a/actions/siteadminpanel.php b/actions/siteadminpanel.php index c316f8e17..916b9ebfb 100644 --- a/actions/siteadminpanel.php +++ b/actions/siteadminpanel.php @@ -91,10 +91,12 @@ class SiteadminpanelAction extends AdminPanelAction function saveSettings() { static $settings = array('site' => array('name', 'broughtby', 'broughtbyurl', - 'email', 'timezone', 'language'), + 'email', 'timezone', 'language', + 'ssl', 'sslserver', 'site', 'path', + 'textlimit', 'dupelimit', 'locale_path'), 'snapshot' => array('run', 'reporturl', 'frequency')); - static $booleans = array('site' => array('private')); + static $booleans = array('site' => array('private', 'inviteonly', 'closed', 'fancy')); $values = array(); @@ -190,10 +192,42 @@ class SiteadminpanelAction extends AdminPanelAction $this->clientError(_("Snapshot frequency must be a number.")); } + // Validate SSL setup + + if (in_array($values['site']['ssl'], array('sometimes', 'always'))) { + if (empty($values['site']['sslserver'])) { + $this->clientError(_("You must set an SSL sever when enabling SSL.")); + } + } + + if (mb_strlen($values['site']['sslserver']) > 255) { + $this->clientError(_("Invalid SSL server. Max length is 255 characters.")); + } + + // Validate text limit + + if (!Validate::number($values['site']['textlimit'], array('min' => 140))) { + $this->clientError(_("Minimum text limit is 140c.")); + } + + // Validate dupe limit + + if (!Validate::number($values['site']['dupelimit'], array('min' => 1))) { + $this->clientError(_("Dupe limit must 1 or more seconds.")); + } + + // Validate locales path + + // XXX: What else do we need to validate for lacales path here? --Z + + if (!empty($values['site']['locale_path']) && !is_readable($values['site']['locale_path'])) { + $this->clientError(sprintf(_("Locales directory not readable: %s"), $values['site']['locale_path'])); + } + } } -class SiteAdminPanelForm extends Form +class SiteAdminPanelForm extends AdminForm { /** * ID of the form @@ -236,15 +270,19 @@ class SiteAdminPanelForm extends Form function formData() { + $this->out->elementStart('fieldset', array('id' => 'settings_admin_general')); + $this->out->element('legend', null, _('General')); $this->out->elementStart('ul', 'form_data'); $this->li(); $this->input('name', _('Site name'), _('The name of your site, like "Yourcompany Microblog"')); $this->unli(); + $this->li(); $this->input('broughtby', _('Brought by'), _('Text used for credits link in footer of each page')); $this->unli(); + $this->li(); $this->input('broughtbyurl', _('Brought by URL'), _('URL used for credits link in footer of each page')); @@ -252,9 +290,13 @@ class SiteAdminPanelForm extends Form $this->li(); $this->input('email', _('Email'), _('contact email address for your site')); - $this->unli(); + $this->out->elementEnd('ul'); + $this->out->elementEnd('fieldset'); + $this->out->elementStart('fieldset', array('id' => 'settings_admin_local')); + $this->out->element('legend', null, _('Local')); + $this->out->elementStart('ul', 'form_data'); $timezones = array(); foreach (DateTimeZone::listIdentifiers() as $k => $v) { @@ -264,100 +306,123 @@ class SiteAdminPanelForm extends Form asort($timezones); $this->li(); - $this->out->dropdown('timezone', _('Default timezone'), $timezones, _('Default timezone for the site; usually UTC.'), true, $this->value('timezone')); - $this->unli(); - $this->li(); + $this->li(); $this->out->dropdown('language', _('Language'), get_nice_language_list(), _('Default site language'), false, $this->value('language')); + $this->unli(); + $this->li(); + $this->input('locale_path', _('Path to locales'), _('Directory path to locales')); $this->unli(); + $this->out->elementEnd('ul'); + $this->out->elementEnd('fieldset'); + + $this->out->elementStart('fieldset', array('id' => 'settings_admin_urls')); + $this->out->element('legend', null, _('URLs')); + $this->out->elementStart('ul', 'form_data'); $this->li(); + $this->input('server', _('Server'), _('Site\'s server hostname.')); + $this->unli(); + $this->li(); + $this->input('path', _('Path'), _('Site path')); + $this->unli(); + + $this->li(); + $this->out->checkbox('fancy', _('Fancy URLs'), + (bool) $this->value('fancy'), + _('Use fancy (more readable and memorable) URLs?')); + $this->unli(); + $this->out->elementEnd('ul'); + $this->out->elementEnd('fieldset'); + + $this->out->elementStart('fieldset', array('id' => 'settings_admin_access')); + $this->out->element('legend', null, _('Access')); + $this->out->elementStart('ul', 'form_data'); + $this->li(); $this->out->checkbox('private', _('Private'), (bool) $this->value('private'), _('Prohibit anonymous users (not logged in) from viewing site?')); + $this->unli(); + $this->li(); + $this->out->checkbox('inviteonly', _('Invite only'), + (bool) $this->value('inviteonly'), + _('Make registration invitation only.')); $this->unli(); $this->li(); + $this->out->checkbox('closed', _('Closed'), + (bool) $this->value('closed'), + _('Disable new registrations.')); + $this->unli(); + $this->out->elementEnd('ul'); + $this->out->elementEnd('fieldset'); + $this->out->elementStart('fieldset', array('id' => 'settings_admin_snapshots')); + $this->out->element('legend', null, _('Snapshots')); + $this->out->elementStart('ul', 'form_data'); + $this->li(); $snapshot = array('web' => _('Randomly during Web hit'), 'cron' => _('In a scheduled job'), 'never' => _('Never')); - $this->out->dropdown('run', _('Data snapshots'), $snapshot, _('When to send statistical data to status.net servers'), false, $this->value('run', 'snapshot')); - $this->unli(); - $this->li(); + $this->li(); $this->input('frequency', _('Frequency'), _('Snapshots will be sent once every N Web hits'), 'snapshot'); - $this->unli(); $this->li(); - $this->input('reporturl', _('Report URL'), _('Snapshots will be sent to this URL'), 'snapshot'); - $this->unli(); - $this->out->elementEnd('ul'); - } - - /** - * 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 - * @param string $section config section, default = 'site' - * - * @return void - */ + $this->out->elementEnd('fieldset'); - function input($setting, $title, $instructions, $section='site') - { - $this->out->input($setting, $title, $this->value($setting, $section), $instructions); - } + $this->out->elementStart('fieldset', array('id' => 'settings_admin_ssl')); + $this->out->element('legend', null, _('SSL')); + $this->out->elementStart('ul', 'form_data'); + $this->li(); + $ssl = array('never' => _('Never'), + 'sometimes' => _('Sometimes'), + 'always' => _('Always')); - /** - * Utility to simplify getting the posted-or-stored setting value - * - * @param string $setting Name of the setting - * @param string $main configuration section, default = 'site' - * - * @return string param value if posted, or current config value - */ + $this->out->dropdown('ssl', _('Use SSL'), + $ssl, _('When to use SSL'), + false, $this->value('ssl', 'site')); + $this->unli(); - function value($setting, $main='site') - { - $value = $this->out->trimmed($setting); - if (empty($value)) { - $value = common_config($main, $setting); - } - return $value; - } + $this->li(); + $this->input('sslserver', _('SSL Server'), + _('Server to direct SSL requests to')); + $this->unli(); + $this->out->elementEnd('ul'); + $this->out->elementEnd('fieldset'); - function li() - { - $this->out->elementStart('li'); - } + $this->out->elementStart('fieldset', array('id' => 'settings_admin_limits')); + $this->out->element('legend', null, _('Limits')); + $this->out->elementStart('ul', 'form_data'); + $this->li(); + $this->input('textlimit', _('Text limit'), _('Maximum number of characters for notices.')); + $this->unli(); - function unli() - { - $this->out->elementEnd('li'); + $this->li(); + $this->input('dupelimit', _('Dupe limit'), _('How long users must wait (in seconds) to post the same thing again.')); + $this->unli(); + $this->out->elementEnd('ul'); + $this->out->elementEnd('fieldset'); } /** |