Изменения документа Document Tree Macros
Редактировал(а) Андрей Ганьков 2025/07/06 04:36
От версии 5.1
отредактировано Давид Гавриков
на 2024/10/22 15:18
на 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
на 2025/07/06 04:36
Изменить комментарий:
Install extension [org.xwiki.platform:xwiki-platform-index-tree-macro/17.5.0]
Сводка
-
Свойства страницы (2 изменено, 0 добавлено, 0 удалено)
Подробности
- Свойства страницы
-
- Автор документа
-
... ... @@ -1,1 +1,1 @@ 1 -XWiki.gav rikof1 +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 }