Skip to content

Commit 3ed632e

Browse files
committed
XWIKI-23618: DocumentTree expandTo doesn't open translations or objects nodes
* Take into account the different nodes (translations, objects, etc) for automatically opening them when expandTo is used
1 parent 9e854fd commit 3ed632e

File tree

1 file changed

+86
-20
lines changed
  • xwiki-platform-core/xwiki-platform-index/xwiki-platform-index-tree/xwiki-platform-index-tree-macro/src/main/resources/XWiki

1 file changed

+86
-20
lines changed

xwiki-platform-core/xwiki-platform-index/xwiki-platform-index-tree/xwiki-platform-index-tree-macro/src/main/resources/XWiki/DocumentTreeMacros.xml

Lines changed: 86 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -413,16 +413,7 @@
413413
#end
414414
#set ($hasChildren = $tree.getChildCount($docNodeId) > 0)
415415
#set ($isOpened = false)
416-
#if ("$!docTreeConfig.expandToLevel" != '')
417-
#set ($rootNode = "wiki:$services.wiki.currentWikiId")
418-
#if ("$!docTreeConfig.root" != '')
419-
#set ($rootNode = "wiki:$services.wiki.currentWikiId")
420-
#else
421-
#set ($rootNode = $docTreeConfig.root)
422-
#end
423-
#set ($rootDistance = $tree.getPath($docNodeId).size())
424-
#set ($isOpened = ($rootDistance != -1 && $docTreeConfig.expandToLevel >= $rootDistance))
425-
#end
416+
#computeIsOpened($docNodeId $isOpened)
426417
#set ($discard = $siblings.add({
427418
'id': $docNodeId,
428419
'text': $label,
@@ -486,16 +477,37 @@
486477
#end
487478
#end
488479

480+
#macro (computeIsOpened $docNodeId $result)
481+
#set ($isOpened = false)
482+
#if ("$!docTreeConfig.expandToLevel" != '')
483+
#set ($rootNode = "wiki:$services.wiki.currentWikiId")
484+
#if ("$!docTreeConfig.root" != '')
485+
#set ($rootNode = "wiki:$services.wiki.currentWikiId")
486+
#else
487+
#set ($rootNode = $docTreeConfig.root)
488+
#end
489+
#set ($rootDistance = $tree.getPath($docNodeId).size())
490+
#set ($isOpened = ($rootDistance != -1 && $docTreeConfig.expandToLevel >= $rootDistance))
491+
#end
492+
#setVariable("$result" $isOpened)
493+
#end
494+
489495
#macro (addTranslationsNode $documentReference $siblings)
496+
#set ($isOpened = false)
497+
#set ($docNodeId = "translations:${documentReference}")
498+
#computeIsOpened($docNodeId $isOpened)
490499
#set ($discard = $siblings.add({
491-
'id': "translations:${documentReference}",
500+
'id': $docNodeId,
492501
'text': 'Translations',
493502
'icon': 'fa fa-language',
494503
'children': true,
495504
'data': {
496505
'type': 'translations',
497506
'validChildren': ['translation'],
498507
'canDelete': $services.security.authorization.hasAccess('delete', $documentReference)
508+
},
509+
'state': {
510+
'opened': $isOpened
499511
}
500512
}))
501513
#end
@@ -512,8 +524,11 @@
512524

513525
#macro (addTranslationNode $translationReference $siblings)
514526
#set ($currentLocale = $services.localization.currentLocale)
527+
#set ($isOpened = false)
528+
#set ($docNodeId = "translation:$services.model.serialize($translationReference, 'default')_$translationReference.locale")
529+
#computeIsOpened($docNodeId $isOpened)
515530
#set ($discard = $siblings.add({
516-
'id': "translation:$services.model.serialize($translationReference, 'default')_$translationReference.locale",
531+
'id': $docNodeId,
517532
'text': $translationReference.locale.getDisplayName($currentLocale),
518533
'icon': 'fa fa-file-text-o',
519534
'children': false,
@@ -524,6 +539,9 @@
524539
},
525540
'a_attr': {
526541
'href': $xwiki.getURL($translationReference)
542+
},
543+
'state': {
544+
'opened': $isOpened
527545
}
528546
}))
529547
#end
@@ -540,8 +558,11 @@
540558
#end
541559

542560
#macro (addAttachmentsNode $documentReference $siblings)
561+
#set ($isOpened = false)
562+
#set ($docNodeId = "attachments:${documentReference}")
563+
#computeIsOpened($docNodeId $isOpened)
543564
#set ($discard = $siblings.add({
544-
'id': "attachments:${documentReference}",
565+
'id': $docNodeId,
545566
'text': 'Attachments',
546567
'icon': 'fa fa-paperclip',
547568
'children': true,
@@ -553,6 +574,9 @@
553574
},
554575
'a_attr': {
555576
'href': $xwiki.getURL($documentReference, 'view', 'viewer=attachments')
577+
},
578+
'state': {
579+
'opened': $isOpened
556580
}
557581
}))
558582
#end
@@ -572,8 +596,11 @@
572596
#set ($attachmentId = $services.model.serialize($attachmentReference, 'default'))
573597
#set ($canEditDoc = $services.security.authorization.hasAccess('edit', $attachmentReference.parent))
574598
#getAttachmentIcon($attachment $icon)
599+
#set ($isOpened = false)
600+
#set ($docNodeId = "attachment:$attachmentId")
601+
#computeIsOpened($docNodeId $isOpened)
575602
#set ($discard = $siblings.add({
576-
'id': "attachment:$attachmentId",
603+
'id': $docNodeId,
577604
'text': $attachment.filename,
578605
'icon': $icon,
579606
'children': false,
@@ -592,6 +619,9 @@
592619
},
593620
'a_attr': {
594621
'href': $attachment.document.getAttachmentURL($attachment.filename)
622+
},
623+
'state': {
624+
'opened': $isOpened
595625
}
596626
}))
597627
#end
@@ -670,15 +700,21 @@
670700
#end
671701

672702
#macro (addClassPropertiesNode $documentReference $siblings)
703+
#set ($isOpened = false)
704+
#set ($docNodeId = "classProperties:${documentReference}")
705+
#computeIsOpened($docNodeId $isOpened)
673706
#set ($discard = $siblings.add({
674-
'id': "classProperties:${documentReference}",
707+
'id': $docNodeId,
675708
'text': 'Class Properties',
676709
'icon': 'fa fa-gears',
677710
'children': true,
678711
'data': {
679712
'type': 'classProperties',
680713
'validChildren': ['classProperty'],
681714
'canDelete': $services.security.authorization.hasAccess('edit', $documentReference)
715+
},
716+
'state': {
717+
'opened': $isOpened
682718
}
683719
}))
684720
#end
@@ -711,15 +747,21 @@
711747
#if (!$icon)
712748
#set ($icon = 'gear')
713749
#end
750+
#set ($isOpened = false)
751+
#set ($docNodeId = "classProperty:$classPropertyId")
752+
#computeIsOpened($docNodeId $isOpened)
714753
#set ($discard = $siblings.add({
715-
'id': "classProperty:$classPropertyId",
754+
'id': $docNodeId,
716755
'text': $property.name,
717756
'icon': "fa fa-$icon",
718757
'children': false,
719758
'data': {
720759
'id': $classPropertyId,
721760
'type': 'classProperty',
722761
'validChildren': []
762+
},
763+
'state': {
764+
'opened': $isOpened
723765
}
724766
}))
725767
#end
@@ -736,15 +778,21 @@
736778
#end
737779

738780
#macro (addObjectsNode $documentReference $siblings)
781+
#set ($isOpened = false)
782+
#set ($docNodeId = "objects:${documentReference}")
783+
#computeIsOpened($docNodeId $isOpened)
739784
#set ($discard = $siblings.add({
740-
'id': "objects:${documentReference}",
785+
'id': $docNodeId,
741786
'text': 'Objects',
742787
'icon': 'fa fa-cubes',
743788
'children': true,
744789
'data': {
745790
'type': 'objects',
746791
'validChildren': ['objectsOfType'],
747792
'canDelete': $services.security.authorization.hasAccess('edit', $documentReference)
793+
},
794+
'state': {
795+
'opened': $isOpened
748796
}
749797
}))
750798
#end
@@ -755,15 +803,21 @@
755803
#set ($documentReference = $services.model.resolveDocument($parts.get(0)))
756804
#set ($classReference = $services.model.resolveDocument($parts.get(1)))
757805
#if ($services.security.authorization.hasAccess('view', $documentReference))
806+
#set ($isOpened = false)
807+
#set ($docNodeId = "objectsOfType:$documentReference/$classReference")
808+
#computeIsOpened($docNodeId $isOpened)
758809
#set ($discard = $siblings.add({
759-
'id': "objectsOfType:$documentReference/$classReference",
810+
'id': $docNodeId,
760811
'text': $services.model.serialize($classReference, 'local'),
761812
'icon': 'fa fa-cubes',
762813
'children': true,
763814
'data': {
764815
'type': 'objectsOfType',
765816
'validChildren': ['object', 'pagination'],
766817
'canDelete': $services.security.authorization.hasAccess('edit', $documentReference)
818+
},
819+
'state': {
820+
'opened': $isOpened
767821
}
768822
}))
769823
#end
@@ -790,8 +844,11 @@
790844

791845
#macro (addObjectNode $object $objectReference $siblings)
792846
#set ($objectId = $services.model.serialize($objectReference, 'default'))
847+
#set ($isOpened = false)
848+
#set ($docNodeId = "object:$objectId")
849+
#computeIsOpened($docNodeId $isOpened)
793850
#set ($discard = $siblings.add({
794-
'id': "object:$objectId",
851+
'id': $docNodeId,
795852
'text': "[$object.number]",
796853
'icon': 'fa fa-cube',
797854
'children': true,
@@ -800,6 +857,9 @@
800857
'type': 'object',
801858
'validChildren': ['objectProperty'],
802859
'canDelete': $services.security.authorization.hasAccess('edit', $objectReference.parent)
860+
},
861+
'state': {
862+
'opened': $isOpened
803863
}
804864
}))
805865
#end
@@ -824,15 +884,21 @@
824884
#end
825885
#set ($objectPropertyReference = $services.model.createEntityReference($property.name, 'OBJECT_PROPERTY', $objRef))
826886
#set ($objectPropertyId = $services.model.serialize($objectPropertyReference, 'default'))
887+
#set ($isOpened = false)
888+
#set ($docNodeId = "objectProperty:$objectPropertyId")
889+
#computeIsOpened($docNodeId $isOpened)
827890
#set ($discard = $siblings.add({
828-
'id': "objectProperty:$objectPropertyId",
891+
'id': $docNodeId,
829892
'text': $property.name,
830893
'icon': "fa fa-$icon",
831894
'children': false,
832895
'data': {
833896
'id': $objectPropertyId,
834897
'type': 'objectProperty',
835898
'validChildren': []
899+
},
900+
'state': {
901+
'opened': $isOpened
836902
}
837903
}))
838904
#end

0 commit comments

Comments
 (0)