Zmeny dokumentu VelocityMacros

Naposledy upravil Admin-metais MetaIS 2025/05/28 21:41

Z verzie 2.1
Zmeniť komentár: Install extension [com.xwiki.licensing:application-licensing-licensor-ui/1.29]
Do verzie 1.1
Zmeniť komentár: Install extension [com.xwiki.licensing:application-licensing-licensor-ui/1.26]

Súhrn

Podrobnosti

Vlastnosti stránky
Obsah
... ... @@ -17,15 +17,51 @@
17 17  
18 18  #macro (getVisiblePaidExtensions)
19 19   #getPaidExtensions
20 - #set ($mandatoryExtensions = $services.licensing.licensor.getLicensedExtensionManager().getMandatoryLicensedExtensions())
21 21   #set ($visiblePaidExtensions = $collectiontool.set)
22 22   #foreach ($paidExtension in $paidExtensions)
23 - #if ($mandatoryExtensions.contains($paidExtension.getId()))
22 + ## Filter out the paid extensions that are dependencies of other paid extensions (because the license of a paid
23 + ## extension should cover its paid dependencies).
24 + #isRequiredBy($paidExtension $paidExtensions)
25 + #if (!$isRequiredBy)
24 24   #set ($discard = $visiblePaidExtensions.add($paidExtension))
25 25   #end
26 26   #end
27 27  #end
28 28  
31 +#macro (isRequiredBy $installedExtension $extensions)
32 + #set ($isRequiredBy = false)
33 + #set ($backwardDependencies = $collectiontool.queue)
34 + #addBackwardDependencies($installedExtension $backwardDependencies)
35 + ## We can't iterate the queue while modifying it and we can't write a "while" loop in Velocity so we're forced to
36 + ## rely on a range loop (limiting the number of backward dependencies that we analyze).
37 + #foreach ($i in [0..1000])
38 + #set ($backwardDependency = $backwardDependencies.poll())
39 + #if ($backwardDependency)
40 + #if ($extensions.contains($backwardDependency))
41 + #set ($isRequiredBy = true)
42 + #break
43 + #else
44 + #addBackwardDependencies($backwardDependency $backwardDependencies)
45 + #end
46 + #else
47 + #break
48 + #end
49 + #end
50 +#end
51 +
52 +#macro (addBackwardDependencies $installedExtension $backwardDependencies)
53 + #set ($backwardDependenciesSet = $collectiontool.set)
54 + #set ($discard = $backwardDependenciesSet.addAll($backwardDependencies))
55 + #set ($backwardDependenciesByNamespace = $services.extension.installed.getBackwardDependencies($installedExtension.id))
56 + #foreach ($backwardDependenciesOnNamespace in $backwardDependenciesByNamespace.values())
57 + #foreach ($backwardDependency in $backwardDependenciesOnNamespace)
58 + #if ($backwardDependenciesSet.add($backwardDependency))
59 + #set ($discard = $backwardDependencies.add($backwardDependency))
60 + #end
61 + #end
62 + #end
63 +#end
64 +
29 29  #macro (getLicensesAdminSectionURL)
30 30   ## We target the main wiki explicitly because licenses are managed globally.
31 31   #if ($xwiki.exists($services.model.createDocumentReference($xcontext.mainWikiName, 'XWiki', 'ConfigurableClass')))
... ... @@ -199,36 +199,4 @@
199 199   </div>
200 200  {{/html}}
201 201  #end
202 -
203 -#macro(installedAsDependency)
204 -{{html clean="false" wiki="true"}}
205 - <div class="modal fade" id="installed-as-dependency" tabindex="-1" role="dialog" aria-labelledby="installed-as-dependency-label">
206 - <div class="modal-dialog" role="document">
207 - <div class="modal-content">
208 - <div class="modal-header">
209 - <button type="button" class="close" data-dismiss="modal" aria-label="Close">
210 - <span aria-hidden="true">&times;</span>
211 - </button>
212 - <div class="modal-title" id="installed-as-dependency-label">
213 - $escapetool.xml($services.localization.render('licensor.installedAsDependency.modal.title'))
214 - </div>
215 - </div>
216 - <div class="modal-body">
217 - $escapetool.xml($services.localization.render('licensor.installedAsDependency.modal.description'))
218 - <ul class="parent-extensions"></ul>
219 - $escapetool.xml($services.localization.render('licensor.installedAsDependency.modal.question'))
220 - </div>
221 - <div class="modal-footer">
222 - <button type="button" class="btn btn-default" data-dismiss="modal">
223 - $escapetool.xml($services.localization.render('cancel'))
224 - </button>
225 - <button type="button" class="btn btn-primary">
226 - $escapetool.xml($services.localization.render('licensor.installedAsDependency.modal.confirm'))
227 - </button>
228 - </div>
229 - </div>
230 - </div>
231 - </div>
232 -{{/html}}
233 -#end
234 234  {{/velocity}}