Modifications pour le document MacroService

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

Depuis la version 2.1
modifié par Florent Charton
sur 2022/06/28 18:01
Commentaire de modification : Install extension [org.xwiki.contrib:application-ckeditor-ui/1.64.2]
À 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
... ... @@ -38,6 +38,23 @@
38 38  ## }
39 39  ## ================================================================
40 40  #macro (getMacroList $syntaxId)
41 +
42 + ## Loads the css resources to display the macros list
43 + ## TODO: Refactor once we add support for loading css files from javascript without velocity.
44 + #if ($xcontext.action == 'get')
45 + #template('display_macros.vm')
46 + #initRequiredSkinExtensions()
47 + #end
48 +
49 + #set ($discard = $xwiki.linkx.use($services.webjars.url('selectize.js', 'css/selectize.bootstrap3.css'),
50 + {'type': 'text/css', 'rel': 'stylesheet'}))
51 + #set ($discard = $xwiki.ssfx.use('uicomponents/suggest/xwiki.selectize.css', true))
52 +
53 + #if ($xcontext.action == 'get')
54 + #getRequiredSkinExtensions($requiredSkinExtensions)
55 + #set ($discard = $response.setHeader('X-XWIKI-HTML-HEAD', $requiredSkinExtensions))
56 + #end
57 +
41 41   #set ($syntax = $services.rendering.resolveSyntax($syntaxId))
42 42   #set ($macroDescriptors = $services.rendering.getMacroDescriptors($syntax))
43 43   #if (!$macroDescriptors)
... ... @@ -56,16 +56,41 @@
56 56   #set ($discard = $allMacrosExcludedCategories.add("#maybeTranslate('rendering.macroCategory.Internal' 'Internal')"))
57 57   #set ($discard = $allMacrosExcludedCategories.add("#maybeTranslate('rendering.macroCategory.Deprecated' 'Deprecated')"))
58 58   #set ($discard = $data.put('options', { 'allMacrosExcludedCategories' : $allMacrosExcludedCategories }))
76 + ## If the current user do not want to display hidden documents, we initialize the set of hidden default
77 + ## categories.
78 + ## TODO: Make the list of hidden by default categories configurable from the administration (XWIKI-19993).
79 + #if(!$services.user.getProperties().displayHiddenDocuments())
80 + #set ($hiddenCategories = $services.rendering.getHiddenMacroCategories())
81 + #else
82 + #set ($hiddenCategories = [])
83 + #end
59 59   #set ($macroList = [])
85 + #set ($installedMacros = [])
60 60   #foreach ($macroDescriptor in $macroDescriptors)
87 + #set ($discard = $installedMacros.add($macroDescriptor.id.id))
88 +
61 61   #set ($macroTranslationKey = "rendering.macro.$macroDescriptor.id")
62 - #set ($macroCategoryTranslationKey = "rendering.macroCategory.$macroDescriptor.defaultCategory")
63 - #set ($discard = $macroList.add({
64 - 'id': $macroDescriptor.id,
65 - 'name': "#maybeTranslate(""${macroTranslationKey}.name"" $macroDescriptor.name)",
66 - 'description': "#maybeTranslate(""${macroTranslationKey}.description"" $macroDescriptor.description)",
67 - 'defaultCategory': "#maybeTranslate($macroCategoryTranslationKey $macroDescriptor.defaultCategory)"
68 - }))
90 + #set ($categories = [])
91 + #set ($hidden = false)
92 + #foreach ($category in $services.rendering.getMacroCategories($macroDescriptor.id))
93 + #set ($macroCategoryTranslationKey = "rendering.macroCategory.$category")
94 + #set ($hidden = $hidden || $hiddenCategories.contains($category))
95 + #set ($discard = $categories.add({
96 + 'id': $category,
97 + 'label': "#maybeTranslate($macroCategoryTranslationKey $category)"
98 + }))
99 + #end
100 +
101 + #if (!$hidden)
102 + #set ($defaultCategoryTranslation = "rendering.macroCategory.${macroDescriptor.defaultCategory}")
103 + #set ($discard = $macroList.add({
104 + 'id': $macroDescriptor.id,
105 + 'name': "#maybeTranslate(""${macroTranslationKey}.name"" $macroDescriptor.name)",
106 + 'description': "#maybeTranslate(""${macroTranslationKey}.description"" $macroDescriptor.description)",
107 + 'defaultCategory': "#maybeTranslate($defaultCategoryTranslation $macroDescriptor.defaultCategory)",
108 + 'categories': $categories
109 + }))
110 + #end
69 69   #end
70 70   #set ($macroList = $resolvedSortTool.sort($macroList, 'name'))
71 71   #set ($discard = $data.put('list', $macroList))
... ... @@ -80,7 +80,6 @@
80 80   #end
81 81   #set ($discard = $extensionQuery.setInstalled(false, '', "wiki:$xcontext.database"))
82 82   #set ($extensions = $services.extension.index.repository.search($extensionQuery))
83 - #set ($macroExtensionCategory = $services.localization.render('ckeditor.plugin.macro.notinstalled'))
84 84   #if ($extensions.size > 0)
85 85   #set ($macroExtensionsMap = {})
86 86   #foreach ($extension in $extensions)
... ... @@ -90,21 +90,28 @@
90 90   && $services.security.authorization.hasAccess('admin', $xcontext.userReference, "wiki:$xcontext.database") && $services.extension.isAllowed($extension, "wiki:$xcontext.database")))
91 91   #foreach ($extensionComponent in $extension.getComponents())
92 92   #if ($extensionComponent.roleType == 'org.xwiki.rendering.macro.Macro')
93 - #set ($discard = $macroExtensionsList.add({
94 - 'id' : {
95 - 'id' : $extensionComponent.roleHint
96 - },
97 - 'name': $extensionComponent.roleHint,
98 - 'description': $extension.summary,
99 - 'defaultCategory': '_notinstalled',
100 - 'extensionId' : $extension.id.id,
101 - 'extensionVersion' : $extension.id.version.value,
102 - 'extensionType' : $extension.type,
103 - 'extensionRecommended': $extension.recommended,
104 - 'extensionName': $extension.name,
105 - 'extensionSummary': $extension.summary,
106 - 'extensionInstallAllowed': $extensionInstallAllowed
107 - }))
134 + ## Skip macros identifiers for which a macro is already installed
135 + #if (!$installedMacros.contains($extensionComponent.roleHint))
136 + #set ($discard = $macroExtensionsList.add({
137 + 'id' : {
138 + 'id' : $extensionComponent.roleHint
139 + },
140 + 'name': $extensionComponent.roleHint,
141 + 'description': $extension.summary,
142 + 'defaultCategory': '_notinstalled',
143 + 'categories': [{
144 + 'id' :'_notinstalled',
145 + 'label': $services.localization.render('macroSelector.filter.category.notinstalled')
146 + }],
147 + 'extensionId' : $extension.id.id,
148 + 'extensionVersion' : $extension.id.version.value,
149 + 'extensionType' : $extension.type,
150 + 'extensionRecommended': $extension.recommended,
151 + 'extensionName': $extension.name,
152 + 'extensionSummary': $extension.summary,
153 + 'extensionInstallAllowed': $extensionInstallAllowed
154 + }))
155 + #end
108 108   #end
109 109   #end
110 110   #end