1

我正在尝试创建一个自动索引,其中将显示空间中的所有页面。就像是:

  • 空间 1(公共)
    • 第 1 页(公开)
    • 第 2 页(私人)
      • 第 2.1 页(公开)
  • 空间2(公共)
    • 页面 A (私人)
    • B页(公开)

在哪里:

  • 公共:(权利:)Read=True用户可以点击访问内容。
  • 私人:(权利:)Read=False用户可以看到标题但不能点击。

如果用户对页面没有权限,read我希望他至少可以看到页面的标题,因为我可以继续列出能够read在孩子中看到的页面。

我有的:

#foreach($space in $xwiki.spaces) 
    #set($WebHome = $space + ".WebHome")
    #getChildrenOf($WebHome)
#end

现在递归getChildrenOf宏是:

#macro(getChildrenOf, $docName)
    #foreach($name in $xwiki.searchDocuments('where doc.parent = ? or doc.parent = ? order by doc.name', [$docName, "xwiki:$docName"]))
         #if($xwiki.hasAccessLevel('view', "xwiki:$name"))
             [[$xwiki.getDocument($name).getPlainTitle()>>$name]]
         #else
             $xwiki.getDocument($name).getPlainTitle()
         #end
         #getChildrenOf($name)
    #end
#end

结果:

  • else我得到一个显示功能$xwiki.getDocument($name).getPlainTitle()而不是页面标题的纯文本。

  • 如果我只写我得到的是:$name而不是第 2 页的标题。elseSpace_1.Page_2

为什么会这样?我该如何解决?

4

1 回答 1

0

$xwiki.getDocument($name)当当前用户对 $name 没有查看权限并且方法返回 null 时返回 null 速度行为是显示代码。

您可以$xwiki.getDocumentAsAuthor($name)改为使用脚本作者的权限访问文档。请参阅http://nexus.xwiki.org/nexus/service/local/repositories/releases/archive/org/xwiki/platform/xwiki-platform-oldcore/6.2/xwiki-platform-oldcore-6.2-javadoc.jar/! /com/xpn/xwiki/api/XWiki.html#getDocumentAsAuthor%28org.xwiki.model.reference.DocumentReference%29

于 2014-09-25T18:47:04.813 回答