Änderungen von Dokument Content Report Table Macro

Zuletzt geändert von xwikiadmin am 2025/05/21 10:03

Von Version 1.1
bearbeitet von xwikiadmin
am 2022/05/10 12:01
Änderungskommentar: Install extension [com.xwiki.pro:xwiki-pro-macros/1.2.2]
Auf Version 7.1
bearbeitet von xwikiadmin
am 2025/05/21 10:03
Änderungskommentar: Install extension [com.xwiki.pro:xwiki-pro-macros-ui/1.26.19]

Zusammenfassung

Details

XWiki.WikiMacroClass[0]
Makro-Code
... ... @@ -1,45 +1,60 @@
1 -{{velocity}}
2 -## Used parameters :
3 -#set($labels = $wikimacro.parameters.get('labels'))
4 -#set($spaces = $wikimacro.parameters.get('spaces'))
5 -#set($maxResults = $wikimacro.parameters.get('maxResults'))
6 -#if("$!maxResults" == '')
7 - #set($maxResults = 20)
8 -#end
9 -## Searching for the matching pages
10 -#set($statement = 'select distinct doc.fullName, doc.title, doc.creator, doc.date from XWikiDocument doc, BaseObject as obj, DBStringListProperty as prop
11 - join prop.list item where obj.className = :className and obj.name = doc.fullName and obj.id = prop.id.id
12 - and prop.id.name = :propName and lower(item) in (:labelsList)')
13 -#set($lowerCaseLabelList = [])
14 -#foreach($label in $labels.split(','))
15 - #set($discard = $lowerCaseLabelList.add($label.toLowerCase()))
16 -#end
17 -#set($params = {
18 - 'className': 'XWiki.TagClass',
19 - 'propName': 'tags',
20 - 'labelsList': $lowerCaseLabelList
21 -})
22 -#if("$!spaces" != '')
23 - #set ($statement = $statement + ' and (')
24 - #foreach($space in $spaces.split('(?<!\\\\), '))
25 - #if($foreach.index > 0)
26 - #set($statement = $statement + ' or ')
1 +{{velocity output="false"}}
2 +#macro (executeMacro)
3 + ## Used parameters :
4 + ## TODO When https://jira.xwiki.org/browse/XWIKI-18965 is fixed move back to the newer $wikimacro API
5 + #set($labels = $xcontext.macro.params.labels)
6 + #set($spaces = $xcontext.macro.params.spaces)
7 + #set($maxResults = $wikimacro.parameters.get('maxResults'))
8 + #if("$!maxResults" == '')
9 + #set($maxResults = 20)
10 + #end
11 + ## Searching for the matching pages
12 + #set($statement = 'select distinct doc.fullName, doc.title, doc.creator, doc.date from XWikiDocument doc, BaseObject as obj, DBStringListProperty as prop
13 + join prop.list item where obj.className = :className and obj.name = doc.fullName and obj.id = prop.id.id
14 + and prop.id.name = :propName and lower(item) in (:labelsList)')
15 + #set($lowerCaseLabelList = [])
16 + #foreach($label in $labels.split(','))
17 + #set($discard = $lowerCaseLabelList.add($label.toLowerCase()))
18 + #end
19 + #set($params = {
20 + 'className': 'XWiki.TagClass',
21 + 'propName': 'tags',
22 + 'labelsList': $lowerCaseLabelList
23 + })
24 + #if("$!spaces" != '')
25 + #set ($statement = $statement + ' and (')
26 + #foreach($space in $spaces.split('(?<!\\\\), ?'))
27 + #if($foreach.index > 0)
28 + #set($statement = $statement + ' or ')
29 + #end
30 + #set($spaceVar = "space$foreach.index")
31 + #set($statement = $statement + "doc.space = :$spaceVar or doc.space like concat(:$spaceVar, '.%') or doc.space like concat('%.', :$spaceVar) or doc.space like concat('%.', :$spaceVar, '.%')")
32 + #set($discard = $params.put($spaceVar, $space))
27 27   #end
28 - #set($statement = $statement + "doc.space like :space$foreach.index")
29 - #set($discard = $params.put("space$foreach.index", $space.replaceAll('([%_!])', '!$1').concat('%')))
34 + #set($statement = $statement + ')')
30 30   #end
31 - #set($statement = $statement + ')')
36 + #set ($statement = $statement + ' order by doc.date desc')
37 + #set($query = $services.query.hql($statement))
38 + #set($discard = $query.bindValues($params))
39 + #if("$!maxResults" != '')
40 + #set($discard = $query.setLimit($numbertool.toNumber($maxResults)).addFilter('currentlanguage'))
41 + #end
42 + #set($results = $query.execute())
43 + ## Table display
44 + |=$services.localization.render('titlefield')|=$services.localization.render('creator')|=$services.localization.render('contentReportTable.header.modified')
45 + #foreach($result in $results)
46 + |[[$result.get(1)>>$result.get(0)]]|{{html clean="false"}}$xwiki.getUserName($result.get(2), true){{/html}}|$datetool.format('MMM dd, yyyy', $result.get(3))
47 + #end
32 32  #end
33 -#set ($statement = $statement + ' order by doc.date desc')
34 -#set($query = $services.query.hql($statement))
35 -#set($discard = $query.bindValues($params))
36 -#if("$!maxResults" != '')
37 - #set($discard = $query.setLimit($mathtool.toNumber($maxResults)).addFilter('currentlanguage'))
49 +{{/velocity}}
50 +
51 +{{velocity}}
52 +## We need to check if there is a valid license because the macro is registered even if the user doesn't have view right
53 +## on the macro definition page. See XWIKI-14828: Rendering macros defined in wiki pages are available to users that
54 +## don't have view right on those pages.
55 +#if ($services.promacrolicensing.hasLicensureForEntity($xcontext.macro.doc.documentReference))
56 + #executeMacro
57 +#else
58 + {{missingLicenseMessage extensionName="proMacros.extension.name"/}}
38 38  #end
39 -#set($results = $query.execute())
40 -## Table display
41 -|=$services.localization.render('titlefield')|=$services.localization.render('creator')|=$services.localization.render('contentReportTable.header.modified')
42 -#foreach($result in $results)
43 - |[[$result.get(1)>>$result.get(0)]]|{{html clean="false"}}$xwiki.getUserName($result.get(2), true){{/html}}|$datetool.format('MMM dd, yyyy', $result.get(3))
44 -#end
45 45  {{/velocity}}
Standardkategorie
... ... @@ -1,1 +1,0 @@
1 -content
Makrobeschreibung
... ... @@ -1,1 +1,0 @@
1 -Provides a content report in table format, based on labels.
Default categories
... ... @@ -1,0 +1,1 @@
1 +Content
XWiki.WikiMacroParameterClass[0]
Parameter-Beschreibung
... ... @@ -1,1 +1,0 @@
1 -Label(s) to report on
Parameter-Typ
... ... @@ -1,0 +1,1 @@
1 +com.xwiki.pickers.TagsReference
XWiki.WikiMacroParameterClass[1]
Parameter-Beschreibung
... ... @@ -1,1 +1,0 @@
1 -Space(s) to report on
Parameter-Typ
... ... @@ -1,0 +1,1 @@
1 +com.xwiki.pickers.SuggestSpacesReference
XWiki.WikiMacroParameterClass[4]
Parameter-Beschreibung
... ... @@ -1,1 +1,0 @@
1 -Maximum Number of Pages