Änderungen von Dokument Document Tree Macros
Zuletzt geändert von Daniel Herrmann am 2026/03/08 12:45
Von Version 1.1
bearbeitet von admin
am 2025/02/23 10:20
am 2025/02/23 10:20
Änderungskommentar:
Install extension [org.xwiki.platform:xwiki-platform-index-tree-macro/17.0.0]
Auf Version
4.1
bearbeitet von Daniel Herrmann
am 2025/12/16 11:13
am 2025/12/16 11:13
Änderungskommentar:
Install extension [org.xwiki.platform:xwiki-platform-index-tree-macro/17.10.0]
Zusammenfassung
Details
- Seiteneigenschaften
-
- Dokument-Autor
-
... ... @@ -1,1 +1,1 @@ 1 -XWiki. admin1 +XWiki.dherrman - Inhalt
-
... ... @@ -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,11 @@ 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 + #computeIsOpened($docNodeId $isOpened) 351 351 #set ($discard = $siblings.add({ 352 - 'id': "document:$documentId",380 + '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 }, 395 + 'state': { 396 + 'opened': $isOpened 397 + }, 367 367 'a_attr': { 368 368 'href': $xwiki.getURL($documentReference) 369 369 } ... ... @@ -408,9 +408,27 @@ 408 408 #end 409 409 #end 410 410 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 + 411 411 #macro (addTranslationsNode $documentReference $siblings) 412 - #set ($discard = $children.add({ 413 - 'id': "translations:${documentReference}", 458 + #set ($isOpened = false) 459 + #set ($docNodeId = "translations:${documentReference}") 460 + #computeIsOpened($docNodeId $isOpened) 461 + #set ($discard = $siblings.add({ 462 + 'id': $docNodeId, 414 414 'text': 'Translations', 415 415 'icon': 'fa fa-language', 416 416 'children': true, ... ... @@ -418,6 +418,9 @@ 418 418 'type': 'translations', 419 419 'validChildren': ['translation'], 420 420 'canDelete': $services.security.authorization.hasAccess('delete', $documentReference) 470 + }, 471 + 'state': { 472 + 'opened': $isOpened 421 421 } 422 422 })) 423 423 #end ... ... @@ -434,8 +434,11 @@ 434 434 435 435 #macro (addTranslationNode $translationReference $siblings) 436 436 #set ($currentLocale = $services.localization.currentLocale) 489 + #set ($isOpened = false) 490 + #set ($docNodeId = "translation:$services.model.serialize($translationReference, 'default')_$translationReference.locale") 491 + #computeIsOpened($docNodeId $isOpened) 437 437 #set ($discard = $siblings.add({ 438 - 'id': "translation:$services.model.serialize($translationReference, 'default')_$translationReference.locale",493 + 'id': $docNodeId, 439 439 'text': $translationReference.locale.getDisplayName($currentLocale), 440 440 'icon': 'fa fa-file-text-o', 441 441 'children': false, ... ... @@ -446,6 +446,9 @@ 446 446 }, 447 447 'a_attr': { 448 448 'href': $xwiki.getURL($translationReference) 504 + }, 505 + 'state': { 506 + 'opened': $isOpened 449 449 } 450 450 })) 451 451 #end ... ... @@ -462,8 +462,11 @@ 462 462 #end 463 463 464 464 #macro (addAttachmentsNode $documentReference $siblings) 523 + #set ($isOpened = false) 524 + #set ($docNodeId = "attachments:${documentReference}") 525 + #computeIsOpened($docNodeId $isOpened) 465 465 #set ($discard = $siblings.add({ 466 - 'id': "attachments:${documentReference}",527 + 'id': $docNodeId, 467 467 'text': 'Attachments', 468 468 'icon': 'fa fa-paperclip', 469 469 'children': true, ... ... @@ -475,6 +475,9 @@ 475 475 }, 476 476 'a_attr': { 477 477 'href': $xwiki.getURL($documentReference, 'view', 'viewer=attachments') 539 + }, 540 + 'state': { 541 + 'opened': $isOpened 478 478 } 479 479 })) 480 480 #end ... ... @@ -494,8 +494,11 @@ 494 494 #set ($attachmentId = $services.model.serialize($attachmentReference, 'default')) 495 495 #set ($canEditDoc = $services.security.authorization.hasAccess('edit', $attachmentReference.parent)) 496 496 #getAttachmentIcon($attachment $icon) 561 + #set ($isOpened = false) 562 + #set ($docNodeId = "attachment:$attachmentId") 563 + #computeIsOpened($docNodeId $isOpened) 497 497 #set ($discard = $siblings.add({ 498 - 'id': "attachment:$attachmentId",565 + 'id': $docNodeId, 499 499 'text': $attachment.filename, 500 500 'icon': $icon, 501 501 'children': false, ... ... @@ -514,6 +514,9 @@ 514 514 }, 515 515 'a_attr': { 516 516 'href': $attachment.document.getAttachmentURL($attachment.filename) 584 + }, 585 + 'state': { 586 + 'opened': $isOpened 517 517 } 518 518 })) 519 519 #end ... ... @@ -592,8 +592,11 @@ 592 592 #end 593 593 594 594 #macro (addClassPropertiesNode $documentReference $siblings) 595 - #set ($discard = $children.add({ 596 - 'id': "classProperties:${documentReference}", 665 + #set ($isOpened = false) 666 + #set ($docNodeId = "classProperties:${documentReference}") 667 + #computeIsOpened($docNodeId $isOpened) 668 + #set ($discard = $siblings.add({ 669 + 'id': $docNodeId, 597 597 'text': 'Class Properties', 598 598 'icon': 'fa fa-gears', 599 599 'children': true, ... ... @@ -601,6 +601,9 @@ 601 601 'type': 'classProperties', 602 602 'validChildren': ['classProperty'], 603 603 'canDelete': $services.security.authorization.hasAccess('edit', $documentReference) 677 + }, 678 + 'state': { 679 + 'opened': $isOpened 604 604 } 605 605 })) 606 606 #end ... ... @@ -633,8 +633,11 @@ 633 633 #if (!$icon) 634 634 #set ($icon = 'gear') 635 635 #end 712 + #set ($isOpened = false) 713 + #set ($docNodeId = "classProperty:$classPropertyId") 714 + #computeIsOpened($docNodeId $isOpened) 636 636 #set ($discard = $siblings.add({ 637 - 'id': "classProperty:$classPropertyId",716 + 'id': $docNodeId, 638 638 'text': $property.name, 639 639 'icon': "fa fa-$icon", 640 640 'children': false, ... ... @@ -642,6 +642,9 @@ 642 642 'id': $classPropertyId, 643 643 'type': 'classProperty', 644 644 'validChildren': [] 724 + }, 725 + 'state': { 726 + 'opened': $isOpened 645 645 } 646 646 })) 647 647 #end ... ... @@ -658,8 +658,11 @@ 658 658 #end 659 659 660 660 #macro (addObjectsNode $documentReference $siblings) 661 - #set ($discard = $children.add({ 662 - 'id': "objects:${documentReference}", 743 + #set ($isOpened = false) 744 + #set ($docNodeId = "objects:${documentReference}") 745 + #computeIsOpened($docNodeId $isOpened) 746 + #set ($discard = $siblings.add({ 747 + 'id': $docNodeId, 663 663 'text': 'Objects', 664 664 'icon': 'fa fa-cubes', 665 665 'children': true, ... ... @@ -667,6 +667,9 @@ 667 667 'type': 'objects', 668 668 'validChildren': ['objectsOfType'], 669 669 'canDelete': $services.security.authorization.hasAccess('edit', $documentReference) 755 + }, 756 + 'state': { 757 + 'opened': $isOpened 670 670 } 671 671 })) 672 672 #end ... ... @@ -677,8 +677,11 @@ 677 677 #set ($documentReference = $services.model.resolveDocument($parts.get(0))) 678 678 #set ($classReference = $services.model.resolveDocument($parts.get(1))) 679 679 #if ($services.security.authorization.hasAccess('view', $documentReference)) 680 - #set ($discard = $children.add({ 681 - 'id': "objectsOfType:$documentReference/$classReference", 768 + #set ($isOpened = false) 769 + #set ($docNodeId = "objectsOfType:$documentReference/$classReference") 770 + #computeIsOpened($docNodeId $isOpened) 771 + #set ($discard = $siblings.add({ 772 + 'id': $docNodeId, 682 682 'text': $services.model.serialize($classReference, 'local'), 683 683 'icon': 'fa fa-cubes', 684 684 'children': true, ... ... @@ -686,6 +686,9 @@ 686 686 'type': 'objectsOfType', 687 687 'validChildren': ['object', 'pagination'], 688 688 'canDelete': $services.security.authorization.hasAccess('edit', $documentReference) 780 + }, 781 + 'state': { 782 + 'opened': $isOpened 689 689 } 690 690 })) 691 691 #end ... ... @@ -712,8 +712,11 @@ 712 712 713 713 #macro (addObjectNode $object $objectReference $siblings) 714 714 #set ($objectId = $services.model.serialize($objectReference, 'default')) 715 - #set ($discard = $children.add({ 716 - 'id': "object:$objectId", 809 + #set ($isOpened = false) 810 + #set ($docNodeId = "object:$objectId") 811 + #computeIsOpened($docNodeId $isOpened) 812 + #set ($discard = $siblings.add({ 813 + 'id': $docNodeId, 717 717 'text': "[$object.number]", 718 718 'icon': 'fa fa-cube', 719 719 'children': true, ... ... @@ -722,6 +722,9 @@ 722 722 'type': 'object', 723 723 'validChildren': ['objectProperty'], 724 724 'canDelete': $services.security.authorization.hasAccess('edit', $objectReference.parent) 822 + }, 823 + 'state': { 824 + 'opened': $isOpened 725 725 } 726 726 })) 727 727 #end ... ... @@ -746,8 +746,11 @@ 746 746 #end 747 747 #set ($objectPropertyReference = $services.model.createEntityReference($property.name, 'OBJECT_PROPERTY', $objRef)) 748 748 #set ($objectPropertyId = $services.model.serialize($objectPropertyReference, 'default')) 849 + #set ($isOpened = false) 850 + #set ($docNodeId = "objectProperty:$objectPropertyId") 851 + #computeIsOpened($docNodeId $isOpened) 749 749 #set ($discard = $siblings.add({ 750 - 'id': "objectProperty:$objectPropertyId",853 + 'id': $docNodeId, 751 751 'text': $property.name, 752 752 'icon': "fa fa-$icon", 753 753 'children': false, ... ... @@ -755,6 +755,9 @@ 755 755 'id': $objectPropertyId, 756 756 'type': 'objectProperty', 757 757 'validChildren': [] 861 + }, 862 + 'state': { 863 + 'opened': $isOpened 758 758 } 759 759 })) 760 760 #end