Wiki source code of Tabs macro
Last modified by Helge Dahl on 2018/01/22 10:41
1 | {{box cssClass="floatinginfobox" title="**Contents**"}}{{toc start="2" depth="6" numbered="false" scope="page" /}}{{/box}} |
2 | |
3 | {{velocity}} |
4 | #macro(tabs $tabsKeyNames) |
5 | ## for debugging, please |
6 | ## 1) copy/paste the macro code from macro object into here |
7 | ## 2) replace #set ($tabsSortedMapString = $context.macro.params.tabsKeyNames) with #set ($tabsSortedMapString = $tabsKeyNames) |
8 | #end |
9 | {{/velocity}} |
10 | |
11 | {{info}}This is home and test page for the "tabs" macro.{{/info}} |
12 | Creates tabbed view for specified content areas wrapped in <div/>s with unique ids |
13 | |
14 | == Usage == |
15 | |
16 | {{box}} |
17 | 1. Define where tabs should be rendered {{{{{tabs idsToLabels='tabId1=Tab One, tabId2=Tab Two, ..., tabIdN=Tab N' /}}}}} |
18 | 2. Define tabs content in {{{(%id="<unique tab id>"%)(((<tab content here>)))}}}: |
19 | {{{(%id="tabId1"%)(((Tab 1 Content)))}}} |
20 | {{{(%id="tabId2"%)(((Tab 2 Content)))}}} |
21 | ... |
22 | {{{(%id="tabIdN"%)(((Tab N Content)))}}} |
23 | {{/box}} |
24 | |
25 | == Parameters definition == |
26 | |
27 | |=Name |=Optional |=Allowed values |=Default value |=Description |
28 | |idsToLabels |no |String | - |This parameter required a comma-separated tab id to tab label values sting formatted like idsToLabels='tabId1=Tab One, tabId2=Tab Two, tabId3=TabThree'. |
29 | |
30 | == Known issues == |
31 | * Tab size is fixed (toucan skin), labels that do not fit will get trimmed (see [[Tab name too long>>#HTabnametoolong?skin=toucan]]) |
32 | * Layout consistency is dependent on white-spaces (see [[Interesting layout bugs>>#HInterestinglayoutbugs]]) |
33 | |
34 | == Examples == |
35 | |
36 | === Content generated by XWiki-wide macro === |
37 | {{tabs idsToLabels='tabId11=My xwiki-wide tabs, tabId12=My working tabs :)' /}} |
38 | (%id="tabId11"%)((({{box cssClass="tabId11div"}} |
39 | First tab! |
40 | {{/box}} |
41 | I can post any content here |
42 | ))) |
43 | |
44 | (%id="tabId12"%)((({{box cssClass="tabId12div"}} |
45 | Second tab! |
46 | {{/box}} |
47 | And here too |
48 | ))) |
49 | |
50 | |
51 | === Known bugs example === |
52 | ==== Tab name too long ==== |
53 | You should view this issue in [[Toucan>>#HTabnametoolong?skin=toucan]] skin. |
54 | Content is generated from this code: ##~{~{tabs idsToLabels='sql2key1=Small tab, sql2key2=**Second large tab with large label**' /~}~}## |
55 | {{tabs idsToLabels='sql2key1=Small tab, sql2key2=Second large tab with large label' /}} |
56 | (%id="sql2key1"%)((({{code language="sql" }} |
57 | SELECT COUNT(ctg_id) AS col_0_0_ FROM categories |
58 | -- some text |
59 | -- several lines |
60 | -- of comments |
61 | -- describing this sql query |
62 | {{/code}}))) |
63 | |
64 | (%id="sql2key2"%)((({{code language="sql"}} |
65 | SELECT COUNT(ctg_id) AS col_0_0_ FROM categories2 |
66 | -- another tab with text |
67 | |
68 | -- Testing content overflow |
69 | -- Text below this box ... |
70 | -- ... should not get covered with it |
71 | |
72 | -- just check this!!! |
73 | |
74 | -- btw: no extra-paragraph has been added before the macro |
75 | {{/code}}))) |
76 | |
77 | ==== Interesting layout bugs ==== |
78 | ===== White spaces before ~(~%id ===== |
79 | {{tabs idsToLabels='sql3key1=Tab 1, sql3key2=Tab 2' /}} |
80 | (%id="sql2key1"%)((({{code language="sql" }} |
81 | SELECT COUNT(ctg_id) AS col_0_0_ FROM categories |
82 | -- some text |
83 | -- of comments |
84 | -- describing this sql query |
85 | {{/code}}))) |
86 | |
87 | (%id="sql3key2"%)((({{code language="sql"}} |
88 | SELECT COUNT(ctg_id) AS col_0_0_ FROM categories2 |
89 | -- another tab with text |
90 | -- some text |
91 | -- more lines in comments |
92 | -- describing this sql query |
93 | {{/code}}))) |
94 | |
95 | ===== White spaces before ~{~{code ===== |
96 | Check this bug in both [[Colibri>>#HWhitespacesbeforecode?skin=colibri]] and [[Toucan>>#HWhitespacesbeforecode?skin=toucan]] skins. |
97 | {{tabs idsToLabels='sql4key1=Tab 1, sql4key2=Tab 2' /}} |
98 | (%id="sql4key1"%)((( |
99 | {{code language="sql" }} |
100 | SELECT COUNT(ctg_id) AS col_0_0_ FROM categories |
101 | -- some text |
102 | -- of comments |
103 | -- describing this sql query |
104 | {{/code}}))) |
105 | |
106 | (%id="sql4key2"%)((( |
107 | {{code language="sql"}} |
108 | SELECT COUNT(ctg_id) AS col_0_0_ FROM categories2 |
109 | -- another tab with text |
110 | -- some text |
111 | -- more lines in comments |
112 | -- describing this sql query |
113 | {{/code}}))) |
114 | |
115 | === Example for debugging === |
116 | Content generated by in-page macro (used for quick macro debugging). |
117 | See instructions for debugging at the top of the page |
118 | {{velocity}}#tabs('tabId31=Tab one, tabId32=Tab 2'){{/velocity}} |
119 | (%id="tabId31"%)((({{box }} |
120 | First tab content |
121 | {{/box}}))) |
122 | |
123 | (%id="tabId32"%)((({{box }} |
124 | Second tab content |
125 | {{/box}}))) |