diff options
author | Brion Vibber <brion@pobox.com> | 2010-09-21 12:48:16 -0700 |
---|---|---|
committer | Brion Vibber <brion@pobox.com> | 2010-09-21 12:48:16 -0700 |
commit | 42dd460d3b9aa9a8ad147d00de9b6c8e209ab4e9 (patch) | |
tree | a11a63ee2e6fd349a2ee2b44e89791530b9c16ed /actions | |
parent | d342899677d208d7e300b29ad3a8d053e4c6f704 (diff) | |
parent | 1bc45e191d83633e00df9355aaeda3680d42f777 (diff) |
Merge branch 'master' into 0.9.x
Diffstat (limited to 'actions')
-rw-r--r-- | actions/designadminpanel.php | 19 | ||||
-rw-r--r-- | actions/licenseadminpanel.php | 303 | ||||
-rw-r--r-- | actions/pathsadminpanel.php | 2 | ||||
-rw-r--r-- | actions/sessionsadminpanel.php | 2 | ||||
-rw-r--r-- | actions/useradminpanel.php | 7 |
5 files changed, 325 insertions, 8 deletions
diff --git a/actions/designadminpanel.php b/actions/designadminpanel.php index 763737175..4285f7d73 100644 --- a/actions/designadminpanel.php +++ b/actions/designadminpanel.php @@ -71,7 +71,7 @@ class DesignadminpanelAction extends AdminPanelAction function getInstructions() { - return _('Design settings for this StatusNet site.'); + return _('Design settings for this StatusNet site'); } /** @@ -154,9 +154,22 @@ class DesignadminpanelAction extends AdminPanelAction $config->query('BEGIN'); - // Only update colors if the theme has not changed. + if ($themeChanged) { + // If the theme has changed, reset custom colors and let them pick + // up the new theme's defaults. + $colors = array('background', 'content', 'sidebar', 'text', 'link'); + foreach ($colors as $colorKey) { + // Clear from global config so we see defaults on this page... + $GLOBALS['config']['design'][$colorKey . 'color'] = false; - if (!$themeChanged) { + // And remove old settings from DB... + $this->deleteSetting('design', $colorKey . 'color'); + } + } else { + // Only save colors from the form if the theme has not changed. + // + // @fixme a future more ajaxy form should allow theme switch + // and color customization in one step. $bgcolor = new WebColor($this->trimmed('design_background')); $ccolor = new WebColor($this->trimmed('design_content')); diff --git a/actions/licenseadminpanel.php b/actions/licenseadminpanel.php new file mode 100644 index 000000000..c9aad5c4f --- /dev/null +++ b/actions/licenseadminpanel.php @@ -0,0 +1,303 @@ +<?php +/** + * StatusNet, the distributed open-source microblogging tool + * + * License administration panel + * + * PHP version 5 + * + * LICENCE: This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + * @category Settings + * @package StatusNet + * @author Zach Copley <zach@status.net> + * @copyright 2010 StatusNet, Inc. + * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 + * @link http://status.net/ + */ + +if (!defined('STATUSNET')) { + exit(1); +} + +/** + * License settings + * + * @category Admin + * @package StatusNet + * @author Zach Copley <zach@status.net> + * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 + * @link http://status.net/ + */ + +class LicenseadminpanelAction extends AdminPanelAction +{ + + /** + * Returns the page title + * + * @return string page title + */ + + function title() + { + // TRANS: User admin panel title + return _m('TITLE', 'License'); + } + + /** + * Instructions for using this form. + * + * @return string instructions + */ + + function getInstructions() + { + return _('License for this StatusNet site'); + } + + /** + * Show the site admin panel form + * + * @return void + */ + + function showForm() + { + $form = new LicenseAdminPanelForm($this); + $form->show(); + return; + } + + /** + * Save settings from the form + * + * @return void + */ + + function saveSettings() + { + static $settings = array( + 'license' => array('type', 'owner', 'url', 'title', 'image') + ); + + $values = array(); + + foreach ($settings as $section => $parts) { + foreach ($parts as $setting) { + $values[$section][$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'); + + foreach ($settings as $section => $parts) { + foreach ($parts as $setting) { + Config::save($section, $setting, $values[$section][$setting]); + } + } + + $config->query('COMMIT'); + + return; + } + + /** + * Validate License admin form values + * + * @param array &$values from the form + * + * @return nothing + */ + + function validate(&$values) + { + // Validate license type (shouldn't have to do it, but just in case) + + $types = array('private', 'allrightsreserved', 'cc'); + + if (!in_array($values['license']['type'], $types)) { + $this->clientError(_("Invalid license selection.")); + } + + // Make sure the user has set an owner if the site has a private + // license + + if ($values['license']['type'] == 'allrightsreserved' + && empty($values['license']['owner']) + ) { + $this->clientError( + _("You must specify the owner of the content when using the All Rights Reserved license.") + ); + } + + // Make sure the license title is not too long + if (mb_strlen($values['license']['type']) > 255) { + $this->clientError( + _("Invalid license title. Max length is 255 characters.") + ); + } + + // make sure the license URL and license image URL are valid URLs + + $options = array('allowed_schemes' => array('http', 'https')); + + if (!Validate::uri($values['license']['url'], $options)) { + $this->clientError(_("Invalid license URL.")); + } + + if (!Validate::uri($values['license']['image'], $options)) { + $this->clientError(_("Invalid license image URL.")); + } + } +} + +class LicenseAdminPanelForm extends AdminForm +{ + /** + * ID of the form + * + * @return int ID of the form + */ + + function id() + { + return 'licenseadminpanel'; + } + + /** + * class of the form + * + * @return string class of the form + */ + + function formClass() + { + return 'form_settings'; + } + + /** + * Action of the form + * + * @return string URL of the action + */ + + function action() + { + return common_local_url('licenseadminpanel'); + } + + /** + * Data elements of the form + * + * @return void + */ + + function formData() + { + $this->out->elementStart( + 'fieldset', array('id' => 'settings_license-selection') + ); + $this->out->element('legend', null, _('License selection')); + $this->out->elementStart('ul', 'form_data'); + + $this->li(); + + $types = array( + 'private' => _('Private'), + 'allrightsreserved' => _('All Rights Reserved'), + 'cc' => _('Creative Commons') + ); + + $this->out->dropdown( + 'type', + _('Type'), + $types, + _('Select license'), + false, + $this->value('type', 'license') + ); + + $this->unli(); + + $this->out->elementEnd('ul'); + $this->out->elementEnd('fieldset'); + + $this->out->elementStart( + 'fieldset', + array('id' => 'settings_license-details') + ); + $this->out->element('legend', null, _('License details')); + $this->out->elementStart('ul', 'form_data'); + + $this->li(); + $this->input( + 'owner', + _('Owner'), + _('Name of the owner of the site\'s content (if applicable).'), + 'license' + ); + $this->unli(); + + $this->li(); + $this->input( + 'title', + _('License Title'), + _('The title of the license.'), + 'license' + ); + $this->unli(); + + $this->li(); + $this->input( + 'url', + _('License URL'), + _('URL for more information about the license.'), + 'license' + ); + $this->unli(); + + $this->li(); + $this->input( + 'image', _('License Image URL'), + _('URL for an image to display with the license.'), + 'license' + ); + $this->unli(); + + $this->out->elementEnd('ul'); + $this->out->elementEnd('fieldset'); + } + + /** + * Action elements + * + * @return void + */ + + function formActions() + { + $this->out->submit( + 'submit', _('Save'), 'submit', null, _('Save license settings') + ); + } +} diff --git a/actions/pathsadminpanel.php b/actions/pathsadminpanel.php index 7ff3c2583..0c83aa29e 100644 --- a/actions/pathsadminpanel.php +++ b/actions/pathsadminpanel.php @@ -67,7 +67,7 @@ class PathsadminpanelAction extends AdminPanelAction function getInstructions() { - return _('Path and server settings for this StatusNet site.'); + return _('Path and server settings for this StatusNet site'); } /** diff --git a/actions/sessionsadminpanel.php b/actions/sessionsadminpanel.php index 4386ef844..e9bd1719f 100644 --- a/actions/sessionsadminpanel.php +++ b/actions/sessionsadminpanel.php @@ -62,7 +62,7 @@ class SessionsadminpanelAction extends AdminPanelAction function getInstructions() { - return _('Session settings for this StatusNet site.'); + return _('Session settings for this StatusNet site'); } /** diff --git a/actions/useradminpanel.php b/actions/useradminpanel.php index ee9c23076..04e0ca3e7 100644 --- a/actions/useradminpanel.php +++ b/actions/useradminpanel.php @@ -12,6 +12,7 @@ * (at your option) any later version. * * This program is distributed in the hope that it will be useful, + * * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. @@ -24,7 +25,7 @@ * @author Evan Prodromou <evan@status.net> * @author Zach Copley <zach@status.net> * @author Sarven Capadisli <csarven@status.net> - * @copyright 2008-2009 StatusNet, Inc. + * @copyright 2008-2010 StatusNet, Inc. * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 * @link http://status.net/ */ @@ -67,7 +68,7 @@ class UseradminpanelAction extends AdminPanelAction function getInstructions() { - return _('User settings for this StatusNet site.'); + return _('User settings for this StatusNet site'); } /** @@ -291,6 +292,6 @@ class UserAdminPanelForm extends AdminForm function formActions() { - $this->out->submit('submit', _('Save'), 'submit', null, _('Save site settings')); + $this->out->submit('submit', _('Save'), 'submit', null, _('Save user settings')); } } |