Как да получа списък с пространства за конкретно wiki?

Бих искал да получа пространства от всички уикита, които имам в моята xwiki ферма

Написах този код:

#set($WikiManager = $xwiki.wikimanager)
#set($wikiList = $WikiManager.getAllWikis())
$msg.get("wikimanager.totalnumberofwiki") : $wikiList.size()
#if($wikiList.size()!=0)
  #foreach($wiki in $wikiList)
    * *$wiki*

    ## pb in this line below
    #set($spaces = $xwiki.getSpaces())

    <table>
      <tr><th>Spaces</th></tr>
      #foreach ($space in $spaces)
        <tr><td>$space</td></tr>
      #end
    </table>
  #end
#end

Но този скрипт ми дава само интервалите от текущото уики, където го изпълнявам.

Имате ли идея как да го оправя?

Благодаря ти за помощта.

Ерик


person user2610854    schedule 23.07.2013    source източник


Отговори (2)


Вероятно трябва да промените базата данни:

      #set($currentwiki = $xcontext.database)

      $xcontext.setDatabase($wikidoc.wikiName)

след това го променете обратно:

          $xcontext.setDatabase($currentwiki)
person Woolear    schedule 28.10.2013

Каза Woolear, трябва да превключите контекста на базата данни. В xwiki синтаксис 2.0 вашият код трябва да бъде:

{{velocity}}
#set($currentwiki = $xcontext.database)
#set($WikiManager = $xwiki.wikimanager)
#set($wikiList = $WikiManager.getAllWikis())
$msg.get("wikimanager.totalnumberofwiki") : $wikiList.size()
#if($wikiList.size()!=0)
  #foreach($wiki in $wikiList)
    === $wiki :

    |=Spaces
    ##switch database
    $xcontext.setDatabase($wiki.wikiName)
    #set($spaces = $xwiki.getSpaces())
      #foreach ($space in $spaces)
        |$space
      #end
  #end
#end
$xcontext.setDatabase($currentwiki)
{{/velocity}}
person jurevert    schedule 05.03.2014