<?xml version="1.0" encoding="ISO-8859-1"?>

<xwikidoc>
<web>XWiki</web>
<name>Treeview</name>
<language></language>
<defaultLanguage>en</defaultLanguage>
<translation>0</translation>
<parent>Main.AllDocs</parent>
<creator>XWiki.Admin</creator>
<author>XWiki.Admin</author>
<customClass></customClass>
<contentAuthor>XWiki.Admin</contentAuthor>
<creationDate>1181560077000</creationDate>
<date>1181637097000</date>
<contentUpdateDate>1181637097000</contentUpdateDate>
<version>1.3</version>
<title></title>
<template></template>
<defaultTemplate></defaultTemplate>
<validationScript></validationScript>
<comment></comment>
<object>
<class>
<name>XWiki.TagClass</name>
<customClass></customClass>
<customMapping></customMapping>
<defaultViewSheet></defaultViewSheet>
<defaultEditSheet></defaultEditSheet>
<defaultWeb></defaultWeb>
<nameField></nameField>
<validationScript></validationScript>
<tags>
<name>tags</name>
<prettyName>Tags</prettyName>
<unmodifiable>0</unmodifiable>
<relationalStorage>1</relationalStorage>
<displayType>input</displayType>
<multiSelect>1</multiSelect>
<size>30</size>
<separator> </separator>
<cache>0</cache>
<separators> ,|</separators>
<values></values>
<number>1</number>
<classType>com.xpn.xwiki.objects.classes.StaticListClass</classType>
</tags>
</class>
<name>XWiki.Treeview</name>
<number>0</number>
<className>XWiki.TagClass</className>
<property>
<tags/>
</property>
</object>
<content>## Note: This implementation doesn't scale for large wikis. In order to support
## large wikis we need to dynamically load node data when nodes are expanded
## instead of loading all nodes at once.
&lt;script type='text/javascript' src='${request.contextPath}/yui/yahoo/yahoo-min.js' &gt;&lt;/script&gt;
&lt;script type='text/javascript' src='${request.contextPath}/yui/treeview/treeview-min.js' &gt;&lt;/script&gt;
&lt;script type='text/javascript' src='${request.contextPath}/yui/treeview/checknode.js' &gt;&lt;/script&gt;
&lt;div id="treeview"&gt;&lt;/div&gt;
&lt;script type="text/javascript"&gt;
  function treeInit()
  {
    var tree = new YAHOO.widget.TreeView("treeview");
    var root = tree.getRoot();
    var nodeObject;
    #set ($hiddenSpaces = ["XWiki", "Admin", "Panels"])
    #set ($hiddenPages = ["Main.WebRss", "Main.WebSearch", "Main.LuceneSearch", "Main.BlogRss", "Blog.Macros", "Main.TagsRss", "Main.RegisterNewUserAction", "Main.SpaceIndex", "Blog.Category"])
    #set ($blackListedPages = ["WebPreferences"])
    #macro(addNodeChildren $space $parent $nodeName)
      #set($ppp = $parent.replaceAll("'", "''"))
      #foreach ($page in $xwiki.searchDocuments("doc.parent = '$ppp' order by doc.name"))
        #if (!$hiddenPages.contains($page) || ($hiddenPages.contains($page) &amp;&amp; $xwiki.hasAdminRights()))
          #set ($index = $page.indexOf(".") + 1)
          #set($pageName = $page.substring($index))
          #if (!$blackListedPages.contains($pageName) || ($blackListedPages.contains($pageName) &amp;&amp; $xwiki.hasAdminRights()))
            nodeObject = { label: "$pageName.replaceAll('"', '\\\"')", href:"$xwiki.getURL("${page}")" };
            var ${nodeName}1 = new YAHOO.widget.TextNode(nodeObject, $nodeName, false); 
            #addNodeChildren($space $page "${nodeName}1")
          #end
        #end
      #end
    #end
    // Add spaces as top level nodes
    #foreach ($space in $xwiki.spaces)
      #if (!$hiddenSpaces.contains($space) || ($hiddenSpaces.contains($space) and $xwiki.hasAdminRights()))
        nodeObject = { label: "$space", href:"$xwiki.getURL("${space}.WebHome")" };
        var spaceNode = new YAHOO.widget.MenuNode(nodeObject, root, false); 
        #foreach ($page in $xwiki.searchDocuments("doc.web = '$space' and (doc.parent = '${space}.WebHome' or doc.parent = '' or doc.parent is null or doc.parent not like '${space}%') order by doc.name"))
          #if (($page != "${space}.WebHome") &amp;&amp; (!$hiddenPages.contains($page) || ($hiddenPages.contains($page) &amp;&amp; $xwiki.hasAdminRights())))
            #set ($index = $page.indexOf(".") + 1)
            #set($pageName = $page.substring($index))
            #if (!$blackListedPages.contains($pageName) || ($blackListedPages.contains($pageName) &amp;&amp; $xwiki.hasAdminRights()))
              nodeObject = { label: "$pageName.replaceAll('"', '\\\"')", href:"$xwiki.getURL("${page}")" };
              var node = new YAHOO.widget.TextNode(nodeObject, spaceNode, false); 
              #addNodeChildren($space $page "node")
            #end
          #end
        #end
      #end
    #end
    tree.draw();
  }
  treeInit(); 
&lt;/script&gt;
</content></xwikidoc>