Изменения документа Document Tree Macros

Редактировал(а) Андрей Ганьков 2025/07/06 04:36

От версии 5.1
отредактировано Давид Гавриков
на 2024/10/22 15:18
Изменить комментарий: Install extension [org.xwiki.platform:xwiki-platform-index-tree-macro/16.8.0]
К версии 6.1
отредактировано Андрей Ганьков
на 2025/07/06 04:36
Изменить комментарий: Install extension [org.xwiki.platform:xwiki-platform-index-tree-macro/17.5.0]

Сводка

Подробности

Свойства страницы
Автор документа
... ... @@ -1,1 +1,1 @@
1 -XWiki.gavrikof
1 +XWiki.gav
Содержимое
... ... @@ -31,9 +31,15 @@
31 31   #end
32 32   ## Handle relative references
33 33   #makeNodeReferencesAbsolute($docTreeConfig ['root', 'openTo'])
34 - ## Sort the child documents by (raw) title when the node label is the document title.
35 - #if ($docTreeConfig.showDocumentTitle)
36 - #set ($docTreeConfig.orderBy = 'title')
34 + ## FIXME: The 'orderBy' property of the tree API is shared by all tree node types, which means we can't indicate a
35 + ## different sort field per tree node type (e.g. sort wiki nodes by name and document nodes by last modification
36 + ## date). At the same time, this property is currently taken into account only for sorting document tree nodes, so for
37 + ## now we set its value to the specified document sort. In the future we may want to convert this into a map, where
38 + ## the key is the node type.
39 + #set ($docTreeConfig.orderBy = $docTreeConfig.sortDocumentsBy)
40 + ## Sort the child documents by (raw) title when the node label is the document title and there's no sort specified.
41 + #if ($docTreeConfig.showDocumentTitle && "$!docTreeConfig.orderBy" == '')
42 + #set ($docTreeConfig.orderBy = 'title:asc')
37 37   #end
38 38   ## Determine which hierarchy needs to be used.
39 39   #if ($docTreeConfig.showSpaces)
... ... @@ -199,6 +199,7 @@
199 199  
200 200  #macro (maybeAddFarmNode $nodeReference $siblings)
201 201   #set ($farmHomeReference = $services.model.resolveDocument('', 'default'))
208 + #set ($isOpened = $docTreeConfig.expandToLevel > 0)
202 202   #set ($discard = $siblings.add({
203 203   'id': 'farm:*',
204 204   'text': 'Farm',
... ... @@ -208,6 +208,9 @@
208 208   'type': 'farm',
209 209   'validChildren': ['wiki', 'pagination']
210 210   },
218 + 'state': {
219 + 'opened': $isOpened
220 + },
211 211   'a_attr': {
212 212   'href': $xwiki.getURL($farmHomeReference)
213 213   }
... ... @@ -236,6 +236,7 @@
236 236   #else
237 237   #set ($label = $wiki.id)
238 238   #end
249 + #set ($isOpened = $docTreeConfig.expandToLevel > 0)
239 239   #set ($discard = $siblings.add({
240 240   'id': "wiki:$wiki.id",
241 241   'text': $label,
... ... @@ -247,6 +247,9 @@
247 247   'validChildren': ['space', 'document', 'pagination'],
248 248   'canDelete': $canDeleteWiki
249 249   },
261 + 'state': {
262 + 'opened': $isOpened
263 + },
250 250   'a_attr': {
251 251   'href': $xwiki.getURL($wiki.mainPageReference)
252 252   }
... ... @@ -272,6 +272,7 @@
272 272  
273 273  #macro (addSpaceNode $spaceReference $siblings)
274 274   #set ($spaceId = $services.model.serialize($spaceReference, 'default'))
289 + #set ($nodeId = "space:$spaceId")
275 275   #set ($hasSpaceAdmin = $services.security.authorization.hasAccess('admin', $spaceReference))
276 276   #set ($canViewSpace = $services.security.authorization.hasAccess('view', $spaceReference))
277 277   #if ($docTreeConfig.showTerminalDocuments)
... ... @@ -279,10 +279,21 @@
279 279   #set ($hasChildren = true)
280 280   #else
281 281   ## We display only the nested spaces. This space might contain only documents.
282 - #set ($hasChildren = $tree.getChildCount("space:$spaceId") > 0)
297 + #set ($hasChildren = $tree.getChildCount($nodeId) > 0)
283 283   #end
299 + #set ($isOpened = false)
300 + #if ("$!docTreeConfig.expandToLevel" != '')
301 + #set ($rootNode = "wiki:$services.wiki.currentWikiId")
302 + #if ("$!docTreeConfig.root" != '')
303 + #set ($rootNode = "wiki:$services.wiki.currentWikiId")
304 + #else
305 + #set ($rootNode = $docTreeConfig.root)
306 + #end
307 + #set ($rootDistance = $tree.getPath($nodeId).size())
308 + #set ($isOpened = ($rootDistance != -1 && $docTreeConfig.expandToLevel >= $rootDistance))
309 + #end
284 284   #set ($discard = $siblings.add({
285 - 'id': "space:$spaceId",
311 + 'id': $nodeId,
286 286   'text': $spaceReference.name,
287 287   'icon': 'fa fa-folder-o',
288 288   'iconOpened': 'fa fa-folder-open-o',
... ... @@ -300,6 +300,9 @@
300 300   'createDocumentURL': $xwiki.getURL($spaceReference, 'create', $NULL),
301 301   'deleteURL': $xwiki.getURL($spaceReference, 'deletespace', $NULL)
302 302   },
329 + 'state': {
330 + 'opened': $isOpened
331 + },
303 303   'a_attr': {
304 304   'href': $xwiki.getURL($spaceReference)
305 305   }
... ... @@ -325,6 +325,7 @@
325 325  
326 326  #macro (addDocumentNode $documentReference $siblings)
327 327   #set ($documentId = $services.model.serialize($documentReference, 'default'))
357 + #set ($nodeId = "document:$documentId")
328 328   #set ($label = $documentReference.name)
329 329   #if (!$docTreeConfig.showSpaces &&
330 330   $documentReference.name == $services.model.getEntityReference('DOCUMENT', 'default').name)
... ... @@ -341,9 +341,20 @@
341 341   #set ($label = $plainTitle)
342 342   #end
343 343   #end
344 - #set ($hasChildren = $tree.getChildCount("document:$documentId") > 0)
374 + #set ($hasChildren = $tree.getChildCount($nodeId) > 0)
375 + #set ($isOpened = false)
376 + #if ("$!docTreeConfig.expandToLevel" != '')
377 + #set ($rootNode = "wiki:$services.wiki.currentWikiId")
378 + #if ("$!docTreeConfig.root" != '')
379 + #set ($rootNode = "wiki:$services.wiki.currentWikiId")
380 + #else
381 + #set ($rootNode = $docTreeConfig.root)
382 + #end
383 + #set ($rootDistance = $tree.getPath($nodeId).size())
384 + #set ($isOpened = ($rootDistance != -1 && $docTreeConfig.expandToLevel >= $rootDistance))
385 + #end
345 345   #set ($discard = $siblings.add({
346 - 'id': "document:$documentId",
387 + 'id': $nodeId,
347 347   'text': $label,
348 348   'icon': 'fa fa-file-o',
349 349   'children': $hasChildren,
... ... @@ -358,6 +358,9 @@
358 358   'canCopy': $canViewDoc,
359 359   'createDocumentURL': $xwiki.getURL($documentReference, 'create', $NULL)
360 360   },
402 + 'state': {
403 + 'opened': $isOpened
404 + },
361 361   'a_attr': {
362 362   'href': $xwiki.getURL($documentReference)
363 363   }