Изменения документа Document Tree Macros
Редактировал(а) Alexey Semenihin 23.10.2026, 15:12
От версии 3.1
отредактировано Dmitriy Rybakov
на 20.06.2025, 16:34
на 20.06.2025, 16:34
Изменить комментарий:
Install extension [org.xwiki.platform:xwiki-platform-index-tree-macro/16.10.8]
К версии 1.1
отредактировано Admin xWiKi
на 15.10.2019, 13:19
на 15.10.2019, 13:19
Изменить комментарий:
Install extension [org.xwiki.platform:xwiki-platform-index-tree-macro/11.8.1]
Сводка
-
Свойства страницы (2 изменено, 0 добавлено, 0 удалено)
Подробности
- Свойства страницы
-
- Автор документа
-
... ... @@ -1,1 +1,1 @@ 1 -XWiki. rybakovds1 +XWiki.admin - Содержимое
-
... ... @@ -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 ... ... @@ -104,7 +104,6 @@ 104 104 #getSuggestions($data) 105 105 #end 106 106 #if ($data) 107 - #postProcessDocumentTreeData($data) 108 108 #jsonResponse($data) 109 109 #else 110 110 $response.sendError(404) ... ... @@ -112,26 +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 -#macro (postProcessDocumentTreeData $data) 132 - ## This is just a hook to allow post processing the document tree data. 133 -#end 134 - 135 135 ##------------------------------------------------------------ 136 136 ## Children 137 137 ##------------------------------------------------------------ ... ... @@ -145,11 +145,11 @@ 145 145 ## Return the children of the specified node. 146 146 #set ($actualNodeId = $nodeId) 147 147 #end 148 - #set ($offset = $mathtool.max($ numbertool.toNumber($request.offset).intValue(), 0))117 + #set ($offset = $mathtool.max($mathtool.toInteger($request.offset), 0)) 149 149 #if ("$!offset" == '') 150 150 #set ($offset = 0) 151 151 #end 152 - #set ($limit = $mathtool.max($ numbertool.toNumber($request.limit).intValue(), 1))121 + #set ($limit = $mathtool.max($mathtool.toInteger($request.limit), 1)) 153 153 #if ("$!limit" == '') 154 154 #set ($limit = 15) 155 155 #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)257 + #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,260 + '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) 314 + ## Make sure the displayed title is not affected by the sheet request parameter (e.g. when $translatedDocument is 315 + ## the current document). By setting the title (even if we don't change it) the internal document instance is cloned 316 + ## so it's going to be different than the current document instance (which is the target of the sheet parameter). 317 + #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 323 + #set ($hasChildren = $tree.getChildCount("document:$documentId") > 0) 386 386 #set ($discard = $siblings.add({ 387 - 'id': $nodeId,325 + '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'),356 + '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 361 + 'validChildren': [] 431 431 }, 432 432 'a_attr': { 433 433 'href': $xwiki.getURL($documentReference, 'create') ... ... @@ -547,8 +547,7 @@ 547 547 'canDelete': $canEditDoc, 548 548 'canMove': $canEditDoc, 549 549 'canCopy': true, 550 - 'deleteURL': $attachment.document.getAttachmentURL($attachment.filename, 'delattachment'), 551 - 'mimetype': $attachment.mimeType 481 + 'deleteURL': $attachment.document.getAttachmentURL($attachment.filename, 'delattachment') 552 552 }, 553 553 'a_attr': { 554 554 'href': $attachment.document.getAttachmentURL($attachment.filename) ... ... @@ -742,8 +742,8 @@ 742 742 ## Object name is: Space.Class[index] 743 743 #set ($separatorIndex = $objectReference.name.lastIndexOf('[')) 744 744 #set ($classId = $objectReference.name.substring(0, $separatorIndex)) 745 - #set ($objectNumber = $ numbertool.toNumber($objectReference.name.substring($mathtool.add($separatorIndex, 1),746 - $mathtool.sub($objectReference.name.length(), 1))) .intValue())675 + #set ($objectNumber = $mathtool.toInteger($objectReference.name.substring($mathtool.add($separatorIndex, 1), 676 + $mathtool.sub($objectReference.name.length(), 1)))) 747 747 #set ($document = $xwiki.getDocument($objectReference)) 748 748 #set ($object = $document.getObject($classId, $objectNumber)) 749 749 #end ... ... @@ -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 ]) ... ... @@ -1335,7 +1335,7 @@ 1335 1335 #set ($input = []) 1336 1336 #foreach ($list in $lists) 1337 1337 ## We use queues to be able to easily remove items from the start. 1338 - #set ($queue = $collectiontool.queue) 1267 + #set ($queue = $collectionstool.queue) 1339 1339 #set ($discard = $queue.addAll($list)) 1340 1340 #set ($discard = $input.add($queue)) 1341 1341 ## We will add (part of) the items back later.