Changes for page Documents Macro

From version 1.1
edited by superadmin
on 2025/02/21 15:00
Change comment: Install extension [org.xwiki.platform:xwiki-platform-index-ui/15.10.11]
To version 3.1
edited by Monika Leung
on 2025/07/12 16:23
Change comment: Migrated property [featureMandatory] from class [XWiki.WikiMacroParameterClass]

Summary

Details

Page properties
Author
... ... @@ -1,1 +1,1 @@
1 -XWiki.superadmin
1 +xwiki:XWiki.leung
XWiki.WikiMacroClass[0]
Macro code
... ... @@ -1,61 +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.title', 'doc.location', 'doc.date', 'doc.author'])
8 + #set ($properties = ['doc.title', 'doc.location', 'doc.date', 'doc.author'])
9 9  #end
10 -#set($colprops = {
11 - 'doc.title' : { 'size' : 30, 'link' : 'view' },
12 - 'doc.location' : { 'html': true },
13 - 'doc.fullName' : { 'size' : 30, 'link' : 'view' },
14 - 'doc.name' : { 'size' : 30, 'link' : 'view' },
15 - 'doc.space' : { 'link' : 'space' },
16 - 'doc.author' : { '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.location" != "")
27 - #set ($extraParams = "$!{extraParams}&location=$escapetool.url($xcontext.macro.params.location)")
16 +#if ("$!xcontext.macro.params.location" != "")
17 + #set ($discard = $sourceParameters.put('location', $xcontext.macro.params.location))
28 28  #end
29 -#if ("$!xcontext.macro.params.parent" != "")
30 - #set ($extraParams = "$!{extraParams}&parent=$escapetool.url($xcontext.macro.params.parent)")
19 +#if ("$!xcontext.macro.params.parent" != "")
20 + #set ($discard = $sourceParameters.put('parent', $xcontext.macro.params.parent))
31 31  #end
32 -#if ("$!extraParams" != "")
33 - #set($discard = $options.put('extraParams', $extraParams))
34 -#end
35 -#if(!$isGuest && $xcontext.macro.params.actions == "true")
36 - #set($discard = $collist.add('_actions'))
37 - #set($discard = $colprops.put('_actions', {
38 - 'actions': ['copy', 'rename', 'rights', 'delete'],
39 - 'filterable': false,
40 - 'sortable': false
41 - }))
42 -#end
22 +#set ($propertyDescriptors = [])
43 43  #if ("$!services.like" != "")
44 - #set($discard = $collist.add('_likes'))
45 45   ## We can't make it sortable or filterable right now since it's not stored in DB.
46 - #set($discard = $colprops.put('_likes', {
47 - 'filterable': false,
48 - 'sortable': false
49 - }))
25 + #set ($discard = $propertyDescriptors.add({ 'id': '_likes', 'sortable': false, 'filterable': false }))
26 + #set ($discard = $properties.add('_likes'))
50 50  #end
51 -#if ($collist.contains('doc.location'))
52 - #set ($discard = $options.put('selectedColumn','doc.location'))
28 +#if(!$isGuest && $xcontext.macro.params.actions == "true")
29 + #set ($discard = $propertyDescriptors.add({ 'id': '_actions', 'displayer': { 'id': 'actions', 'actions': ['copy', 'rename', 'rights', 'delete'] }}))
30 + #set ($discard = $properties.add('_actions'))
53 53  #end
32 +#set ($liveDataConfig = {'meta': {'propertyDescriptors': $propertyDescriptors}})
54 54  #if ("$!xcontext.macro.params.id" != "")
55 - #set ($livetableId = $xcontext.macro.params.id)
34 + #set ($livedataId = $xcontext.macro.params.id)
56 56  #else
57 57   ## TODO: Improve this since we could have several livetables on the same page with same ids
58 - #set ($livetableId = "documents-$mathtool.random(1, 1000)")
37 + #set ($livedataId = "documents-$mathtool.random(1, 1000)")
59 59  #end
60 -#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}}
61 61  {{/velocity}}
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
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[7]
Parameter description
... ... @@ -1,0 +1,1 @@
1 +Provide a description of the list of documents
Parameter mandatory
... ... @@ -1,0 +1,1 @@
1 +No
Parameter name
... ... @@ -1,0 +1,1 @@
1 +description

Interested in our testing services?

If you are interested and would like to receive more information, please send us an email and sign up for our newsletter to stay up-to-date.