Изменения документа VelocityMacros
Редактировал(а) Dmitriy Rybakov 20.06.2025 04:46
От версии 1.1
отредактировано Alexey Semenihin
на 27.05.2025 04:10
на 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
на 20.06.2025 04:46
Изменить комментарий:
Install extension [com.xwiki.licensing:application-licensing-licensor-ui/1.29]
Сводка
-
Свойства страницы (2 изменено, 0 добавлено, 0 удалено)
Подробности
- Свойства страницы
-
- Автор документа
-
... ... @@ -1,1 +1,1 @@ 1 -xwiki:XWiki. semenihinaa1 +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">×</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">×</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}}