Modifications pour le document MacroService

Modifié par Florent Charton le 2026/03/13 11:04

Depuis la version 4.1
modifié par Florent Charton
sur 2025/08/19 15:16
Commentaire de modification : Install extension [org.xwiki.platform:xwiki-platform-ckeditor-ui/17.4.3]
À la version 3.1
modifié par Florent Charton
sur 2024/08/08 18:44
Commentaire de modification : Install extension [org.xwiki.platform:xwiki-platform-ckeditor-ui/15.10.11]

Résumé

Détails

Propriétés de la Page
Contenu
... ... @@ -57,6 +57,17 @@
57 57  
58 58   #set ($syntax = $services.rendering.resolveSyntax($syntaxId))
59 59   #set ($macroDescriptors = $services.rendering.getMacroDescriptors($syntax))
60 + #if (!$macroDescriptors)
61 + ## Before XWiki 9.7RC1 we had to use APIs that require programming rights.
62 + #set ($macroDescriptors = [])
63 + #try()
64 + #set ($macroManager = $services.component.getInstance('org.xwiki.rendering.macro.MacroManager'))
65 + #foreach ($macroId in $macroManager.getMacroIds($syntax))
66 + #set ($macroDescriptor = $macroManager.getMacro($macroId).descriptor)
67 + #set ($discard = $macroDescriptors.add($macroDescriptor))
68 + #end
69 + #end
70 + #end
60 60   #set ($data = {})
61 61   #set ($allMacrosExcludedCategories = [])
62 62   #set ($discard = $allMacrosExcludedCategories.add("#maybeTranslate('rendering.macroCategory.Internal' 'Internal')"))
... ... @@ -98,7 +98,7 @@
98 98   }))
99 99   #end
100 100   #end
101 - #set ($macroList = $collectiontool.sort($macroList, 'name'))
112 + #set ($macroList = $resolvedSortTool.sort($macroList, 'name'))
102 102   #set ($discard = $data.put('list', $macroList))
103 103   ## Get macros provided by compatible available extensions
104 104   #set ($macroExtensionsList = [])
... ... @@ -150,6 +150,8 @@
150 150  #end
151 151  
152 152  #macro (maybeGetMacroDescriptor $macroIdAsString)
164 + #set ($xmacro = $NULL)
165 + #set ($macroDescriptor = $NULL)
153 153   #set ($macroId = $services.rendering.resolveMacroId($macroIdAsString))
154 154   #if ($macroId)
155 155   #set ($macroDescriptor = $services.rendering.getMacroDescriptor($macroId))
... ... @@ -158,12 +158,41 @@
158 158   #set ($macroId = $services.rendering.resolveMacroId($macroId.id))
159 159   #set ($macroDescriptor = $services.rendering.getMacroDescriptor($macroId))
160 160   #end
161 - #if ($macroDescriptor)
162 - #getMacroDescriptor($macroDescriptor)
174 + #else
175 + ## Either the macro id could not be resolved (unlikely) or we are on an older XWiki instance (before 10.10RC1) where
176 + ## we had to use APIs that require programming rights.
177 + #getMacroWithPR($macroIdAsString)
178 + #if ($xmacro)
179 + #set ($macroDescriptor = $xmacro.descriptor)
163 163   #end
164 164   #end
182 + #if ($macroDescriptor)
183 + #getMacroDescriptor($macroDescriptor)
184 + #if ($xmacro)
185 + ## supportsInlineMode was not exposed on the macro descriptor before XWiki 10.10RC1.
186 + #set ($data.supportsInlineMode = $xmacro.supportsInlineMode())
187 + #end
188 + #end
165 165  #end
166 166  
191 +#macro (getMacroWithPR $macroIdAsString)
192 + #set ($xmacro = $NULL)
193 + #try()
194 + #set ($macroIdFactory = $services.component.getInstance('org.xwiki.rendering.macro.MacroIdFactory'))
195 + #set ($macroId = $macroIdFactory.createMacroId($macroIdAsString))
196 + #set ($macroManager = $services.component.getInstance('org.xwiki.rendering.macro.MacroManager'))
197 + #if ($macroManager.exists($macroId))
198 + #set ($xmacro = $macroManager.getMacro($macroId))
199 + #elseif ($macroId.syntax)
200 + ## Try the macro id without the syntax.
201 + #set ($macroId = $macroIdFactory.createMacroId($macroId.id))
202 + #if ($macroManager.exists($macroId))
203 + #set ($xmacro = $macroManager.getMacro($macroId))
204 + #end
205 + #end
206 + #end
207 +#end
208 +
167 167  #macro (getMacroDescriptor $macroDescriptor)
168 168   ## Translate the macro name and description.
169 169   #set ($macroTranslationKey = "rendering.macro.$macroDescriptor.id")
... ... @@ -198,6 +198,13 @@
198 198   #set ($parameterDescriptor = $entry.value)
199 199   ## Translate the parameter name and description.
200 200   #set ($parameterTranslationKey = "${macroTranslationKey}.parameter.$parameterDescriptor.id")
243 + ## Note: The displayHidden parameter is new in XWiki 12.4RC1 so make sure we set 'hidden' to false if it doesn't
244 + ## exist
245 + #if ("$!parameterDescriptor.displayHidden" != '')
246 + #set ($parameterHidden = $parameterDescriptor.displayHidden)
247 + #else
248 + #set ($parameterHidden = false)
249 + #end
201 201   #set ($translatedParameterDescriptor = {
202 202   'id': $parameterDescriptor.id,
203 203   'name': "#maybeTranslate(""${parameterTranslationKey}.name"" $parameterDescriptor.name)",
... ... @@ -207,9 +207,13 @@
207 207   'advanced': $parameterDescriptor.advanced,
208 208   'defaultValue': $parameterDescriptor.defaultValue,
209 209   'type': $parameterDescriptor.displayType,
210 - 'hidden' : $parameterDescriptor.displayHidden,
259 + 'hidden' : $parameterHidden,
211 211   'index': $foreach.index
212 212   })
262 + #if ("$!translatedParameterDescriptor.type" == '')
263 + ## displayType is not available before XWiki 11.0 so we need to fall back on parameterType.
264 + #set ($translatedParameterDescriptor.type = $parameterDescriptor.parameterType)
265 + #end
213 213   #set ($translatedParameterDescriptor.caseInsensitive = $translatedParameterDescriptor.type.isEnum())
214 214   #set ($groupDescriptor = $parameterDescriptor.groupDescriptor)
215 215   #if ($groupDescriptor)
... ... @@ -235,7 +235,10 @@
235 235   #end
236 236   #set ($translatedParameterDescriptor.editTemplate = $translatedParameterDescriptor.editTemplate.trim())
237 237   #fixDescriptorType($translatedParameterDescriptor)
238 - #set ($discard = $data.parameterDescriptorMap.put($entry.key, $translatedParameterDescriptor))
291 + ## Make sure the key is lowercase (for XWiki <9.0).
292 + ## See XWIKI-13990: Inconsistency between Java-based and Wiki-based rendering macros regarding the parameter
293 + ## descriptor map keys
294 + #set ($discard = $data.parameterDescriptorMap.put($entry.key.toLowerCase(), $translatedParameterDescriptor))
239 239   #end
240 240   #if ($groupDescriptorTree.groups)
241 241   #set ($data.groupDescriptorTree = $groupDescriptorTree.groups)