if (!common_logged_in()) {
$this->clientError(_('Not logged in.'));
- return;
+ return false;
}
$user = common_current_user();
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 (!in_array($name, common_config('admin', 'panels'))) {
+ $this->clientError(_('Changes to that panel are not allowed.'), 403);
+ return false;
}
return true;
$this->clientError(_('saveSettings() not implemented.'));
return;
}
-}
-
-/**
- * Menu for public group of actions
- *
- * @category Output
- * @package StatusNet
- * @author Evan Prodromou <evan@status.net>
- * @author Sarven Capadisli <csarven@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/
- *
- * @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'));
-
- if (Event::handle('StartAdminPanelNav', array($this))) {
-
- $this->out->menuItem(common_local_url('siteadminpanel'), _('Site'),
- _('Basic site configuration'), $action_name == 'siteadminpanel', 'nav_site_admin_panel');
+ $config->section = $section;
+ $config->setting = $setting;
- Event::handle('EndAdminPanelNav', 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->action->elementEnd('ul');
+
+ return $result;
}
}
/**
- * Menu for admin group of actions
+ * Menu for public group of actions
*
* @category Output
* @package StatusNet
* @see Widget
*/
-class PublicGroupNav extends Widget
+class AdminPanelNav extends Widget
{
var $action = null;
$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 ($this->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 ($this->canAdmin('design')) {
+ $this->out->menuItem(common_local_url('designadminpanel'), _('Design'),
+ _('Design configuration'), $action_name == 'designadminpanel', 'nav_design_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 ($this->canAdmin('user')) {
+ $this->out->menuItem(common_local_url('useradminpanel'), _('User'),
+ _('User configuration'), $action_name == 'useradminpanel', 'nav_design_admin_panel');
}
- $this->out->menuItem(common_local_url('favorited'), _('Popular'),
- _("Popular notices"), $action_name == 'favorited', 'nav_timeline_favorited');
+ if ($this->canAdmin('access')) {
+ $this->out->menuItem(common_local_url('accessadminpanel'), _('Access'),
+ _('Access configuration'), $action_name == 'accessadminpanel', 'nav_design_admin_panel');
+ }
- Event::handle('EndPublicGroupNav', array($this));
+ if ($this->canAdmin('paths')) {
+ $this->out->menuItem(common_local_url('pathsadminpanel'), _('Paths'),
+ _('Paths configuration'), $action_name == 'pathsadminpanel', 'nav_design_admin_panel');
+ }
+
+ if ($this->canAdmin('sessions')) {
+ $this->out->menuItem(common_local_url('sessionsadminpanel'), _('Sessions'),
+ _('Sessions configuration'), $action_name == 'sessionsadminpanel', 'nav_design_admin_panel');
+ }
+
+ Event::handle('EndAdminPanelNav', array($this));
}
$this->action->elementEnd('ul');
}
+
+ function canAdmin($name)
+ {
+ return in_array($name, common_config('admin', 'panels'));
+ }
}