Changes for page Documents Macro

Last modified by Ludovic Dubost on 2024/07/22 15:50

From version 3.1
edited by Ludovic Dubost
on 2015/09/01 11:46
Change comment: Install extension [org.xwiki.platform:xwiki-platform-index-ui-7.1]
To version 16.1
edited by Ludovic Dubost
on 2024/07/22 15:50
Change comment: Install extension [org.xwiki.platform:xwiki-platform-index-ui/16.5.0]

Summary

Details

Page properties
Content
... ... @@ -1,7 +1,7 @@
1 1  Example:
2 2  
3 -##{{{{{documents id="example" count="5" actions="false" columns="doc.title"/}}}}}##
3 +##{{{{{documents id="example" count="5" actions="false" columns="doc.title, doc.location"/}}}}}##
4 4  
5 5  Generates:
6 6  
7 -{{documents id="example" count="5" actions="false" space="Main" parent="Main.WebHome" columns="doc.title"/}}
7 +{{documents id="example" count="5" actions="false" columns="doc.title, doc.location"/}}
XWiki.WikiMacroClass[0]
Macro code
... ... @@ -1,43 +1,59 @@
1 1  {{velocity}}
2 -#if ("$!xcontext.macro.params.columns" != "")
3 - #set ($collist = [])
2 +#if ("$!xcontext.macro.params.columns" != "")
3 + #set ($properties = [])
4 4   #foreach ($colname in $xcontext.macro.params.columns.split(','))
5 - #set ($discard = $collist.add($colname.trim()))
5 + #set ($discard = $properties.add($colname.trim()))
6 6   #end
7 7  #else
8 - #set($collist = ['doc.name', 'doc.space', 'doc.date', 'doc.author'])
8 + #set ($properties = ['doc.title', 'doc.location', 'doc.date', 'doc.author'])
9 9  #end
10 -#set($colprops = {
11 - 'doc.title' : { 'type' : 'text' , 'size' : 30, 'link' : 'view' },
12 - 'doc.fullName' : { 'type' : 'text' , 'size' : 30, 'link' : 'view' },
13 - 'doc.name' : { 'type' : 'text' , 'size' : 30, 'link' : 'view' },
14 - 'doc.space' : { 'type' : 'text', 'link' : 'space' },
15 - 'doc.date' : { 'type' : 'date' },
16 - 'doc.author' : { 'type' : 'text', 'link' : 'author' }
10 +#set ($sourceParameters = {
11 + 'translationPrefix' : 'platform.index.'
17 17  })
18 -#set($options = {
19 - 'translationPrefix' : 'platform.index.',
20 - 'rowCount' : $xcontext.macro.params.count,
21 - 'description' : 'This table lists documents found on this wiki based on passed criteria. The columns can be sorted and some can be filtered.'
22 -})
23 -#if ("$!xcontext.macro.params.space" != "")
24 - #set ($extraParams = "&space=$escapetool.url($xcontext.macro.params.space)")
13 +#if ("$!xcontext.macro.params.space" != "")
14 + #set ($discard = $sourceParameters.put('space', $xcontext.macro.params.space))
25 25  #end
26 -#if ("$!xcontext.macro.params.parent" != "")
27 - #set ($extraParams = "$!{extraParams}&parent=$escapetool.url($xcontext.macro.params.parent)")
16 +#if ("$!xcontext.macro.params.location" != "")
17 + #set ($discard = $sourceParameters.put('location', $xcontext.macro.params.location))
28 28  #end
29 -#if ("$!extraParams" != "")
30 - #set($discard = $options.put('extraParams', $extraParams))
19 +#if ("$!xcontext.macro.params.parent" != "")
20 + #set ($discard = $sourceParameters.put('parent', $xcontext.macro.params.parent))
31 31  #end
22 +#set ($propertyDescriptors = [])
23 +#if ("$!services.like" != "")
24 + ## We can't make it sortable or filterable right now since it's not stored in DB.
25 + #set ($discard = $propertyDescriptors.add({ 'id': '_likes', 'sortable': false, 'filterable': false }))
26 + #set ($discard = $properties.add('_likes'))
27 +#end
32 32  #if(!$isGuest && $xcontext.macro.params.actions == "true")
33 - #set($discard = $collist.add('_actions'))
34 - #set($discard = $colprops.put('_actions', { 'actions' : ['copy', 'rename', 'rights', 'delete'] }))
29 + #set ($discard = $propertyDescriptors.add({ 'id': '_actions', 'displayer': { 'id': 'actions', 'actions': ['copy', 'rename', 'rights', 'delete'] }}))
30 + #set ($discard = $properties.add('_actions'))
35 35  #end
32 +#set ($liveDataConfig = {'meta': {'propertyDescriptors': $propertyDescriptors}})
36 36  #if ("$!xcontext.macro.params.id" != "")
37 - #set ($livetableId = $xcontext.macro.params.id)
34 + #set ($livedataId = $xcontext.macro.params.id)
38 38  #else
39 39   ## TODO: Improve this since we could have several livetables on the same page with same ids
40 - #set ($livetableId = "documents-$mathtool.random(1, 1000)")
37 + #set ($livedataId = "documents-$mathtool.random(1, 1000)")
41 41  #end
42 -#livetable($livetableId $collist $colprops $options)
39 +
40 +#set ($livedataId = $services.rendering.escape($livedataId, 'xwiki/2.1'))
41 +#set ($description = '')
42 +#if ("$!xcontext.macro.params.description" != '')
43 + #set ($description = $services.rendering.escape($xcontext.macro.params.description, 'xwiki/2.1'))
44 +#end
45 +#set ($limit = '')
46 +#if ("$!xcontext.macro.params.count" != '')
47 + #set ($limit = $services.rendering.escape($xcontext.macro.params.count, 'xwiki/2.1'))
48 +#end
49 +#set ($propertiesStr = $services.rendering.escape($stringtool.join($properties, ','), 'xwiki/2.1'))
50 +{{liveData
51 + id="$livedataId"
52 + properties="$propertiesStr"
53 + source="liveTable"
54 + sourceParameters="$escapetool.url($sourceParameters)"
55 + #if ($description != '')description="$description"#end
56 + #if ($properties.contains('doc.location'))sort="doc.location"#end
57 + #if ($limit != '')limit="$limit"#end
58 +}}$jsontool.serialize($liveDataConfig){{/liveData}}
43 43  {{/velocity}}
Default category
... ... @@ -1,1 +1,0 @@
1 -Content
Cached
... ... @@ -1,0 +1,1 @@
1 +No
Macro description
... ... @@ -1,1 +1,1 @@
1 -Displays a list of documents in a Livetable
1 +Displays a list of documents in a Live Data
Asynchronous rendering
... ... @@ -1,0 +1,1 @@
1 +No
Default categories
... ... @@ -1,0 +1,1 @@
1 +Content
XWiki.WikiMacroParameterClass[3]
Parameter description
... ... @@ -1,1 +1,1 @@
1 -Livetable id
1 +Live Data id
XWiki.WikiMacroParameterClass[5]
Parameter description
... ... @@ -1,1 +1,1 @@
1 -Specifies the list of columns to display (e.g. "doc.name,doc.space"). If not specified then the default column list of used ("doc.name,doc.space,doc.date,doc.author")
1 +Specifies the list of properties (e.g., "doc.name,doc.space"). If not specified then the default properties list is used ("doc.name,doc.space,doc.date,doc.author")
XWiki.WikiMacroParameterClass[6]
Parameter name
... ... @@ -1,0 +1,1 @@
1 +location
Parameter description
... ... @@ -1,0 +1,1 @@
1 +Only lists documents having a full reference matching the passed location (e.g. passing "Beau" would match a document reference of "France.Paris.Beaubourg.Office")
Parameter mandatory
... ... @@ -1,0 +1,1 @@
1 +No
XWiki.WikiMacroParameterClass[7]
Parameter name
... ... @@ -1,0 +1,1 @@
1 +description
Parameter description
... ... @@ -1,0 +1,1 @@
1 +Provide a description of the list of documents
Parameter mandatory
... ... @@ -1,0 +1,1 @@
1 +No