Changes for page Menu Macro

Last modified by Sebastian Marsching on 2024/09/04 17:56

From version 3.1
edited by Sebastian Marsching
on 2022/08/02 11:45
Change comment: Migrated property [defaultCategories] from class [XWiki.WikiMacroClass]
To version 5.1
edited by Sebastian Marsching
on 2023/08/13 16:14
Change comment: Migrated property [type] from class [XWiki.WikiMacroParameterClass]

Summary

Details

Page properties
Content
... ... @@ -3,9 +3,11 @@
3 3  = Horizontal Menu =
4 4  
5 5  {{velocity}}
6 +#set ($menuTemplateDoc = $xwiki.getDocument('MenuTemplate'))
6 6  {{code language="none"}}
7 7  {{menu type="horizontal fixedWidth"}}
8 -$xwiki.getDocument('MenuTemplate').content
9 +## No way to escape content in the code macro, so just remove {, see https://jira.xwiki.org/browse/XRENDERING-13.
10 +$menuTemplateDoc.content.replace('{', '')
9 9  {{/menu}}
10 10  {{/code}}
11 11  {{/velocity}}
XWiki.WikiMacroClass[0]
Macro code
... ... @@ -9,10 +9,14 @@
9 9  #set ($discard = $xwiki.ssx.use("$xcontext.macro.doc.prefixedFullName", {'colorTheme': $colorTheme}))
10 10  #set ($discard = $xwiki.jsx.use("$xcontext.macro.doc.prefixedFullName"))
11 11  #if($type.contains('horizontal'))
12 + ## Make sure the id is non-empty for horizontal menus as otherwise the toggle doesn't work.
13 + #if ($stringtool.isBlank("$!id"))
14 + #set ($id = $wikimacro.context.getXDOM().getIdGenerator().generateUniqueId("M", "GeneratedMenuId"))
15 + #end
12 12   (% role="navigation" class="menu-horizontal-toggle" %)(((
13 13   (% class="navbar-header" %)(((
14 14   {{html}}
15 - <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#$!{id}" aria-expanded="false">
19 + <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#$!{escapetool.xml($id)}" aria-expanded="false">
16 16   <span class="sr-only"></span>
17 17   <span class="icon-bar"></span>
18 18   <span class="icon-bar"></span>
... ... @@ -20,13 +20,13 @@
20 20   </button>
21 21   {{/html}}
22 22   )))
23 - (% id="${id}" class="menu menu-$!type collapse navbar-collapse" %)(((
24 - $xcontext.macro.content
27 + (% id="$!{services.rendering.escape($id, 'xwiki/2.1')}" class="menu menu-${services.rendering.escape($!type, 'xwiki/2.1')} collapse navbar-collapse" %)(((
28 + {{wikimacrocontent/}}
25 25   )))
26 26   )))
27 27  #else
28 - (% #if ("$!id" != '') id="$id"#end class="menu menu-$!type" %)(((
29 - $xcontext.macro.content
32 + (% #if ("$!id" != '') id="${services.rendering.escape($id, 'xwiki/2.1')}"#end class="menu menu-${services.rendering.escape($!type, 'xwiki/2.1')}" %)(((
33 + {{wikimacrocontent/}}
30 30   )))
31 31  #end
32 32  {{/velocity}}
Macro content type
... ... @@ -1,0 +1,1 @@
1 +Wiki
Default categories
... ... @@ -1,0 +1,1 @@
1 +Navigation
Default category
... ... @@ -1,1 +1,0 @@
1 -Navigation