Changes for page XWiki Syntax Guide

Last modified by Ludovic Dubost on 2020/07/30 11:21

From version 7.1
edited by Ludovic Dubost
on 2016/10/24 00:53
Change comment: Install extension [org.xwiki.platform:xwiki-platform-help-ui-8.2.1]
To version 5.1
edited by Ludovic Dubost
on 2015/09/01 11:47
Change comment: Install extension [org.xwiki.platform:xwiki-platform-help-ui-7.1]

Summary

Details

Page properties
Content
... ... @@ -1,31 +1,21 @@
1 1  {{velocity output="false"}}
2 2  #set($SUPPORTED_SYNTAXES = {})
3 -#set($void = $SUPPORTED_SYNTAXES.put('1.0', 'XWiki Syntax 1.0'))
4 -#set($void = $SUPPORTED_SYNTAXES.put('2.0', 'XWiki Syntax 2.0'))
5 -#set($void = $SUPPORTED_SYNTAXES.put('2.1', 'XWiki Syntax 2.1'))
6 -##
7 -## needed for sections that contain descriptions valid for several syntaxes
8 -## basically it is hack to reuse the 2.0 descriptions for 2.1
9 -#set($SUPPORTED_SYNTAX_ORDER = ['1.0', '2.0', '2.1'])
10 -##
11 -## filter all syntaxes that are not installed/configured
12 -#set($configuredSyntaxes = $services.rendering.getConfiguredSyntaxes())
13 -#set($enabledSyntaxIds = [])
14 -#foreach($syntax in $configuredSyntaxes)
15 - #set($discard = $enabledSyntaxIds.add($syntax.toIdString()))
16 -#end
17 -#set($unavailableSyntaxes=[])
18 -#foreach($supportedSyntax in $SUPPORTED_SYNTAX_ORDER)
19 - #set($fullSyntaxId = "xwiki/$supportedSyntax")
20 - #if(!$enabledSyntaxIds.contains($fullSyntaxId))
21 - #set($discard = $unavailableSyntaxes.add($supportedSyntax))
22 - #end
23 -#end
24 -#foreach($unavailableSyntax in $unavailableSyntaxes)
25 - #set($discard = $SUPPORTED_SYNTAX_ORDER.remove($unavailableSyntax))
26 - #set($discard = $SUPPORTED_SYNTAXES.removeKey($unavailableSyntax))
27 -#end
3 +#set($void = $SUPPORTED_SYNTAXES.put(1.0, 'XWiki Syntax 1.0'))
4 +#set($void = $SUPPORTED_SYNTAXES.put(2.0, 'XWiki Syntax 2.0'))
5 +#set($void = $SUPPORTED_SYNTAXES.put(2.1, 'XWiki Syntax 2.1'))
28 28  
7 +## We need a way to have a mapping between a string and a number, and we cannot use $mathtool.toDouble() because
8 +## it is locale dependent (see: http://jira.xwiki.org/browse/XWIKI-11343).
9 +## TODO: fix $mathtool or create a script service that handles this english-locale string<->number conversion,
10 +## because this fix is a bit hacky/spaghetti.
11 +## A better fix would be to refactor this application, because the syntax number SHOULD NOT BE USED because a syntax
12 +## is not supposed to be a number (imagine that we switch to 'Markdown', it is impossible to compare).
13 +## Instead, a syntax object should have a list of categories that the syntax supports.
14 +#set($NUMBERS_CONVERSION = {})
15 +#set($void = $NUMBERS_CONVERSION.put('1.0', 1.0))
16 +#set($void = $NUMBERS_CONVERSION.put('2.0', 2.0))
17 +#set($void = $NUMBERS_CONVERSION.put('2.1', 2.1))
18 +
29 29  #if ($request.xaction == 'switchContext')
30 30   $response.sendRedirect($request.target)
31 31   #stop
... ... @@ -36,14 +36,10 @@
36 36   #set ($crtCategoryId = $mathtool.toInteger($crtCategoryId))
37 37  #end
38 38  #set ($crtSectionId = "$!{request.section}")
39 -#set ($crtSyntaxVer = "$!{request.syntax}")
40 -#if (!$SUPPORTED_SYNTAXES.containsKey($crtSyntaxVer))
41 - ## Default to the most current one (if we have any)
42 - #if(!$SUPPORTED_SYNTAX_ORDER.isEmpty())
43 - #set ($crtSyntaxVer = $SUPPORTED_SYNTAX_ORDER.get($mathtool.sub($SUPPORTED_SYNTAX_ORDER.size(),1)))
44 - #end
29 +#set ($crtSyntaxVer = $NUMBERS_CONVERSION.get($request.syntax))
30 +#if ("$!crtSyntaxVer" == '' || !$SUPPORTED_SYNTAXES.containsKey($crtSyntaxVer))
31 + #set ($crtSyntaxVer = 2.1) ## Default to Syntax 2.1
45 45  #end
46 -#set($crtSyntaxPos = $SUPPORTED_SYNTAX_ORDER.indexOf($crtSyntaxVer))
47 47  
48 48  #set ($extraParamList = [])
49 49  #if ($request.language)
... ... @@ -75,7 +75,7 @@
75 75   #set($obj = $sectionDoc.getObject("XWiki.XWikiSyntaxClass"))
76 76  
77 77   ## detect if we entered a new category
78 - #if($catCount < $obj.getProperty("category").value)
64 + #if($catCount < $obj.getProperty("category").value))
79 79   ## Put previous category into map (if existing), and reset children map
80 80   #if($catId)
81 81   #set($cat = { 'id' : $catId, 'name' : $catName, 'children' : $catChildren })
... ... @@ -112,7 +112,7 @@
112 112   #end
113 113  
114 114   ## Add new sections to category children map
115 - #set($child = {'id' : $sectionDoc.getName().substring(11), 'minSyntax' : $obj.getProperty("minSyntaxId").value, 'maxSyntax' : $obj.getProperty("maxSyntaxId").value, 'name' : $sectionTitle})
101 + #set($child = {'id' : $sectionDoc.getName().substring(11), 'minSyntax' : $obj.getProperty("minSyntaxVersion").value, 'maxSyntax' : $obj.getProperty("maxSyntaxVersion").value, 'name' : $sectionTitle})
116 116   $catChildren.add($child)
117 117   #end
118 118  #end
... ... @@ -127,11 +127,11 @@
127 127  #foreach ($category in $syntaxMenu)
128 128   #set ($sectionsToRemove = [])
129 129   #foreach ($section on $category.children)
130 - #set($minSyntaxPos = $SUPPORTED_SYNTAX_ORDER.indexOf($section.minSyntax))
131 - #if ($minSyntaxPos > $crtSyntaxPos)
116 + ## TODO: This should be refactored (see before): a syntax is not supposed to be a number
117 + #if ($section.minSyntax > $crtSyntaxVer)
132 132   #set ($discard = $sectionsToRemove.add($section))
133 133   #if ($section.id == $crtSectionId)
134 - #set ($crtSectionId = '') ## clear section if it doesn't exist (can happen when switching from 2.x to 1.0 syntax)
120 + #set ($crtSectionId = '') ## clear section if it doesn't exist (can happen when switching from 2.0 to 2.1 syntax)
135 135   #end
136 136   #end
137 137   #end
... ... @@ -196,24 +196,16 @@
196 196   *#
197 197  #macro(syntax_displayCategory $sections $translationPrefix $heading)
198 198   #foreach ($section in $sections)
199 - #syntax_displaySection($section $translationPrefix $heading)
200 - #end
201 -#end
202 -
203 -#macro(syntax_displaySection $section $translationPrefix $heading)
204 204   #set ($displayVersion = $crtSyntaxVer)
205 - ## here is the hack to display the description for 2.0 if we have no description for 2.x
206 - ## this likely needs more work if e.g. there is a 3.x which is not compatible with 2.x
207 - #set($maxSyntaxPos = $SUPPORTED_SYNTAX_ORDER.indexOf($section.maxSyntax))
208 - #if ($crtSyntaxPos > $maxSyntaxPos)
186 + ## TODO: This should be refactored (see before): a syntax is not supposed to be a number
187 + #if ($crtSyntaxVer > $section.maxSyntax)
209 209   #set ($displayVersion = $section.maxSyntax)
210 210   #end
211 - #if($heading)
212 212   (% class="sectionheader" %)
213 213   $heading $section.name $heading
214 214  
215 - #end
216 216   {{include reference="XWiki.XWikiSyntax${section.id}" section="H${displayVersion}${section.id}"/}}
194 + #end
217 217  #end
218 218  
219 219  
... ... @@ -269,10 +269,12 @@
269 269   #end
270 270   <select id="goto-select" name="target" title="$escapetool.xml($services.localization.render("help.changesyntax"))">
271 271   <optgroup label="$services.localization.render('help.choose_syntax')">
272 - #foreach($syntaxId in $SUPPORTED_SYNTAX_ORDER)
273 - #set ($query = "syntax=${escapetool.url($syntaxId)}&${crtSelection}")
274 - <option value="$escapetool.xml($doc.getURL('view', $query))"#if($crtSyntaxVer == $syntaxId) selected="selected"#end>$escapetool.html($SUPPORTED_SYNTAXES.get($syntaxId))</option>
275 - #end
250 + #set ($query = "syntax=1.0&${crtSelection}")
251 + <option value="$doc.getURL('view', $query)" #if($crtSyntaxVer==1.0)selected="selected"#end>$SUPPORTED_SYNTAXES.get(1.0)</option>
252 + #set ($query = "syntax=2.0&${crtSelection}")
253 + <option value="$doc.getURL('view', $query)" #if($crtSyntaxVer==2.0)selected="selected"#end>$SUPPORTED_SYNTAXES.get(2.0)</option>
254 + #set ($query = "syntax=2.1&${crtSelection}")
255 + <option value="$doc.getURL('view', $query)" #if($crtSyntaxVer==2.1)selected="selected"#end>$SUPPORTED_SYNTAXES.get(2.1)</option>
276 276   </optgroup>
277 277   </select>
278 278   <span class="buttonwrapper"><input type="submit" value="$escapetool.xml($services.localization.render('admin.switchContext'))" class="button" /></span>
... ... @@ -300,7 +300,7 @@
300 300  #syntaxSwitch()
301 301  (((
302 302  #set ($query = "syntax=$escapetool.url(${crtSyntaxVer})${extraParams}")
303 -#if ($crtCategory){{html}}<a href="${doc.getURL('view', ${query})}">$syntaxTitle</a>{{/html}}#{else}(% class="current" %)$syntaxTitle#{end}#if ($crtCategory) » #if ($crtSection){{html}}<a href="${crtCategory.url}">${crtCategory.name}</a>{{/html}}#{else}(% class="current" %)${crtCategory.name}#{end}#if ($crtSection) » (% class="current" %)${crtSection.name}#end#end
283 +#if ($crtCategory){{html}}<a href="${doc.getURL('view', ${query})}">$syntaxTitle</a>{{/html}}#{else}(% class="current" %)$syntaxTitle#{end}#if ($crtCategory) (% class="separator" %)» #if ($crtSection){{html}}<a href="${crtCategory.url}">${crtCategory.name}</a>{{/html}}#{else}(% class="current" %)${crtCategory.name}#{end}#if ($crtSection) (% class="separator" %)» (% class="current" %)${crtSection.name}#end#end
304 304  )))
305 305  == $syntaxTitle: $sectionName ==
306 306  
... ... @@ -315,7 +315,12 @@
315 315   #set ($subHeading = '===')
316 316   #syntax_displayCategory($crtCategory.children 'syntax.' '==')
317 317   #else
318 - #syntax_displaySection($crtSection 'syntax.' false)
298 + #set ($displayVersion = $crtSyntaxVer)
299 + #if ($crtSyntaxVer > $crtSection.maxSyntax)
300 + #set ($displayVersion = $crtSection.maxSyntax)
301 + #end
302 + #set ($subHeading = '==')
303 + {{include reference="XWiki.XWikiSyntax${crtSection.id}" section="H${displayVersion}${crtSection.id}"/}}
319 319   #end
320 320   ))) ## syntax-page-content
321 321  {{/velocity}}