Changes for page TeBeVAT Navigation
Last modified by Vincent Gyda on 2022/02/02 22:02
Change comment:
There is no comment for this version
Summary
-
Objects (1 modified, 0 added, 0 removed)
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}}