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

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

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

Сводка

Подробности

Свойства страницы
Автор документа
... ... @@ -1,1 +1,1 @@
1 -xwiki:XWiki.semenihinaa
1 +xwiki:XWiki.rybakovds
Содержимое
... ... @@ -17,51 +17,15 @@
17 17  
18 18  #macro (getVisiblePaidExtensions)
19 19   #getPaidExtensions
20 + #set ($mandatoryExtensions = $services.licensing.licensor.getLicensedExtensionManager().getMandatoryLicensedExtensions())
20 20   #set ($visiblePaidExtensions = $collectiontool.set)
21 21   #foreach ($paidExtension in $paidExtensions)
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)
23 + #if ($mandatoryExtensions.contains($paidExtension.getId()))
26 26   #set ($discard = $visiblePaidExtensions.add($paidExtension))
27 27   #end
28 28   #end
29 29  #end
30 30  
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 -
65 65  #macro (getLicensesAdminSectionURL)
66 66   ## We target the main wiki explicitly because licenses are managed globally.
67 67   #if ($xwiki.exists($services.model.createDocumentReference($xcontext.mainWikiName, 'XWiki', 'ConfigurableClass')))
... ... @@ -157,6 +157,16 @@
157 157   </div>
158 158  #end
159 159  
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 +
160 160  #macro (getLicenseActions $license $extension $actions)
161 161   ## Use the JSON format in order to be parsable in JavaScript.
162 162   #set ($jsonData = {
... ... @@ -189,7 +189,72 @@
189 189   </div>
190 190   <div class="row">
191 191   #autoUpgradeButton($extension.id.id)
166 + #feedbackButton($extension)
192 192   </div>
193 193   </div>
194 194  #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
195 195  {{/velocity}}