From version < 3.2 >
edited by Vincent Gyda
on 2022/01/20 11:00
To version < 3.1 >
edited by Vincent Gyda
on 2022/01/20 10:46
< >
Change comment: There is no comment for this version

Summary

Details

Panels.PanelClass[0]
Content
... ... @@ -1,11 +3,54 @@
1 -{{template name="documentTree_macros.vm" /}}
2 -
3 3  {{velocity}}
4 -{{html}}
5 -#documentTree({
6 -'compact':'true',
7 -'showAttachments':'false',
8 -'exclusions':''
9 -})
10 -{{/html}}
2 +#panelheader('TeBeVAT - Wiki')
3 +## Escape special characters in macro parameter values.
4 +#set ($openToDoc = $doc.documentReference.toString().replaceAll('([~"])', '~$1'))
5 +## Apply the configured page exclusions.
6 +#set ($config = $xwiki.getDocument('PanelsCode.NavigationConfiguration'))
7 +#set ($exclusions = $collectiontool.set)
8 +#set ($defaultDocumentName = $services.model.getEntityReference('DOCUMENT', 'default').name)
9 +## Exclude top level extension pages.
10 +#if ($config.getValue('excludeTopLevelExtensionPages') == 1)
11 + #set ($query = $services.query.hql('select space.name from XWikiSpace space where space.parent is null'))
12 + #set ($discard = $query.addFilter('hidden/space'))
13 + #foreach ($result in $query.execute())
14 + #set ($documentReference = $services.model.createDocumentReference($NULL, $result, $defaultDocumentName))
15 + #set ($installedExtensions = $services.extension.xar.getInstalledExtensions($documentReference))
16 + #if ($installedExtensions && $installedExtensions.size() > 0
17 + && !$services.extension.xar.isEditAllowed($documentReference))
18 + #set ($discard = $exclusions.add("document:$documentReference"))
19 + #end
20 + #end
21 +#end
22 +## Exclude top level application pages.
23 +#if ($config.getValue('excludeTopLevelApplicationPages') == 1)
24 + #set ($statement = 'select space.name '
25 + + 'from XWikiSpace as space, Document as doc, doc.object(AppWithinMinutes.LiveTableClass) as app '
26 + + 'where space.parent is null and doc.space = space.reference')
27 + #set ($query = $services.query.xwql($statement).addFilter('hidden/space'))
28 + #foreach ($result in $query.execute())
29 + #set ($documentReference = $services.model.createDocumentReference($NULL, $result, $defaultDocumentName))
30 + #set ($discard = $exclusions.add("document:$documentReference"))
31 + #end
32 +#end
33 +## Inclusions are treated as exceptions to the dynamic exclusion filters.
34 +#if ($config.getValue('excludeTopLevelExtensionPages') == 1 || $config.getValue('excludeTopLevelApplicationPages') == 1)
35 + ## FIXME: This panel is cached and the cache is not invalidated by default when an extension is installed or
36 + ## uninstalled and neither when an application is created, deleted or renamed. Ideally we should invalidate the cache
37 + ## whenever a top level page is created or modified but we can't do this ATM so the next best thing is to invalidate
38 + ## the cache whenever a page (anywhere in the page hierarchy) is modified.
39 + #set ($discard = $services.async.useEntity("wiki:$xcontext.database"))
40 + #foreach ($inclusion in $config.getValue('inclusions'))
41 + #set ($documentReference = $services.model.resolveDocument($inclusion))
42 + #set ($discard = $exclusions.remove("document:$documentReference"))
43 + #end
44 +#end
45 +## Other page exclusions.
46 +#foreach ($exclusion in $config.getValue('exclusions'))
47 + #set ($documentReference = $services.model.resolveDocument($exclusion))
48 + #set ($discard = $exclusions.add("document:$documentReference"))
49 +#end
50 +#set ($exclusions = $stringtool.join($exclusions, ','))
51 +{{documentTree showTranslations="false" showAttachments="false" compact="true" openTo="document:$openToDoc"
52 + exclusions="$exclusions" /}}
53 +#panelfooter()
11 11  {{/velocity}}