Изменения документа VelocityMacros

Редактировал(а) Dmitriy Rybakov 20.06.2025 04:46

От версии 2.1
отредактировано Dmitriy Rybakov
на 20.06.2025 04:46
Изменить комментарий: Install extension [com.xwiki.licensing:application-licensing-licensor-ui/1.29]
К версии 1.1
отредактировано Alexey Semenihin
на 27.05.2025 04:10
Изменить комментарий: Install extension [com.xwiki.licensing:application-licensing-licensor-ui/1.25]

Сводка

Подробности

Свойства страницы
Автор документа
... ... @@ -1,1 +1,1 @@
1 -xwiki:XWiki.rybakovds
1 +xwiki:XWiki.semenihinaa
Содержимое
... ... @@ -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')))
... ... @@ -121,16 +121,6 @@
121 121   </div>
122 122  #end
123 123  
124 -#macro(feedbackButton $extension)
125 - #set ($licensingConfigDoc = $xwiki.getDocument('Licenses.Code.LicensingConfig'))
126 - #set ($jsonData = {
127 - 'featureId': $extension.id.id,
128 - 'extensionVersion': $extension.id.version.toString(),
129 - 'storeFeedbackURL': $licensingConfigDoc.storeFeedbackURL
130 - })
131 - #licenseButton('' 'primary' 'comment' 'feedback' $jsonData)
132 -#end
133 -
134 134  #macro (getLicenseActions $license $extension $actions)
135 135   ## Use the JSON format in order to be parsable in JavaScript.
136 136   #set ($jsonData = {
... ... @@ -163,72 +163,7 @@
163 163   </div>
164 164   <div class="row">
165 165   #autoUpgradeButton($extension.id.id)
166 - #feedbackButton($extension)
167 167   </div>
168 168   </div>
169 169  #end
170 -
171 -#macro(webmecanikForm $webmecanikID)
172 - <div class="webmecanikForm">
173 - <input type="hidden" name="webmecanikID" value="${webmecanikID}">
174 - ## This is the recommended way for automatically inserting a form from Webmecanik using Mautic.
175 - <script type="text/javascript" src="\/\/news.xwiki.com/form/generate.js?id=${webmecanikID}"></script>
176 - </div>
177 -#end
178 -
179 -#macro(feedbackForm)
180 -{{html clean="false" wiki="true"}}
181 - <div class="modal fade" id="feedbackFormModal" tabindex="-1" role="dialog" aria-labelledby="feedbackFormModal-label">
182 - <div class="modal-dialog" role="document">
183 - <div class="modal-content">
184 - <div class="modal-header">
185 - <button type="button" class="close" data-dismiss="modal" aria-label="Close">
186 - <span aria-hidden="true">&times;</span>
187 - </button>
188 - <div class="modal-title" id="feedbackFormModal-label">
189 - $escapetool.xml($services.localization.render('licensor.feedbackLicense.title'))
190 - </div>
191 - </div>
192 - <div class="modal-body">
193 - ## This is the Pro Apps feedback form ID from Webmecanik.
194 - #set ($webmecanikID = '89')
195 - #webmecanikForm($webmecanikID)
196 - </div>
197 - </div>
198 - </div>
199 - </div>
200 -{{/html}}
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}}