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

Редактировал(а) Георгий Глущенко 2026/07/02 17:46

От версии 10.1
отредактировано Георгий Глущенко
на 2026/07/02 17:46
Изменить комментарий: Install extension [org.xwiki.platform:xwiki-platform-index-tree-macro/18.5.0]
К версии 8.1
отредактировано Андрей Ганьков
на 2026/01/23 10:50
Изменить комментарий: Install extension [org.xwiki.platform:xwiki-platform-index-tree-macro/17.10.2]

Сводка

Подробности

Свойства страницы
Автор документа
... ... @@ -1,1 +1,1 @@
1 -XWiki.ggv
1 +XWiki.gav
Содержимое
... ... @@ -30,9 +30,7 @@
30 30   #end
31 31   #end
32 32   ## Handle relative references
33 - #foreach ($key in ['root', 'openTo'])
34 - #set ($docTreeConfig[$key] = $services.index.tree.normalizeEntityTreeNodeId($docTreeConfig[$key]))
35 - #end
33 + #makeNodeReferencesAbsolute($docTreeConfig ['root', 'openTo'])
36 36   ## FIXME: The 'orderBy' property of the tree API is shared by all tree node types, which means we can't indicate a
37 37   ## different sort field per tree node type (e.g. sort wiki nodes by name and document nodes by last modification
38 38   ## date). At the same time, this property is currently taken into account only for sorting document tree nodes, so for
... ... @@ -58,6 +58,29 @@
58 58   #set ($discard = $tree.properties.putAll($docTreeConfig))
59 59  #end
60 60  
59 +#set ($documentPseudoNodeTypes = ['translations', 'attachments', 'classProperties', 'objects', 'addDocument',
60 + 'addAttachment'])
61 +#macro (makeNodeReferencesAbsolute $map $keys)
62 + #foreach ($key in $keys)
63 + #set ($nodeId = $map.get($key))
64 + #set ($parts = $nodeId.split(':', 2))
65 + #if ($parts && $parts.size() == 2)
66 + #set ($nodeType = $parts[0].toLowerCase())
67 + #set ($nodeReference = $parts[1])
68 + #set ($entityType = $nodeType)
69 + #if ($documentPseudoNodeTypes.contains($nodeType))
70 + #set ($entityType = 'document')
71 + #end
72 + #set ($discard = "#evaluate(""${escapetool.h}set (${escapetool.d}entityReference =
73 + ${escapetool.d}services.model.resolve$stringtool.capitalize($entityType)(${escapetool.d}nodeReference))"")")
74 + #if ($entityReference)
75 + #set ($nodeReference = $services.model.serialize($entityReference, 'default'))
76 + #end
77 + #set ($discard = $map.put($key, "$nodeType:$nodeReference"))
78 + #end
79 + #end
80 +#end
81 +
61 61  #macro (handleDocumentTreeRequest)
62 62   #if ($request.action)
63 63   #if ($services.csrf.isTokenValid($request.form_token))
... ... @@ -152,39 +152,8 @@
152 152   #if ($parts && $parts.size() == 2)
153 153   #set ($nodeType = $parts[0])
154 154   #set ($nodeReference = $parts[1])
155 - #if ($nodeType == 'farm')
156 - #maybeAddFarmNode($nodeReference $siblings)
157 - #elseif ($nodeType == 'wiki')
158 - #maybeAddWikiNode($nodeReference $siblings $placeholder)
159 - #elseif ($nodeType == 'space')
160 - #maybeAddSpaceNode($nodeReference $siblings $placeholder)
161 - #elseif ($nodeType == 'document')
162 - #maybeAddDocumentNode($nodeReference $siblings $placeholder)
163 - #elseif ($nodeType == 'addDocument')
164 - #maybeAddAddDocumentNode($nodeReference $siblings)
165 - #elseif ($nodeType == 'translations')
166 - #maybeAddTranslationsNode($nodeReference $siblings)
167 - #elseif ($nodeType == 'translation')
168 - #maybeAddTranslationNode($nodeReference $siblings)
169 - #elseif ($nodeType == 'attachments')
170 - #maybeAddAttachmentsNode($nodeReference $siblings)
171 - #elseif ($nodeType == 'attachment')
172 - #maybeAddAttachmentNode($nodeReference $siblings)
173 - #elseif ($nodeType == 'addAttachment')
174 - #maybeAddAddAttachmentNode($nodeReference $siblings)
175 - #elseif ($nodeType == 'classProperties')
176 - #maybeAddClassPropertiesNode($nodeReference $siblings)
177 - #elseif ($nodeType == 'classProperty')
178 - #maybeAddClassPropertyNode($nodeReference $siblings)
179 - #elseif ($nodeType == 'objects')
180 - #maybeAddObjectsNode($nodeReference $siblings)
181 - #elseif ($nodeType == 'objectsOfType')
182 - #maybeAddObjectsOfTypeNode($nodeReference $siblings)
183 - #elseif ($nodeType == 'object')
184 - #maybeAddObjectNode($nodeReference $siblings)
185 - #elseif ($nodeType == 'objectProperty')
186 - #maybeAddObjectPropertyNode($nodeReference $siblings)
187 - #end
176 + #set ($discard = "#evaluate(""${escapetool.h}maybeAdd$stringtool.capitalize($nodeType)Node(
177 + ${escapetool.d}nodeReference ${escapetool.d}siblings ${escapetool.d}placeholder)"")")
188 188   #end
189 189  #end
190 190  
... ... @@ -1314,8 +1314,6 @@
1314 1314  #end
1315 1315  
1316 1316  #macro (addCommonDocTreeSolrParams $params)
1317 - ## Enable prefix matching, besides standard language-dependent matching.
1318 - #set ($discard = $params.add('q=__INPUT__ __INPUT__*'))
1319 1319   #if ($rootType == 'wiki')
1320 1320   ## Limit the search to the specified wiki.
1321 1321   #addWikiLocationSolrParams($rootReference $params)