0 Votes

Changes for page Document Tree Macros

Last modified by ztx lyghters on 2025/10/28 11:47

From version 1.1
edited by ztx lyghters
on 2025/01/31 15:59
Change comment: Install extension [org.xwiki.platform:xwiki-platform-index-tree-macro/17.0.0]
To version 3.1
edited by ztx lyghters
on 2025/10/28 11:47
Change comment: Install extension [org.xwiki.platform:xwiki-platform-index-tree-macro/17.7.0]

Summary

Details

Page properties
Content
... ... @@ -152,6 +152,8 @@
152 152   #set ($limit = $mathtool.max($numbertool.toNumber($request.limit).intValue(), 1))
153 153   #if ("$!limit" == '')
154 154   #set ($limit = 15)
155 + #else
156 + #validateQueryLimit($limit)
155 155   #end
156 156   #if ($nodeId == '#' && $docTreeConfig.showRoot)
157 157   #maybeAddNode($actualNodeId $children)
... ... @@ -205,6 +205,7 @@
205 205  
206 206  #macro (maybeAddFarmNode $nodeReference $siblings)
207 207   #set ($farmHomeReference = $services.model.resolveDocument('', 'default'))
210 + #set ($isOpened = $docTreeConfig.expandToLevel > 0)
208 208   #set ($discard = $siblings.add({
209 209   'id': 'farm:*',
210 210   'text': 'Farm',
... ... @@ -214,6 +214,9 @@
214 214   'type': 'farm',
215 215   'validChildren': ['wiki', 'pagination']
216 216   },
220 + 'state': {
221 + 'opened': $isOpened
222 + },
217 217   'a_attr': {
218 218   'href': $xwiki.getURL($farmHomeReference)
219 219   }
... ... @@ -242,6 +242,7 @@
242 242   #else
243 243   #set ($label = $wiki.id)
244 244   #end
251 + #set ($isOpened = $docTreeConfig.expandToLevel > 0)
245 245   #set ($discard = $siblings.add({
246 246   'id': "wiki:$wiki.id",
247 247   'text': $label,
... ... @@ -253,6 +253,9 @@
253 253   'validChildren': ['space', 'document', 'pagination'],
254 254   'canDelete': $canDeleteWiki
255 255   },
263 + 'state': {
264 + 'opened': $isOpened
265 + },
256 256   'a_attr': {
257 257   'href': $xwiki.getURL($wiki.mainPageReference)
258 258   }
... ... @@ -278,6 +278,7 @@
278 278  
279 279  #macro (addSpaceNode $spaceReference $siblings)
280 280   #set ($spaceId = $services.model.serialize($spaceReference, 'default'))
291 + #set ($spaceNodeId = "space:$spaceId")
281 281   #set ($hasSpaceAdmin = $services.security.authorization.hasAccess('admin', $spaceReference))
282 282   #set ($canViewSpace = $services.security.authorization.hasAccess('view', $spaceReference))
283 283   #if ($docTreeConfig.showTerminalDocuments)
... ... @@ -285,10 +285,21 @@
285 285   #set ($hasChildren = true)
286 286   #else
287 287   ## We display only the nested spaces. This space might contain only documents.
288 - #set ($hasChildren = $tree.getChildCount("space:$spaceId") > 0)
299 + #set ($hasChildren = $tree.getChildCount($spaceNodeId) > 0)
289 289   #end
301 + #set ($isOpened = false)
302 + #if ("$!docTreeConfig.expandToLevel" != '')
303 + #set ($rootNode = "wiki:$services.wiki.currentWikiId")
304 + #if ("$!docTreeConfig.root" != '')
305 + #set ($rootNode = "wiki:$services.wiki.currentWikiId")
306 + #else
307 + #set ($rootNode = $docTreeConfig.root)
308 + #end
309 + #set ($rootDistance = $tree.getPath($spaceNodeId).size())
310 + #set ($isOpened = ($rootDistance != -1 && $docTreeConfig.expandToLevel >= $rootDistance))
311 + #end
290 290   #set ($discard = $siblings.add({
291 - 'id': "space:$spaceId",
313 + 'id': $spaceNodeId,
292 292   'text': $spaceReference.name,
293 293   'icon': 'fa fa-folder-o',
294 294   'iconOpened': 'fa fa-folder-open-o',
... ... @@ -306,6 +306,9 @@
306 306   'createDocumentURL': $xwiki.getURL($spaceReference, 'create', $NULL),
307 307   'deleteURL': $xwiki.getURL($spaceReference, 'deletespace', $NULL)
308 308   },
331 + 'state': {
332 + 'opened': $isOpened
333 + },
309 309   'a_attr': {
310 310   'href': $xwiki.getURL($spaceReference)
311 311   }
... ... @@ -331,6 +331,7 @@
331 331  
332 332  #macro (addDocumentNode $documentReference $siblings)
333 333   #set ($documentId = $services.model.serialize($documentReference, 'default'))
359 + #set ($docNodeId = "document:$documentId")
334 334   #set ($label = $documentReference.name)
335 335   #if (!$docTreeConfig.showSpaces &&
336 336   $documentReference.name == $services.model.getEntityReference('DOCUMENT', 'default').name)
... ... @@ -347,9 +347,20 @@
347 347   #set ($label = $plainTitle)
348 348   #end
349 349   #end
350 - #set ($hasChildren = $tree.getChildCount("document:$documentId") > 0)
376 + #set ($hasChildren = $tree.getChildCount($docNodeId) > 0)
377 + #set ($isOpened = false)
378 + #if ("$!docTreeConfig.expandToLevel" != '')
379 + #set ($rootNode = "wiki:$services.wiki.currentWikiId")
380 + #if ("$!docTreeConfig.root" != '')
381 + #set ($rootNode = "wiki:$services.wiki.currentWikiId")
382 + #else
383 + #set ($rootNode = $docTreeConfig.root)
384 + #end
385 + #set ($rootDistance = $tree.getPath($docNodeId).size())
386 + #set ($isOpened = ($rootDistance != -1 && $docTreeConfig.expandToLevel >= $rootDistance))
387 + #end
351 351   #set ($discard = $siblings.add({
352 - 'id': "document:$documentId",
389 + 'id': $docNodeId,
353 353   'text': $label,
354 354   'icon': 'fa fa-file-o',
355 355   'children': $hasChildren,
... ... @@ -364,6 +364,9 @@
364 364   'canCopy': $canViewDoc,
365 365   'createDocumentURL': $xwiki.getURL($documentReference, 'create', $NULL)
366 366   },
404 + 'state': {
405 + 'opened': $isOpened
406 + },
367 367   'a_attr': {
368 368   'href': $xwiki.getURL($documentReference)
369 369   }