Wiki source code of Tags

Last modified by Simon Urli on 2022/10/27

Hide last authors
Admin 1.1 1 {{velocity}}
2 ##
3 ## Tag application.
4 ##
5 ## - See a Tag Cloud of all tags within the wiki.
6 ## - See all the pages tagged with the given tag.
7 ## - Rename a tag.
8 ## - Delete a tag.
9 ##
10 $xwiki.ssx.use('Main.Tags')##
11 ##
12 ## Set application variables (action and tag) from URL parameters.
13 ##
Marius Dumitru Florea 11.1 14 #set ($do = "$!{request.get('do')}")
15 #set ($tag = "$!{request.get('tag')}")
Simon Urli 19.1 16 #set ($wikiEscapedTag = $services.rendering.escape($tag, 'xwiki/2.1'))
Marius Dumitru Florea 11.1 17 #set ($urlEscapedTag = $escapetool.url($tag))
18 #set ($htmlEscapedTag = $escapetool.xml($tag))
Admin 1.1 19 ##
20 ## Macro displayTagAppTitle. Display level1 title of this app.
21 ##
Marius Dumitru Florea 11.1 22 #macro (displayTagAppTitle $urlEscapedTag $htmlEscapedTag $displayButtons)
23 (% class="xapp" %)
Simon Urli 19.1 24 = (% class="highlight tag" %)${wikiEscapedTag}##
Marius Dumitru Florea 11.1 25 #if ($xwiki.hasAdminRights() && $displayButtons) ##
Marius Dumitru Florea 12.1 26 [[$services.localization.render('xe.tag.rename.link')>>||queryString="do=prepareRename&tag=${urlEscapedTag}" class="button rename" rel="nofollow"]] [[$services.localization.render('xe.tag.delete.link')>>||queryString="do=prepareDelete&tag=${urlEscapedTag}" class="button delete" rel="nofollow"]]##
Admin 1.1 27 #end
Marius Dumitru Florea 11.1 28 (%%) =
Admin 1.1 29 #end
30 ##
31 ## Switch between all possible actions:
32 ## viewTag, prepareRename, rename, prepareDelete, delete, default (Tag cloud)
33 ##
Marius Dumitru Florea 11.1 34 #if ($do == 'viewTag')
Admin 1.1 35 ##
36 ## View tag
37 ##
Admin 2.1 38 #displayTagAppTitle($urlEscapedTag $htmlEscapedTag true)
Marius Dumitru Florea 11.1 39 #if ("$!{request.get('renamedTag')}" != '')
Simon Urli 19.1 40 {{info}}$services.localization.render('xe.tag.rename.success', ["//${services.rendering.escape(${request.get('renamedTag')}, 'xwiki/2.1')}//"]){{/info}}
Marius Dumitru Florea 11.1 41
Admin 1.1 42 #end
Marius Dumitru Florea 11.1 43 #set ($list = $xwiki.tag.getDocumentsWithTag($tag))
44 {{container layoutStyle="columns"}}
45 (((
46 (% class="xapp" %)
Simon Urli 19.1 47 === $services.localization.render('xe.tag.alldocs', ["//${wikiEscapedTag}//"]) ===
Marius Dumitru Florea 11.1 48
Vincent Massol 13.1 49 #if ($list.size()> 0)
Thomas Mortagne 16.1 50 {{html}}#displayDocumentList($list false $blacklistedSpaces){{/html}}
Vincent Massol 13.1 51 #else
52 (% class='noitems' %)$services.localization.render('xe.tag.notags')
53 #end
Marius Dumitru Florea 11.1 54 )))
55 (((
56 (% class="xapp" %)
Simon Urli 19.1 57 === $services.localization.render('xe.tag.activity', ["//${wikiEscapedTag}//"]) ===
58 {{notifications useUserPreferences="false" displayOwnEvents="true" tags="$wikiEscapedTag" displayRSSLink="true" /}}
Marius Dumitru Florea 11.1 59 )))
60 {{/container}}
61 #elseif ($do == 'prepareRename')
Admin 1.1 62 ##
63 ## Prepare rename tag
64 ##
Admin 2.1 65 #displayTagAppTitle($urlEscapedTag $htmlEscapedTag false)
Marius Dumitru Florea 11.1 66 {{html}}
Admin 1.1 67 <form id="renameForm" action="$doc.getURL()" method="post">
68 <div>
Admin 3.1 69 <input type="hidden" name="form_token" value="$!{services.csrf.getToken()}" />
Admin 1.1 70 <input name="do" type="hidden" value="renameTag" />
Admin 2.1 71 <input name="tag" type="hidden" value="$htmlEscapedTag" />
Vincent Massol 15.1 72 $services.localization.render('xe.tag.rename.renameto', [$htmlEscapedTag]) <input type="text" name="renameTo" /> <span class="buttonwrapper"><input type="submit" value="$services.localization.render('xe.tag.rename')" class="button"/></span><span class="buttonwrapper"><a href="$doc.getURL('view', "do=viewTag&tag=${urlEscapedTag}")" class="secondary button">$services.localization.render('cancel')</a></span>
Admin 1.1 73 </div>
74 </form>
Marius Dumitru Florea 11.1 75 {{/html}}
76 #elseif ($do == 'renameTag')
Simon Urli 19.1 77 #if (!$services.csrf.isTokenValid($request.get('form_token')))
78 #set ($discard = $response.sendError(401, "Wrong CSRF token"))
Admin 1.1 79 #else
Simon Urli 19.1 80 ##
81 ## Rename tag
82 ##
83 #set ($renameTo = "$!{request.get('renameTo')}")
84 #set ($success = false)
85 #if ($renameTo != '')
86 #set ($success = $xwiki.tag.renameTag($tag, $renameTo))
87 #end
88 #if ($success == true || $success == 'OK')
89 #set ($urlEscapedRenameTo = $escapetool.url($renameTo))
90 $response.sendRedirect($doc.getURL('view', "do=viewTag&tag=${urlEscapedRenameTo}&renamedTag=${urlEscapedTag}"))
91 #else
92 {{error}}$services.localization.render('xe.tag.rename.failure', ["//${wikiEscapedTag}//", "//${services.rendering.escape($renameTo, 'xwiki/2.1')}//"]){{/error}}
93 #end
Admin 1.1 94 #end
Marius Dumitru Florea 11.1 95 #elseif ($do == 'prepareDelete')
Admin 1.1 96 ##
97 ## Prepare delete tag
98 ##
Admin 2.1 99 #displayTagAppTitle($urlEscapedTag $htmlEscapedTag false)
Marius Dumitru Florea 11.1 100 {{html}}
Admin 1.1 101 <form id="deleteForm" action="$doc.getURL()" method="post">
102 <div>
Admin 3.1 103 <input type="hidden" name="form_token" value="$!{services.csrf.getToken()}" />
Admin 1.1 104 <input name="do" type="hidden" value="deleteTag" />
Admin 2.1 105 <input name="tag" type="hidden" value="$htmlEscapedTag" />
Vincent Massol 15.1 106 <span class="buttonwrapper"><input type="submit" value="$services.localization.render('xe.tag.delete', [$htmlEscapedTag])" class="button"/></span><span class="buttonwrapper"><a href="$doc.getURL('view', "do=viewTag&tag=${urlEscapedTag}")" class="secondary button">$services.localization.render('cancel')</a></span>
Admin 1.1 107 </div>
108 </form>
Marius Dumitru Florea 11.1 109 {{/html}}
110 #elseif ($do == 'deleteTag')
Simon Urli 19.1 111 #if (!$services.csrf.isTokenValid($request.get('form_token')))
112 #set ($discard = $response.sendError(401, "Wrong CSRF token"))
Admin 1.1 113 #else
Simon Urli 19.1 114 ##
115 ## Delete tag
116 ##
117 #set ($success = $xwiki.tag.deleteTag($tag))
118 #if ($success == true || $success == 'OK')
119 $response.sendRedirect($doc.getURL('view', "deletedTag=${urlEscapedTag}"))
120 #else
121 {{error}}$services.localization.render('xe.tag.delete.failure', ["//${wikiEscapedTag}//"]){{/error}}
122 #end
Admin 1.1 123 #end
124 #else
125 ##
126 ## View all tags (Tag Cloud)
127 ##
Marius Dumitru Florea 11.1 128 #set ($title = 'All Tags')
129 #if ("$!{request.get('deletedTag')}" != '')
Simon Urli 19.1 130 {{info}}$services.localization.render('xe.tag.delete.success', ["//${services.rendering.escape($request.get('deletedTag'), 'xwiki/2.1')}//"]){{/info}}
Marius Dumitru Florea 11.1 131
Admin 1.1 132 #end
Marius Dumitru Florea 11.1 133 {{tagcloud/}}
Admin 1.1 134 #end
Marius Dumitru Florea 11.1 135 #set ($displayDocExtra = false)
Admin 1.1 136 {{/velocity}}

Get Connected