DokuWiki的:我怎么能隐藏媒体从非登录用户管理器链接(dokuwiki: how can I

2019-08-17 22:12发布

DokuWiki中如何隐藏“媒体管理器”链接,或登录用户在顶部的任何链接,非?

Answer 1:

一种方法是更改​​模板是这样的:在/lib/tpl/dokuwiki/tpl_header.php:

            <?php
                if ($INFO['isadmin']) {
                    tpl_action('recent', 1, 'li'); //recent changes
                    tpl_action('media', 1, 'li'); //media manager
                    tpl_action('index', 1, 'li'); //sitemap
                }
            ?>


Answer 2:

如果没有用户登录,$ INFO [“用户信息”]为空

在/lib/tpl/dokuwiki/tpl_header.php更换

tpl_toolsevent('sitetools', array(
                    tpl_action('recent', true, 'li', true),
                    tpl_action('media', true, 'li', true),
                    tpl_action('index', true, 'li', true)
                ));

             if(!empty($INFO["userinfo"]))  {
                tpl_toolsevent('sitetools', array(
                    tpl_action('recent', true, 'li', true),
                    tpl_action('media', true, 'li', true),
                    tpl_action('index', true, 'li', true)
                ));
             }


Answer 3:

创建插件。 让我们假设插件名称是nositetoolsanon ,所以你需要创建下的文件lib/plugins/nositetoolsanon/action.php

<?php
if(!defined('DOKU_INC')) die();

class action_plugin_nositetoolsanon extends DokuWiki_Action_Plugin {
    public function getInfo(){
        return array('date'=>'2017-08-25', 'name'=>'No sitetools for anonymous users', 'author'=>'Phy25');
    }

    public function register(Doku_Event_Handler $controller) {
        $controller->register_hook('TEMPLATE_SITETOOLS_DISPLAY', 'BEFORE', $this, 'action_link');
    }

    public function action_link(&$event, $param){
        global $INFO;
        if(empty($INFO["userinfo"])){
            // more robust check by ACL: global $ID; if (auth_quickaclcheck($ID) < AUTH_READ)
            $event->preventDefault();
        }
    }
}

此方法适用于任何模板,并且不会被更新覆盖。

提示:如果您想对后腿谁是无法读取用户的命名空间,尝试设置$conf['sneaky_index'] = 1在配置文件中,但它可能会导致问题,如果更深层次的命名空间比上述那些更高的权限 。



Answer 4:

不是你要找的(也许有点晚了呢),但这里究竟是禁用的方式Media Manager链接所有(包括登录)用户:

  • 去管理面板, 配置设置 ;
  • 搜索禁用DokuWiki的行动 (选项名称: disableactions );
  • 其他操作 ,添加关键字media (见这里引用 )。

请注意,这将隐藏的链接给大家,但用户写访问仍可以通过点击编辑页面时,相应的按钮启动媒体管理器。



Answer 5:

最近,我有这个问题,我发现所选择的答案是不够的我。 我敢肯定,因为我使用的是Codowik模板,而不是默认情况下它没有工作。 这是我想出了利用sivann的答案。

我编辑/lib/tpl/codowik/tpl_header.php ,并将此顶部:

<?php
  if (!$INFO['isadmin']) {
    echo "<script>
        var newStyle = document.createElement('Style');
        newStyle.innerHTML = '#codowiki_search_ul a {display: none;}';
        document.head.appendChild(newStyle);
      </script>";
  }
?>

它相当的hackish,但我没有时间去深入探讨的模板是如何实现的,以及它的工作原理!



Answer 6:

我想只有在站点地图是向游客和注册用户(我用的网站作为一个博客)可见,所以只是想最近的变化和媒体链接,使我(管理员)可见。

这是我在“Greebo”改变,INC /菜单/ SiteMenu.php代码

    protected $types = array(
        //'Recent', // comment out stuff not required
        //'Media',
        'Index'     // leave sitemap for spiders
    );

    // add this function
    // remove the "&& $INFO['isadmin']" to allow all logged in users to see options
    public function __construct(){
        global $INPUT;
        global $INFO;
        if($INPUT->server->str('REMOTE_USER') && $INFO['isadmin']){
            $this->types = array( 'Recent', 'Media', 'Index' );
        }
    }



Answer 7:

我与“格雷波”解决方案

  • 找到INC /动作/忽略原始
  • 编辑方法tplContent():
public function tplContent() {
    global $INFO;
    if ( empty($INFO['userinfo']) ) {
                echo "<p>No way</p>";  
                return;
    }
    tpl_media();
}

因此,只有用户 - 但不是匿名的 - 可以看到媒体管理器。



Answer 8:

我的解决方案将可以被隐藏了太多的信息,但在这里我们去:

  1. 以管理员身份登录
  2. 进入管理部分
  3. 滚动到ACL(访问控制列表)管理
  4. 设置用户/组“@all”权限设置为“无”


文章来源: dokuwiki: how can I hide media manager link from non logged in users
标签: dokuwiki