在MediaWiki中隐藏除admin和官僚之外的所有用户的工具箱

时间:2014-04-16 05:43:52

标签: mediawiki

在skins / Vector.php中,我可以隐藏已登出用户的工具箱

添加

全球$ wgUser;

然后

                            case 'TOOLBOX':
                               if ( $wgUser->isLoggedIn() ) {
                                    $this->renderPortal( 'tb', $this->getToolbox(), 'toolbox', 'SkinTemplateToolboxEnd' );
               }

但不推荐使用User :: isSysop()等。建议使用$ user-> isAllowed来指定权限,但如何使用它来指定管理员和官僚组?我应该使用其他功能吗?

MediaWiki 1.22.2
PHP 5.3.6-13ubuntu3.10 (apache2handler)
MySQL 5.1.69-0ubuntu0.11.10.1-log

1 个答案:

答案 0 :(得分:1)

User::isAllowed()要求获得某些操作的权限,而不是用户组(将其留给wiki管理员为不同的用户组分配不同的权限)。在您的情况下,您需要一个新的用户权限,“see-toolbar”或类似的东西,您可以分配给,例如sysop中的LocalSettings.php用户组:

$wgGroupPermissions['sysop']['see-toolbar']    = true;

您的扩展程序还必须添加权限列表:$wgAvailableRights[] = 'see-toolbar';

最后,你会要求获得这样的许可:

if ( $user->isAllowed('see-toolbar') ) {

    print toolbar here

}

请注意,任何用户仍可以通过多种方式绕过此限制,例如:通过在其设置中切换皮肤(或通过在网址中附加?useskin=skinname)。您可能希望确保侧边栏缓存也已关闭(默认情况下它已关闭)。