X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=lib%2Fadminpanelaction.php;h=d43ea76984df4eb9f651a920638c28603a1f087a;hb=60e0f0426133544eaaea7ff84da5f02ca86bd8cc;hp=6d4b974c3773c03513f9bf23ecbce46469b3c25a;hpb=1f5f5474f175a8248b362f8be4ff23bb5e971305;p=quix0rs-gnu-social.git diff --git a/lib/adminpanelaction.php b/lib/adminpanelaction.php index 6d4b974c37..d43ea76984 100644 --- a/lib/adminpanelaction.php +++ b/lib/adminpanelaction.php @@ -70,7 +70,7 @@ class AdminPanelAction extends Action if (!common_logged_in()) { $this->clientError(_('Not logged in.')); - return; + return false; } $user = common_current_user(); @@ -94,7 +94,18 @@ class AdminPanelAction extends Action if (!$user->hasRight(Right::CONFIGURESITE)) { $this->clientError(_('You cannot make changes to this site.')); - return; + return false; + } + + // This panel must be enabled + + $name = $this->trimmed('action'); + + $name = mb_substr($name, 0, -10); + + if (!self::canAdmin($name)) { + $this->clientError(_('Changes to that panel are not allowed.'), 403); + return false; } return true; @@ -160,6 +171,24 @@ class AdminPanelAction extends Action $this->showForm(); } + /** + * Show content block. Overrided just to add a special class + * to the content div to allow styling. + * + * @return nothing + */ + function showContentBlock() + { + $this->elementStart('div', array('id' => 'content', 'class' => 'admin')); + $this->showPageTitle(); + $this->showPageNoticeBlock(); + $this->elementStart('div', array('id' => 'content_inner')); + // show the actual content (forms, lists, whatever) + $this->showContent(); + $this->elementEnd('div'); + $this->elementEnd('div'); + } + /** * show human-readable instructions for the page, or * a success/failure on save. @@ -224,62 +253,48 @@ class AdminPanelAction extends Action $this->clientError(_('saveSettings() not implemented.')); return; } -} - -/** - * Menu for public group of actions - * - * @category Output - * @package StatusNet - * @author Evan Prodromou - * @author Sarven Capadisli - * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 - * @link http://status.net/ - * - * @see Widget - */ - -class AdminPanelNav extends Widget -{ - var $action = null; /** - * Construction + * Delete a design setting * - * @param Action $action current action, used for output - */ - - function __construct($action=null) - { - parent::__construct($action); - $this->action = $action; - } - - /** - * Show the menu + * // XXX: Maybe this should go in Design? --Z * - * @return void + * @return mixed $result false if something didn't work */ - function show() + function deleteSetting($section, $setting) { - $action_name = $this->action->trimmed('action'); + $config = new Config(); - $this->action->elementStart('ul', array('class' => 'nav')); + $config->section = $section; + $config->setting = $setting; - if (Event::handle('StartAdminPanelNav', array($this))) { + 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; + } + } - $this->out->menuItem(common_local_url('siteadminpanel'), _('Site'), - _('Basic site configuration'), $action_name == 'siteadminpanel', 'nav_site_admin_panel'); + return $result; + } - Event::handle('EndAdminPanelNav', array($this)); + function canAdmin($name) + { + $isOK = false; + + if (Event::handle('AdminPanelCheck', array($name, &$isOK))) { + $isOK = in_array($name, common_config('admin', 'panels')); } - $this->action->elementEnd('ul'); + + return $isOK; } } /** - * Menu for admin group of actions + * Menu for public group of actions * * @category Output * @package StatusNet @@ -291,7 +306,7 @@ class AdminPanelNav extends Widget * @see Widget */ -class PublicGroupNav extends Widget +class AdminPanelNav extends Widget { var $action = null; @@ -319,26 +334,51 @@ class PublicGroupNav extends Widget $this->action->elementStart('ul', array('class' => 'nav')); - if (Event::handle('StartPublicGroupNav', array($this))) { - $this->out->menuItem(common_local_url('public'), _('Public'), - _('Public timeline'), $action_name == 'public', 'nav_timeline_public'); + if (Event::handle('StartAdminPanelNav', array($this))) { - $this->out->menuItem(common_local_url('groups'), _('Groups'), - _('User groups'), $action_name == 'groups', 'nav_groups'); + if (AdminPanelAction::canAdmin('site')) { + $this->out->menuItem(common_local_url('siteadminpanel'), _('Site'), + _('Basic site configuration'), $action_name == 'siteadminpanel', 'nav_site_admin_panel'); + } - $this->out->menuItem(common_local_url('publictagcloud'), _('Recent tags'), - _('Recent tags'), $action_name == 'publictagcloud', 'nav_recent-tags'); + if (AdminPanelAction::canAdmin('design')) { + $this->out->menuItem(common_local_url('designadminpanel'), _('Design'), + _('Design configuration'), $action_name == 'designadminpanel', 'nav_design_admin_panel'); + } + + if (AdminPanelAction::canAdmin('user')) { + $this->out->menuItem(common_local_url('useradminpanel'), _('User'), + _('User configuration'), $action_name == 'useradminpanel', 'nav_user_admin_panel'); + } - if (count(common_config('nickname', 'featured')) > 0) { - $this->out->menuItem(common_local_url('featured'), _('Featured'), - _('Featured users'), $action_name == 'featured', 'nav_featured'); + if (AdminPanelAction::canAdmin('access')) { + $this->out->menuItem(common_local_url('accessadminpanel'), _('Access'), + _('Access configuration'), $action_name == 'accessadminpanel', 'nav_access_admin_panel'); } - $this->out->menuItem(common_local_url('favorited'), _('Popular'), - _("Popular notices"), $action_name == 'favorited', 'nav_timeline_favorited'); + if (AdminPanelAction::canAdmin('paths')) { + $this->out->menuItem(common_local_url('pathsadminpanel'), _('Paths'), + _('Paths configuration'), $action_name == 'pathsadminpanel', 'nav_paths_admin_panel'); + } - Event::handle('EndPublicGroupNav', array($this)); + if (AdminPanelAction::canAdmin('sessions')) { + $this->out->menuItem(common_local_url('sessionsadminpanel'), _('Sessions'), + _('Sessions configuration'), $action_name == 'sessionsadminpanel', 'nav_sessions_admin_panel'); + } + + if (AdminPanelAction::canAdmin('sitenotice')) { + $this->out->menuItem(common_local_url('sitenoticeadminpanel'), _('Site notice'), + _('Edit site notice'), $action_name == 'sitenoticeadminpanel', 'nav_sitenotice_admin_panel'); + } + + if (AdminPanelAction::canAdmin('snapshot')) { + $this->out->menuItem(common_local_url('snapshotadminpanel'), _('Snapshots'), + _('Snapshots configuration'), $action_name == 'snapshotadminpanel', 'nav_snapshot_admin_panel'); + } + + Event::handle('EndAdminPanelNav', array($this)); } $this->action->elementEnd('ul'); } + }