Как получить список пробелов для конкретной вики?

Я хотел бы получить места для всех вики, которые у меня есть на моей ферме 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