Wiki source code of Modified Pages RSS Feed
Last modified by superadmin on 2022/05/03 16:48
Show last authors
author | version | line-number | content |
---|---|---|---|
1 | {{velocity}} | ||
2 | ## Backward compatibility redirect, if the RSS feed is called without the outputSyntax query argument, force it. | ||
3 | #if (("$!request.xpage" == 'plain' || "$!request.xpage" == 'rdf') && "$!request.outputSyntax" != 'plain') | ||
4 | $response.sendRedirect($xwiki.getURL($doc.fullName, 'view', 'xpage=plain&outputSyntax=plain')) | ||
5 | #end | ||
6 | #if ("$!request.xpage" == 'plain' && "$!request.outputSyntax" == 'plain') | ||
7 | $response.setContentType('application/rss+xml') | ||
8 | ## ====================== | ||
9 | ## Compute Query to find documents | ||
10 | ## ====================== | ||
11 | #if("$!{request.tag}" != '') | ||
12 | ## RSS feed for documents tagged with $request.tag | ||
13 | #set ($query = 'from doc.object(XWiki.TagClass) as tag where (') | ||
14 | #foreach ($tag in $request.getParameterValues('tag')) | ||
15 | #set ($query = "$query :tag${foreach.count} member of tag.tags") | ||
16 | #if ($foreach.hasNext) | ||
17 | #set ($query = "$query OR ") | ||
18 | #end | ||
19 | #end | ||
20 | #set ($query = "$query) AND ") | ||
21 | #else | ||
22 | #set ($query = 'where ') | ||
23 | #end | ||
24 | #if("$!{request.space}" == '') | ||
25 | ## RSS feed for the whole wiki | ||
26 | #set ($query = "$query 1=1") | ||
27 | #else | ||
28 | ## RSS feed for spaces | ||
29 | #set ($query = "$query (") | ||
30 | #foreach ($space in $request.getParameterValues('space')) | ||
31 | #set ($query = "$query doc.space=:space${foreach.count}") | ||
32 | #if ($foreach.hasNext) | ||
33 | #set ($query = "$query OR ") | ||
34 | #end | ||
35 | #end | ||
36 | #set ($query = "$query)") | ||
37 | #end | ||
38 | #set ($query = "$query order by doc.date desc") | ||
39 | ## ============== | ||
40 | ## Bind Query parameters | ||
41 | ## ============== | ||
42 | ## Bind query parameters depending on the passed query string parameters | ||
43 | #set ($queryObject = $services.query.xwql($query).addFilter('currentlanguage').setLimit(20).setOffset(0)) | ||
44 | #if("$!{request.tag}" != '') | ||
45 | #foreach ($tag in $request.getParameterValues('tag')) | ||
46 | #set ($queryObject = $queryObject.bindValue("tag${foreach.count}", $tag)) | ||
47 | #end | ||
48 | #end | ||
49 | #if("$!{request.space}" != '') | ||
50 | #foreach ($space in $request.getParameterValues('space')) | ||
51 | #set ($queryObject = $queryObject.bindValue("space${foreach.count}", $space)) | ||
52 | #end | ||
53 | #end | ||
54 | ## ================ | ||
55 | ## Compute feed description | ||
56 | ## ================ | ||
57 | ## 4 cases to handle: no spaces and tags specified, only spaces specified, only tags specified and spaces and tags specified | ||
58 | #if ("$!{request.space}" != '') | ||
59 | #if ("$!{request.tag}" != '') | ||
60 | #set ($description = $services.localization.render('xe.rss.feed.tagsAndSpaces.description', [$stringtool.join($request.getParameterValues('tag'), ','), $stringtool.join($request.getParameterValues('space'), ',')])) | ||
61 | #else | ||
62 | #set ($description = $services.localization.render('xe.rss.feed.spaces.description', [$stringtool.join($request.getParameterValues('space'), ',')])) | ||
63 | #end | ||
64 | #else | ||
65 | #if ("$!{request.tag}" != '') | ||
66 | #set ($description = $services.localization.render('xe.rss.feed.tags.description', [$stringtool.join($request.getParameterValues('tag'), ',')])) | ||
67 | #else | ||
68 | #set ($description = $services.localization.render('xe.rss.feed.description')) | ||
69 | #end | ||
70 | #end | ||
71 | ## ===================== | ||
72 | ## Execute query and generate feed | ||
73 | ## ===================== | ||
74 | #set ($feed = $xwiki.feed.getWebFeed($queryObject.execute())) | ||
75 | #set ($feedURI = $xwiki.getDocument('Main.WebHome').getExternalURL('view')) | ||
76 | #set ($discard = $feed.setLink($feedURI)) | ||
77 | #set ($discard = $feed.setUri($feedURI)) | ||
78 | #set ($discard = $feed.setAuthor('XWiki')) | ||
79 | #set ($discard = $feed.setTitle($services.localization.render('xe.rss.feed.description', [$text]))) | ||
80 | #set ($discard = $feed.setDescription($description)) | ||
81 | #set ($discard = $feed.setLanguage($xcontext.language)) | ||
82 | #set ($discard = $feed.setCopyright($xwiki.getXWikiPreference('copyright'))) | ||
83 | $xwiki.feed.getFeedOutput($feed, $xwiki.getXWikiPreference('feed_type', 'rss_2.0')) | ||
84 | #end | ||
85 | {{/velocity}} |