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

