Changes for page Menu Macro

Last modified by teamwire005 on 2025/05/06 07:37

From version 2.1
edited by teamwire-admin
on 2024/01/16 09:29
Change comment: Migrated property [defaultCategories] from class [XWiki.WikiMacroClass]
To version 8.1
edited by teamwire004
on 2024/07/12 13:15
Change comment: There is no comment for this version

Summary

Details

Page properties
Author
... ... @@ -1,1 +1,1 @@
1 -XWiki.teamwire-admin
1 +XWiki.teamwire004
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.StyleSheetExtension[1]
Code
... ... @@ -126,7 +126,6 @@
126 126   font-size: @font-size-base;
127 127   text-align: left; // Ensures proper alignment if parent has it changed (e.g., modal footer)
128 128   background-color: @dropdown-bg;
129 - border: 1px solid @dropdown-fallback-border; // IE8 fallback
130 130   border: 1px solid @dropdown-border;
131 131   border-radius: @border-radius-base;
132 132   .box-shadow(0 6px 12px rgba(0,0,0,.175));
XWiki.WikiMacroClass[0]
Macro code
... ... @@ -1,6 +1,7 @@
1 1  {{velocity}}
2 2  #set ($id = $xcontext.macro.params.id)
3 3  #set ($type = $xcontext.macro.params.type)
4 +#set ($label = $xcontext.macro.params.label)
4 4  #set ($colorTheme = $xwiki.getUserPreference('colorTheme'))
5 5  #if ("$!colorTheme" != '')
6 6   ## Make sure we use an absolute reference (see XWIKI-9672)
... ... @@ -8,12 +8,24 @@
8 8  #end
9 9  #set ($discard = $xwiki.ssx.use("$xcontext.macro.doc.prefixedFullName", {'colorTheme': $colorTheme}))
10 10  #set ($discard = $xwiki.jsx.use("$xcontext.macro.doc.prefixedFullName"))
12 +## Make sure the label is non-empty as otherwise the aria-label doesn't work.
13 +#if ("$!label" != '')
14 + #set ($label = $wikimacro.context.getXDOM().getIdGenerator().generateUniqueId('Menu',''))
15 +#end
11 11  #if($type.contains('horizontal'))
12 - (% role="navigation" class="menu-horizontal-toggle" %)(((
17 + ## Make sure the id is non-empty for horizontal menus as otherwise the toggle doesn't work.
18 + #if ("$!id" == '')
19 + #set ($id = $wikimacro.context.getXDOM().getIdGenerator().generateUniqueId("M", "GeneratedMenuId"))
20 + #end
21 + (% role='navigation' class='menu-horizontal-toggle'
22 + aria-label="${services.rendering.escape($label, 'xwiki/2.1')}" %)(((
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">
16 - <span class="sr-only"></span>
25 + <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#$!{escapetool.xml($id)}"
26 + aria-expanded="false" aria-controls="$!{escapetool.xml($id)}">
27 + <span class="sr-only">
28 + $escapetool.xml($services.localization.render('menu.ui.horizontal.toggler.description'))
29 + </span>
17 17   <span class="icon-bar"></span>
18 18   <span class="icon-bar"></span>
19 19   <span class="icon-bar"></span>
... ... @@ -20,13 +20,14 @@
20 20   </button>
21 21   {{/html}}
22 22   )))
23 - (% id="${id}" class="menu menu-$!type collapse navbar-collapse" %)(((
24 - $xcontext.macro.content
36 + (% id="$!{services.rendering.escape($id, 'xwiki/2.1')}" class="menu menu-${services.rendering.escape($!type, 'xwiki/2.1')} collapse navbar-collapse" role="navigation" %)(((
37 + {{wikimacrocontent/}}
25 25   )))
26 26   )))
27 27  #else
28 - (% #if ("$!id" != '') id="$id"#end class="menu menu-$!type" %)(((
29 - $xcontext.macro.content
41 + (% role="navigation" #if ("$!id" != '') id="${services.rendering.escape($id, 'xwiki/2.1')}"#end class="menu menu-${services.rendering.escape($!type, 'xwiki/2.1')}"
42 + aria-label="${services.rendering.escape($label, 'xwiki/2.1')}" %)(((
43 + {{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
XWiki.WikiMacroParameterClass[3]
Parameter description
... ... @@ -1,0 +1,1 @@
1 +Optional menu label used to describe the content of the menu.
Parameter mandatory
... ... @@ -1,0 +1,1 @@
1 +No
Parameter name
... ... @@ -1,0 +1,1 @@
1 +label