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
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
sur 2024/08/08 18:44
Commentaire de modification :
Install extension [org.xwiki.platform:xwiki-platform-ckeditor-ui/15.10.11]
Résumé
-
Propriétés de la Page (1 modifications, 0 ajouts, 0 suppressions)
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' : $parameter Descriptor.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)