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

Редактировал(а) Андрей Ганьков 2026/01/23 10:50

От версии 7.1
отредактировано Андрей Ганьков
на 2025/11/13 18:51
Изменить комментарий: Install extension [org.xwiki.platform:xwiki-platform-index-tree-macro/17.9.0]
К версии 8.1
отредактировано Андрей Ганьков
на 2026/01/23 10:50
Изменить комментарий: Install extension [org.xwiki.platform:xwiki-platform-index-tree-macro/17.10.2]

Сводка

Подробности

Свойства страницы
Содержимое
... ... @@ -375,16 +375,7 @@
375 375   #end
376 376   #set ($hasChildren = $tree.getChildCount($docNodeId) > 0)
377 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
378 + #computeIsOpened($docNodeId $isOpened)
388 388   #set ($discard = $siblings.add({
389 389   'id': $docNodeId,
390 390   'text': $label,
... ... @@ -448,9 +448,27 @@
448 448   #end
449 449  #end
450 450  
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 +
451 451  #macro (addTranslationsNode $documentReference $siblings)
452 - #set ($discard = $children.add({
453 - 'id': "translations:${documentReference}",
458 + #set ($isOpened = false)
459 + #set ($docNodeId = "translations:${documentReference}")
460 + #computeIsOpened($docNodeId $isOpened)
461 + #set ($discard = $siblings.add({
462 + 'id': $docNodeId,
454 454   'text': 'Translations',
455 455   'icon': 'fa fa-language',
456 456   'children': true,
... ... @@ -458,6 +458,9 @@
458 458   'type': 'translations',
459 459   'validChildren': ['translation'],
460 460   'canDelete': $services.security.authorization.hasAccess('delete', $documentReference)
470 + },
471 + 'state': {
472 + 'opened': $isOpened
461 461   }
462 462   }))
463 463  #end
... ... @@ -474,8 +474,11 @@
474 474  
475 475  #macro (addTranslationNode $translationReference $siblings)
476 476   #set ($currentLocale = $services.localization.currentLocale)
489 + #set ($isOpened = false)
490 + #set ($docNodeId = "translation:$services.model.serialize($translationReference, 'default')_$translationReference.locale")
491 + #computeIsOpened($docNodeId $isOpened)
477 477   #set ($discard = $siblings.add({
478 - 'id': "translation:$services.model.serialize($translationReference, 'default')_$translationReference.locale",
493 + 'id': $docNodeId,
479 479   'text': $translationReference.locale.getDisplayName($currentLocale),
480 480   'icon': 'fa fa-file-text-o',
481 481   'children': false,
... ... @@ -486,6 +486,9 @@
486 486   },
487 487   'a_attr': {
488 488   'href': $xwiki.getURL($translationReference)
504 + },
505 + 'state': {
506 + 'opened': $isOpened
489 489   }
490 490   }))
491 491  #end
... ... @@ -502,8 +502,11 @@
502 502  #end
503 503  
504 504  #macro (addAttachmentsNode $documentReference $siblings)
523 + #set ($isOpened = false)
524 + #set ($docNodeId = "attachments:${documentReference}")
525 + #computeIsOpened($docNodeId $isOpened)
505 505   #set ($discard = $siblings.add({
506 - 'id': "attachments:${documentReference}",
527 + 'id': $docNodeId,
507 507   'text': 'Attachments',
508 508   'icon': 'fa fa-paperclip',
509 509   'children': true,
... ... @@ -515,6 +515,9 @@
515 515   },
516 516   'a_attr': {
517 517   'href': $xwiki.getURL($documentReference, 'view', 'viewer=attachments')
539 + },
540 + 'state': {
541 + 'opened': $isOpened
518 518   }
519 519   }))
520 520  #end
... ... @@ -534,8 +534,11 @@
534 534   #set ($attachmentId = $services.model.serialize($attachmentReference, 'default'))
535 535   #set ($canEditDoc = $services.security.authorization.hasAccess('edit', $attachmentReference.parent))
536 536   #getAttachmentIcon($attachment $icon)
561 + #set ($isOpened = false)
562 + #set ($docNodeId = "attachment:$attachmentId")
563 + #computeIsOpened($docNodeId $isOpened)
537 537   #set ($discard = $siblings.add({
538 - 'id': "attachment:$attachmentId",
565 + 'id': $docNodeId,
539 539   'text': $attachment.filename,
540 540   'icon': $icon,
541 541   'children': false,
... ... @@ -554,6 +554,9 @@
554 554   },
555 555   'a_attr': {
556 556   'href': $attachment.document.getAttachmentURL($attachment.filename)
584 + },
585 + 'state': {
586 + 'opened': $isOpened
557 557   }
558 558   }))
559 559  #end
... ... @@ -632,8 +632,11 @@
632 632  #end
633 633  
634 634  #macro (addClassPropertiesNode $documentReference $siblings)
635 - #set ($discard = $children.add({
636 - 'id': "classProperties:${documentReference}",
665 + #set ($isOpened = false)
666 + #set ($docNodeId = "classProperties:${documentReference}")
667 + #computeIsOpened($docNodeId $isOpened)
668 + #set ($discard = $siblings.add({
669 + 'id': $docNodeId,
637 637   'text': 'Class Properties',
638 638   'icon': 'fa fa-gears',
639 639   'children': true,
... ... @@ -641,6 +641,9 @@
641 641   'type': 'classProperties',
642 642   'validChildren': ['classProperty'],
643 643   'canDelete': $services.security.authorization.hasAccess('edit', $documentReference)
677 + },
678 + 'state': {
679 + 'opened': $isOpened
644 644   }
645 645   }))
646 646  #end
... ... @@ -673,8 +673,11 @@
673 673   #if (!$icon)
674 674   #set ($icon = 'gear')
675 675   #end
712 + #set ($isOpened = false)
713 + #set ($docNodeId = "classProperty:$classPropertyId")
714 + #computeIsOpened($docNodeId $isOpened)
676 676   #set ($discard = $siblings.add({
677 - 'id': "classProperty:$classPropertyId",
716 + 'id': $docNodeId,
678 678   'text': $property.name,
679 679   'icon': "fa fa-$icon",
680 680   'children': false,
... ... @@ -682,6 +682,9 @@
682 682   'id': $classPropertyId,
683 683   'type': 'classProperty',
684 684   'validChildren': []
724 + },
725 + 'state': {
726 + 'opened': $isOpened
685 685   }
686 686   }))
687 687  #end
... ... @@ -698,8 +698,11 @@
698 698  #end
699 699  
700 700  #macro (addObjectsNode $documentReference $siblings)
701 - #set ($discard = $children.add({
702 - 'id': "objects:${documentReference}",
743 + #set ($isOpened = false)
744 + #set ($docNodeId = "objects:${documentReference}")
745 + #computeIsOpened($docNodeId $isOpened)
746 + #set ($discard = $siblings.add({
747 + 'id': $docNodeId,
703 703   'text': 'Objects',
704 704   'icon': 'fa fa-cubes',
705 705   'children': true,
... ... @@ -707,6 +707,9 @@
707 707   'type': 'objects',
708 708   'validChildren': ['objectsOfType'],
709 709   'canDelete': $services.security.authorization.hasAccess('edit', $documentReference)
755 + },
756 + 'state': {
757 + 'opened': $isOpened
710 710   }
711 711   }))
712 712  #end
... ... @@ -717,8 +717,11 @@
717 717   #set ($documentReference = $services.model.resolveDocument($parts.get(0)))
718 718   #set ($classReference = $services.model.resolveDocument($parts.get(1)))
719 719   #if ($services.security.authorization.hasAccess('view', $documentReference))
720 - #set ($discard = $children.add({
721 - '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,
722 722   'text': $services.model.serialize($classReference, 'local'),
723 723   'icon': 'fa fa-cubes',
724 724   'children': true,
... ... @@ -726,6 +726,9 @@
726 726   'type': 'objectsOfType',
727 727   'validChildren': ['object', 'pagination'],
728 728   'canDelete': $services.security.authorization.hasAccess('edit', $documentReference)
780 + },
781 + 'state': {
782 + 'opened': $isOpened
729 729   }
730 730   }))
731 731   #end
... ... @@ -752,8 +752,11 @@
752 752  
753 753  #macro (addObjectNode $object $objectReference $siblings)
754 754   #set ($objectId = $services.model.serialize($objectReference, 'default'))
755 - #set ($discard = $children.add({
756 - 'id': "object:$objectId",
809 + #set ($isOpened = false)
810 + #set ($docNodeId = "object:$objectId")
811 + #computeIsOpened($docNodeId $isOpened)
812 + #set ($discard = $siblings.add({
813 + 'id': $docNodeId,
757 757   'text': "[$object.number]",
758 758   'icon': 'fa fa-cube',
759 759   'children': true,
... ... @@ -762,6 +762,9 @@
762 762   'type': 'object',
763 763   'validChildren': ['objectProperty'],
764 764   'canDelete': $services.security.authorization.hasAccess('edit', $objectReference.parent)
822 + },
823 + 'state': {
824 + 'opened': $isOpened
765 765   }
766 766   }))
767 767  #end
... ... @@ -786,8 +786,11 @@
786 786   #end
787 787   #set ($objectPropertyReference = $services.model.createEntityReference($property.name, 'OBJECT_PROPERTY', $objRef))
788 788   #set ($objectPropertyId = $services.model.serialize($objectPropertyReference, 'default'))
849 + #set ($isOpened = false)
850 + #set ($docNodeId = "objectProperty:$objectPropertyId")
851 + #computeIsOpened($docNodeId $isOpened)
789 789   #set ($discard = $siblings.add({
790 - 'id': "objectProperty:$objectPropertyId",
853 + 'id': $docNodeId,
791 791   'text': $property.name,
792 792   'icon': "fa fa-$icon",
793 793   'children': false,
... ... @@ -795,6 +795,9 @@
795 795   'id': $objectPropertyId,
796 796   'type': 'objectProperty',
797 797   'validChildren': []
861 + },
862 + 'state': {
863 + 'opened': $isOpened
798 798   }
799 799   }))
800 800  #end