Изменения документа Document Tree Macros
Редактировал(а) Андрей Ганьков 2026/01/23 10:50
От версии 8.1
отредактировано Андрей Ганьков
на 2026/01/23 10:50
на 2026/01/23 10:50
Изменить комментарий:
Install extension [org.xwiki.platform:xwiki-platform-index-tree-macro/17.10.2]
К версии 5.1
отредактировано Андрей Ганьков
на 2024/10/24 10:31
на 2024/10/24 10:31
Изменить комментарий:
Install extension [org.xwiki.platform:xwiki-platform-index-tree-macro/16.8.0]
Сводка
-
Свойства страницы (1 изменено, 0 добавлено, 0 удалено)
Подробности
- Свойства страницы
-
- Содержимое
-
... ... @@ -31,15 +31,9 @@ 31 31 #end 32 32 ## Handle relative references 33 33 #makeNodeReferencesAbsolute($docTreeConfig ['root', 'openTo']) 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') 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') 43 43 #end 44 44 ## Determine which hierarchy needs to be used. 45 45 #if ($docTreeConfig.showSpaces) ... ... @@ -152,8 +152,6 @@ 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) 157 157 #end 158 158 #if ($nodeId == '#' && $docTreeConfig.showRoot) 159 159 #maybeAddNode($actualNodeId $children) ... ... @@ -207,7 +207,6 @@ 207 207 208 208 #macro (maybeAddFarmNode $nodeReference $siblings) 209 209 #set ($farmHomeReference = $services.model.resolveDocument('', 'default')) 210 - #set ($isOpened = $docTreeConfig.expandToLevel > 0) 211 211 #set ($discard = $siblings.add({ 212 212 'id': 'farm:*', 213 213 'text': 'Farm', ... ... @@ -217,9 +217,6 @@ 217 217 'type': 'farm', 218 218 'validChildren': ['wiki', 'pagination'] 219 219 }, 220 - 'state': { 221 - 'opened': $isOpened 222 - }, 223 223 'a_attr': { 224 224 'href': $xwiki.getURL($farmHomeReference) 225 225 } ... ... @@ -248,7 +248,6 @@ 248 248 #else 249 249 #set ($label = $wiki.id) 250 250 #end 251 - #set ($isOpened = $docTreeConfig.expandToLevel > 0) 252 252 #set ($discard = $siblings.add({ 253 253 'id': "wiki:$wiki.id", 254 254 'text': $label, ... ... @@ -260,9 +260,6 @@ 260 260 'validChildren': ['space', 'document', 'pagination'], 261 261 'canDelete': $canDeleteWiki 262 262 }, 263 - 'state': { 264 - 'opened': $isOpened 265 - }, 266 266 'a_attr': { 267 267 'href': $xwiki.getURL($wiki.mainPageReference) 268 268 } ... ... @@ -288,7 +288,6 @@ 288 288 289 289 #macro (addSpaceNode $spaceReference $siblings) 290 290 #set ($spaceId = $services.model.serialize($spaceReference, 'default')) 291 - #set ($spaceNodeId = "space:$spaceId") 292 292 #set ($hasSpaceAdmin = $services.security.authorization.hasAccess('admin', $spaceReference)) 293 293 #set ($canViewSpace = $services.security.authorization.hasAccess('view', $spaceReference)) 294 294 #if ($docTreeConfig.showTerminalDocuments) ... ... @@ -296,21 +296,10 @@ 296 296 #set ($hasChildren = true) 297 297 #else 298 298 ## We display only the nested spaces. This space might contain only documents. 299 - #set ($hasChildren = $tree.getChildCount($space NodeId) > 0)282 + #set ($hasChildren = $tree.getChildCount("space:$spaceId") > 0) 300 300 #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 312 312 #set ($discard = $siblings.add({ 313 - 'id': $space NodeId,285 + 'id': "space:$spaceId", 314 314 'text': $spaceReference.name, 315 315 'icon': 'fa fa-folder-o', 316 316 'iconOpened': 'fa fa-folder-open-o', ... ... @@ -328,9 +328,6 @@ 328 328 'createDocumentURL': $xwiki.getURL($spaceReference, 'create', $NULL), 329 329 'deleteURL': $xwiki.getURL($spaceReference, 'deletespace', $NULL) 330 330 }, 331 - 'state': { 332 - 'opened': $isOpened 333 - }, 334 334 'a_attr': { 335 335 'href': $xwiki.getURL($spaceReference) 336 336 } ... ... @@ -356,7 +356,6 @@ 356 356 357 357 #macro (addDocumentNode $documentReference $siblings) 358 358 #set ($documentId = $services.model.serialize($documentReference, 'default')) 359 - #set ($docNodeId = "document:$documentId") 360 360 #set ($label = $documentReference.name) 361 361 #if (!$docTreeConfig.showSpaces && 362 362 $documentReference.name == $services.model.getEntityReference('DOCUMENT', 'default').name) ... ... @@ -373,11 +373,9 @@ 373 373 #set ($label = $plainTitle) 374 374 #end 375 375 #end 376 - #set ($hasChildren = $tree.getChildCount($docNodeId) > 0) 377 - #set ($isOpened = false) 378 - #computeIsOpened($docNodeId $isOpened) 344 + #set ($hasChildren = $tree.getChildCount("document:$documentId") > 0) 379 379 #set ($discard = $siblings.add({ 380 - 'id': $docNodeId,346 + 'id': "document:$documentId", 381 381 'text': $label, 382 382 'icon': 'fa fa-file-o', 383 383 'children': $hasChildren, ... ... @@ -392,9 +392,6 @@ 392 392 'canCopy': $canViewDoc, 393 393 'createDocumentURL': $xwiki.getURL($documentReference, 'create', $NULL) 394 394 }, 395 - 'state': { 396 - 'opened': $isOpened 397 - }, 398 398 'a_attr': { 399 399 'href': $xwiki.getURL($documentReference) 400 400 } ... ... @@ -439,27 +439,9 @@ 439 439 #end 440 440 #end 441 441 442 -#macro (computeIsOpened $docNodeId $result) 443 - #set ($isOpened = false) 444 - #if ("$!docTreeConfig.expandToLevel" != '') 445 - #set ($rootNode = "wiki:$services.wiki.currentWikiId") 446 - #if ("$!docTreeConfig.root" != '') 447 - #set ($rootNode = "wiki:$services.wiki.currentWikiId") 448 - #else 449 - #set ($rootNode = $docTreeConfig.root) 450 - #end 451 - #set ($rootDistance = $tree.getPath($docNodeId).size()) 452 - #set ($isOpened = ($rootDistance != -1 && $docTreeConfig.expandToLevel >= $rootDistance)) 453 - #end 454 - #setVariable("$result" $isOpened) 455 -#end 456 - 457 457 #macro (addTranslationsNode $documentReference $siblings) 458 - #set ($isOpened = false) 459 - #set ($docNodeId = "translations:${documentReference}") 460 - #computeIsOpened($docNodeId $isOpened) 461 - #set ($discard = $siblings.add({ 462 - 'id': $docNodeId, 406 + #set ($discard = $children.add({ 407 + 'id': "translations:${documentReference}", 463 463 'text': 'Translations', 464 464 'icon': 'fa fa-language', 465 465 'children': true, ... ... @@ -467,9 +467,6 @@ 467 467 'type': 'translations', 468 468 'validChildren': ['translation'], 469 469 'canDelete': $services.security.authorization.hasAccess('delete', $documentReference) 470 - }, 471 - 'state': { 472 - 'opened': $isOpened 473 473 } 474 474 })) 475 475 #end ... ... @@ -486,11 +486,8 @@ 486 486 487 487 #macro (addTranslationNode $translationReference $siblings) 488 488 #set ($currentLocale = $services.localization.currentLocale) 489 - #set ($isOpened = false) 490 - #set ($docNodeId = "translation:$services.model.serialize($translationReference, 'default')_$translationReference.locale") 491 - #computeIsOpened($docNodeId $isOpened) 492 492 #set ($discard = $siblings.add({ 493 - 'id': $docNodeId,432 + 'id': "translation:$services.model.serialize($translationReference, 'default')_$translationReference.locale", 494 494 'text': $translationReference.locale.getDisplayName($currentLocale), 495 495 'icon': 'fa fa-file-text-o', 496 496 'children': false, ... ... @@ -501,9 +501,6 @@ 501 501 }, 502 502 'a_attr': { 503 503 'href': $xwiki.getURL($translationReference) 504 - }, 505 - 'state': { 506 - 'opened': $isOpened 507 507 } 508 508 })) 509 509 #end ... ... @@ -520,11 +520,8 @@ 520 520 #end 521 521 522 522 #macro (addAttachmentsNode $documentReference $siblings) 523 - #set ($isOpened = false) 524 - #set ($docNodeId = "attachments:${documentReference}") 525 - #computeIsOpened($docNodeId $isOpened) 526 526 #set ($discard = $siblings.add({ 527 - 'id': $doc NodeId,460 + 'id': "attachments:${documentReference}", 528 528 'text': 'Attachments', 529 529 'icon': 'fa fa-paperclip', 530 530 'children': true, ... ... @@ -536,9 +536,6 @@ 536 536 }, 537 537 'a_attr': { 538 538 'href': $xwiki.getURL($documentReference, 'view', 'viewer=attachments') 539 - }, 540 - 'state': { 541 - 'opened': $isOpened 542 542 } 543 543 })) 544 544 #end ... ... @@ -558,11 +558,8 @@ 558 558 #set ($attachmentId = $services.model.serialize($attachmentReference, 'default')) 559 559 #set ($canEditDoc = $services.security.authorization.hasAccess('edit', $attachmentReference.parent)) 560 560 #getAttachmentIcon($attachment $icon) 561 - #set ($isOpened = false) 562 - #set ($docNodeId = "attachment:$attachmentId") 563 - #computeIsOpened($docNodeId $isOpened) 564 564 #set ($discard = $siblings.add({ 565 - 'id': $ docNodeId,492 + 'id': "attachment:$attachmentId", 566 566 'text': $attachment.filename, 567 567 'icon': $icon, 568 568 'children': false, ... ... @@ -581,9 +581,6 @@ 581 581 }, 582 582 'a_attr': { 583 583 'href': $attachment.document.getAttachmentURL($attachment.filename) 584 - }, 585 - 'state': { 586 - 'opened': $isOpened 587 587 } 588 588 })) 589 589 #end ... ... @@ -662,11 +662,8 @@ 662 662 #end 663 663 664 664 #macro (addClassPropertiesNode $documentReference $siblings) 665 - #set ($isOpened = false) 666 - #set ($docNodeId = "classProperties:${documentReference}") 667 - #computeIsOpened($docNodeId $isOpened) 668 - #set ($discard = $siblings.add({ 669 - 'id': $docNodeId, 589 + #set ($discard = $children.add({ 590 + 'id': "classProperties:${documentReference}", 670 670 'text': 'Class Properties', 671 671 'icon': 'fa fa-gears', 672 672 'children': true, ... ... @@ -674,9 +674,6 @@ 674 674 'type': 'classProperties', 675 675 'validChildren': ['classProperty'], 676 676 'canDelete': $services.security.authorization.hasAccess('edit', $documentReference) 677 - }, 678 - 'state': { 679 - 'opened': $isOpened 680 680 } 681 681 })) 682 682 #end ... ... @@ -709,11 +709,8 @@ 709 709 #if (!$icon) 710 710 #set ($icon = 'gear') 711 711 #end 712 - #set ($isOpened = false) 713 - #set ($docNodeId = "classProperty:$classPropertyId") 714 - #computeIsOpened($docNodeId $isOpened) 715 715 #set ($discard = $siblings.add({ 716 - 'id': $docNodeId,631 + 'id': "classProperty:$classPropertyId", 717 717 'text': $property.name, 718 718 'icon': "fa fa-$icon", 719 719 'children': false, ... ... @@ -721,9 +721,6 @@ 721 721 'id': $classPropertyId, 722 722 'type': 'classProperty', 723 723 'validChildren': [] 724 - }, 725 - 'state': { 726 - 'opened': $isOpened 727 727 } 728 728 })) 729 729 #end ... ... @@ -740,11 +740,8 @@ 740 740 #end 741 741 742 742 #macro (addObjectsNode $documentReference $siblings) 743 - #set ($isOpened = false) 744 - #set ($docNodeId = "objects:${documentReference}") 745 - #computeIsOpened($docNodeId $isOpened) 746 - #set ($discard = $siblings.add({ 747 - 'id': $docNodeId, 655 + #set ($discard = $children.add({ 656 + 'id': "objects:${documentReference}", 748 748 'text': 'Objects', 749 749 'icon': 'fa fa-cubes', 750 750 'children': true, ... ... @@ -752,9 +752,6 @@ 752 752 'type': 'objects', 753 753 'validChildren': ['objectsOfType'], 754 754 'canDelete': $services.security.authorization.hasAccess('edit', $documentReference) 755 - }, 756 - 'state': { 757 - 'opened': $isOpened 758 758 } 759 759 })) 760 760 #end ... ... @@ -765,11 +765,8 @@ 765 765 #set ($documentReference = $services.model.resolveDocument($parts.get(0))) 766 766 #set ($classReference = $services.model.resolveDocument($parts.get(1))) 767 767 #if ($services.security.authorization.hasAccess('view', $documentReference)) 768 - #set ($isOpened = false) 769 - #set ($docNodeId = "objectsOfType:$documentReference/$classReference") 770 - #computeIsOpened($docNodeId $isOpened) 771 - #set ($discard = $siblings.add({ 772 - 'id': $docNodeId, 674 + #set ($discard = $children.add({ 675 + 'id': "objectsOfType:$documentReference/$classReference", 773 773 'text': $services.model.serialize($classReference, 'local'), 774 774 'icon': 'fa fa-cubes', 775 775 'children': true, ... ... @@ -777,9 +777,6 @@ 777 777 'type': 'objectsOfType', 778 778 'validChildren': ['object', 'pagination'], 779 779 'canDelete': $services.security.authorization.hasAccess('edit', $documentReference) 780 - }, 781 - 'state': { 782 - 'opened': $isOpened 783 783 } 784 784 })) 785 785 #end ... ... @@ -806,11 +806,8 @@ 806 806 807 807 #macro (addObjectNode $object $objectReference $siblings) 808 808 #set ($objectId = $services.model.serialize($objectReference, 'default')) 809 - #set ($isOpened = false) 810 - #set ($docNodeId = "object:$objectId") 811 - #computeIsOpened($docNodeId $isOpened) 812 - #set ($discard = $siblings.add({ 813 - 'id': $docNodeId, 709 + #set ($discard = $children.add({ 710 + 'id': "object:$objectId", 814 814 'text': "[$object.number]", 815 815 'icon': 'fa fa-cube', 816 816 'children': true, ... ... @@ -819,9 +819,6 @@ 819 819 'type': 'object', 820 820 'validChildren': ['objectProperty'], 821 821 'canDelete': $services.security.authorization.hasAccess('edit', $objectReference.parent) 822 - }, 823 - 'state': { 824 - 'opened': $isOpened 825 825 } 826 826 })) 827 827 #end ... ... @@ -846,11 +846,8 @@ 846 846 #end 847 847 #set ($objectPropertyReference = $services.model.createEntityReference($property.name, 'OBJECT_PROPERTY', $objRef)) 848 848 #set ($objectPropertyId = $services.model.serialize($objectPropertyReference, 'default')) 849 - #set ($isOpened = false) 850 - #set ($docNodeId = "objectProperty:$objectPropertyId") 851 - #computeIsOpened($docNodeId $isOpened) 852 852 #set ($discard = $siblings.add({ 853 - 'id': $ docNodeId,744 + 'id': "objectProperty:$objectPropertyId", 854 854 'text': $property.name, 855 855 'icon': "fa fa-$icon", 856 856 'children': false, ... ... @@ -858,9 +858,6 @@ 858 858 'id': $objectPropertyId, 859 859 'type': 'objectProperty', 860 860 'validChildren': [] 861 - }, 862 - 'state': { 863 - 'opened': $isOpened 864 864 } 865 865 })) 866 866 #end