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

Редактировал(а) Андрей Ганьков 2025/07/06 04:36

От версии 6.1
отредактировано Андрей Ганьков
на 2025/07/06 04:36
Изменить комментарий: Install extension [org.xwiki.platform:xwiki-platform-index-tree-macro/17.5.0]
К версии 2.1
отредактировано Андрей Ганьков
на 2022/08/01 10:37
Изменить комментарий: Install extension [org.xwiki.platform:xwiki-platform-index-tree-macro/14.6]

Сводка

Подробности

Свойства страницы
Содержимое
... ... @@ -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)
... ... @@ -82,11 +82,7 @@
82 82  #macro (handleDocumentTreeRequest)
83 83   #if ($request.action)
84 84   #if ($services.csrf.isTokenValid($request.form_token))
85 - #if ($request.action == 'create' && $request.type == 'addDocument')
86 - #handleNewNodeCreationRequest()
87 - #else
88 - $response.sendError(400, 'The specified action is not supported.')
89 - #end
79 + $response.sendError(400, 'The specified action is not supported.')
90 90   #elseif ($isAjaxRequest)
91 91   $response.sendError(403, 'The CSRF token is missing.')
92 92   #else
... ... @@ -112,22 +112,6 @@
112 112   #end
113 113  #end
114 114  
115 -#macro (handleNewNodeCreationRequest)
116 - #set ($cleanId = $stringtool.substring($request.id, $stringtool.length('document:')))
117 - #set ($parentReference = $services.model.resolveDocument($cleanId))
118 - #set ($requestedName = $request.name)
119 - #set ($transformedName = $services.modelvalidation.transformName($requestedName))
120 - #set ($spaceReference = $services.model.createSpaceReference($transformedName, $parentReference.lastSpaceReference))
121 - #set ($documentReference = $services.model.createDocumentReference('WebHome', $spaceReference))
122 - #set ($data = [])
123 - #addDocumentNode($documentReference, $data)
124 - ## We want to allow opening the node to add another hierarchy.
125 - #set ($data[0].children = true)
126 - ## We want to display the actual requested name as node name.
127 - #set ($data[0].text = $requestedName)
128 - #jsonResponse($data)
129 -#end
130 -
131 131  #macro (postProcessDocumentTreeData $data)
132 132   ## This is just a hook to allow post processing the document tree data.
133 133  #end
... ... @@ -205,7 +205,6 @@
205 205  
206 206  #macro (maybeAddFarmNode $nodeReference $siblings)
207 207   #set ($farmHomeReference = $services.model.resolveDocument('', 'default'))
208 - #set ($isOpened = $docTreeConfig.expandToLevel > 0)
209 209   #set ($discard = $siblings.add({
210 210   'id': 'farm:*',
211 211   'text': 'Farm',
... ... @@ -215,9 +215,6 @@
215 215   'type': 'farm',
216 216   'validChildren': ['wiki', 'pagination']
217 217   },
218 - 'state': {
219 - 'opened': $isOpened
220 - },
221 221   'a_attr': {
222 222   'href': $xwiki.getURL($farmHomeReference)
223 223   }
... ... @@ -246,7 +246,6 @@
246 246   #else
247 247   #set ($label = $wiki.id)
248 248   #end
249 - #set ($isOpened = $docTreeConfig.expandToLevel > 0)
250 250   #set ($discard = $siblings.add({
251 251   'id': "wiki:$wiki.id",
252 252   'text': $label,
... ... @@ -258,9 +258,6 @@
258 258   'validChildren': ['space', 'document', 'pagination'],
259 259   'canDelete': $canDeleteWiki
260 260   },
261 - 'state': {
262 - 'opened': $isOpened
263 - },
264 264   'a_attr': {
265 265   'href': $xwiki.getURL($wiki.mainPageReference)
266 266   }
... ... @@ -286,7 +286,6 @@
286 286  
287 287  #macro (addSpaceNode $spaceReference $siblings)
288 288   #set ($spaceId = $services.model.serialize($spaceReference, 'default'))
289 - #set ($nodeId = "space:$spaceId")
290 290   #set ($hasSpaceAdmin = $services.security.authorization.hasAccess('admin', $spaceReference))
291 291   #set ($canViewSpace = $services.security.authorization.hasAccess('view', $spaceReference))
292 292   #if ($docTreeConfig.showTerminalDocuments)
... ... @@ -294,21 +294,10 @@
294 294   #set ($hasChildren = true)
295 295   #else
296 296   ## We display only the nested spaces. This space might contain only documents.
297 - #set ($hasChildren = $tree.getChildCount($nodeId) > 0)
262 + #set ($hasChildren = $tree.getChildCount("space:$spaceId") > 0)
298 298   #end
299 - #set ($isOpened = false)
300 - #if ("$!docTreeConfig.expandToLevel" != '')
301 - #set ($rootNode = "wiki:$services.wiki.currentWikiId")
302 - #if ("$!docTreeConfig.root" != '')
303 - #set ($rootNode = "wiki:$services.wiki.currentWikiId")
304 - #else
305 - #set ($rootNode = $docTreeConfig.root)
306 - #end
307 - #set ($rootDistance = $tree.getPath($nodeId).size())
308 - #set ($isOpened = ($rootDistance != -1 && $docTreeConfig.expandToLevel >= $rootDistance))
309 - #end
310 310   #set ($discard = $siblings.add({
311 - 'id': $nodeId,
265 + 'id': "space:$spaceId",
312 312   'text': $spaceReference.name,
313 313   'icon': 'fa fa-folder-o',
314 314   'iconOpened': 'fa fa-folder-open-o',
... ... @@ -326,9 +326,6 @@
326 326   'createDocumentURL': $xwiki.getURL($spaceReference, 'create', $NULL),
327 327   'deleteURL': $xwiki.getURL($spaceReference, 'deletespace', $NULL)
328 328   },
329 - 'state': {
330 - 'opened': $isOpened
331 - },
332 332   'a_attr': {
333 333   'href': $xwiki.getURL($spaceReference)
334 334   }
... ... @@ -354,7 +354,6 @@
354 354  
355 355  #macro (addDocumentNode $documentReference $siblings)
356 356   #set ($documentId = $services.model.serialize($documentReference, 'default'))
357 - #set ($nodeId = "document:$documentId")
358 358   #set ($label = $documentReference.name)
359 359   #if (!$docTreeConfig.showSpaces &&
360 360   $documentReference.name == $services.model.getEntityReference('DOCUMENT', 'default').name)
... ... @@ -366,25 +366,18 @@
366 366   #if ($canViewDoc && $docTreeConfig.showDocumentTitle)
367 367   ## Display the translated title.
368 368   #set ($translatedDocument = $xwiki.getDocument($documentReference).translatedDocument)
319 + ## Make sure the displayed title is not affected by the sheet request parameter (e.g. when $translatedDocument is
320 + ## the current document). By setting the title (even if we don't change it) the internal document instance is cloned
321 + ## so it's going to be different than the current document instance (which is the target of the sheet parameter).
322 + #set ($discard = $translatedDocument.setTitle($translatedDocument.title))
369 369   #set ($plainTitle = $translatedDocument.plainTitle)
370 370   #if (!$stringtool.isBlank($plainTitle))
371 371   #set ($label = $plainTitle)
372 372   #end
373 373   #end
374 - #set ($hasChildren = $tree.getChildCount($nodeId) > 0)
375 - #set ($isOpened = false)
376 - #if ("$!docTreeConfig.expandToLevel" != '')
377 - #set ($rootNode = "wiki:$services.wiki.currentWikiId")
378 - #if ("$!docTreeConfig.root" != '')
379 - #set ($rootNode = "wiki:$services.wiki.currentWikiId")
380 - #else
381 - #set ($rootNode = $docTreeConfig.root)
382 - #end
383 - #set ($rootDistance = $tree.getPath($nodeId).size())
384 - #set ($isOpened = ($rootDistance != -1 && $docTreeConfig.expandToLevel >= $rootDistance))
385 - #end
328 + #set ($hasChildren = $tree.getChildCount("document:$documentId") > 0)
386 386   #set ($discard = $siblings.add({
387 - 'id': $nodeId,
330 + 'id': "document:$documentId",
388 388   'text': $label,
389 389   'icon': 'fa fa-file-o',
390 390   'children': $hasChildren,
... ... @@ -399,9 +399,6 @@
399 399   'canCopy': $canViewDoc,
400 400   'createDocumentURL': $xwiki.getURL($documentReference, 'create', $NULL)
401 401   },
402 - 'state': {
403 - 'opened': $isOpened
404 - },
405 405   'a_attr': {
406 406   'href': $xwiki.getURL($documentReference)
407 407   }
... ... @@ -416,18 +416,14 @@
416 416  #end
417 417  
418 418  #macro (addAddDocumentNode $documentReference $siblings)
419 - ## FIXME: This URL is wrong, it should use the $documentReference as the parent for creation of the node:
420 - ## the reference is already an existing doc, so it shouldn't be the one used for creation.
421 421   #set ($discard = $siblings.add({
422 422   'id': "addDocument:$services.model.serialize($documentReference, 'default')",
423 - 'text': $services.localization.render('index.documentTree.addDocument'),
361 + 'text': 'New page...',
424 424   'icon': 'fa fa-plus-circle',
425 425   'children': false,
426 426   'data': {
427 427   'type': 'addDocument',
428 - 'validChildren': [],
429 - 'hasContextMenu': true,
430 - 'canRename': true
366 + 'validChildren': []
431 431   },
432 432   'a_attr': {
433 433   'href': $xwiki.getURL($documentReference, 'create')
... ... @@ -1190,7 +1190,6 @@
1190 1190  #macro (searchAttachmentsSolr $text $limit $return)
1191 1191   #set ($params = [
1192 1192   'fq=type:ATTACHMENT',
1193 - 'fq=locale:*',
1194 1194   'qf=filename^4 attcontent',
1195 1195   'fl=type wiki spaces name filename'
1196 1196   ])