Afficher les derniers auteurs
1 {{velocity output="false"}}
2 #set ($LONG_MAX_VALUE = $mathtool.pow(2,63))
3 #set ($licensorId = 'com.xwiki.licensing:application-licensing-licensor-api')
4 #set ($licensingConfigDoc = $xwiki.getDocument('Licenses.Code.LicensingConfig'))
5 #set ($storeBuyURL = $licensingConfigDoc.storeBuyURL)
6 #set ($storeAccessURL = $licensingConfigDoc.storeAccessURL)
7 #set ($ownerObj = $licensingConfigDoc.getObject('Licenses.Code.LicensingOwnerClass'))
8 #set ($userCount = $services.licensing.licensor.userCount)
9
10 #macro (getPaidExtensions)
11 #set ($paidExtensionsByNamespace = $services.extension.installed.getBackwardDependencies($licensorId))
12 #set ($paidExtensions = $collectionstool.set)
13 #foreach ($paidExtensionsOnNamespace in $paidExtensionsByNamespace.values())
14 #set ($discard = $paidExtensions.addAll($paidExtensionsOnNamespace))
15 #end
16 #end
17
18 #macro (getVisiblePaidExtensions)
19 #getPaidExtensions
20 #set ($visiblePaidExtensions = $collectionstool.set)
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)
26 #set ($discard = $visiblePaidExtensions.add($paidExtension))
27 #end
28 #end
29 #end
30
31 #macro (isRequiredBy $installedExtension $extensions)
32 #set ($isRequiredBy = false)
33 #set ($backwardDependencies = $collectionstool.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 = $collectionstool.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 #macro (getLicensesAdminSectionURL)
66 ## We target the main wiki explicitly because licenses are managed globally.
67 #if ($xwiki.exists($services.model.createDocumentReference($xcontext.mainWikiName, 'XWiki', 'ConfigurableClass')))
68 $xwiki.getURL($services.model.createDocumentReference($xcontext.mainWikiName, 'XWiki', 'XWikiPreferences'),
69 'admin', 'editor=globaladmin&section=Licenses')##
70 #else
71 ## Fall-back in case the Administration Application is not installed.
72 $xwiki.getURL($services.model.createDocumentReference($xcontext.mainWikiName, 'Licenses', 'WebHome'))##
73 #end
74 #end
75
76 #macro (getMissingLicenseMessage $extensionName)
77 $services.localization.render('licensor.missingLicense', [$services.localization.render($extensionName), '[[',
78 ">>path:#getLicensesAdminSectionURL]]"])
79 #end
80
81 #macro (getMissingLicenseMessageHTML $extensionName)
82 $services.localization.render('licensor.missingLicense', [$services.localization.render($extensionName),
83 "<a href='#getLicensesAdminSectionURL'>", '</a>'])
84 #end
85
86 #macro (getInstanceIdFormField)
87 <dt>
88 <label for="instanceId">$services.localization.render('licensor.ownerDetails.instanceId.label')</label>
89 <span class="xHint">$services.localization.render('licensor.ownerDetails.instanceId.hint')</span>
90 </dt>
91 <dd>
92 #getInstanceIdInput(false)
93 </dd>
94 #end
95
96 #macro (getInstanceIdInput $hidden)
97 #set ($type = 'text')
98 #if ($hidden)
99 #set ($type = 'hidden')
100 #end
101 <input type="$type" name="instanceId" id="instanceId" value="${services.instance.getInstanceId()}" readonly />
102 #end
103
104 #macro (getOwnerFormFields)
105 #foreach ($prop in $ownerObj.properties)
106 <dt>
107 <label for="${prop.name}">$services.localization.render("licensor.ownerDetails.${prop.name}.label")</label>
108 #set ($hintTranslationKey = "licensor.ownerDetails.${prop.name}.hint")
109 #set ($hint = $services.localization.render($hintTranslationKey))
110 #if ($hint != $hintTranslationKey)
111 <span class="xHint">$!escapetool.xml($hint)</span>
112 #end
113 </dt>
114 #set ($inputType = 'text')
115 #if ($prop.name == 'email')
116 #set ($inputType = 'email')
117 #end
118 <dd><input type="$inputType" name="${prop.name}" id="${prop.name}" value="$!{prop.value}" /></dd>
119 #end
120 #end
121
122 #macro (displayOwnerDetailsForm)
123 {{html clean=false}}
124 <form id="ownerDetails" target="_blank" class="xform half" action="${storeBuyURL}" method="post">
125 <fieldset class="header">
126 <legend>$services.localization.render('licensor.ownerDetails.heading')</legend>
127 <p>$services.localization.render('licensor.ownerDetails.hint')</p>
128 <input type="hidden" name="form_token" value="$!escapetool.xml($services.csrf.token)" />
129 <dl>
130 #getOwnerFormFields
131 #getInstanceIdFormField
132 </dl>
133 </fieldset>
134 </form>
135 {{/html}}
136 #end
137
138 #macro (licenseButton $licenseType $cssClass $key $jsonData)
139 #set ($jsonData.licenseType = $licenseType)
140 #set ($label = $services.localization.render("licensor.${key}License.label"))
141 <button class="btn btn-$cssClass licenseButton licenseButton-$escapetool.xml($key)"
142 data-button="$escapetool.xml($jsontool.serialize($jsonData))">$label</button>
143 #end
144
145 #macro (getLicenseActions $license $extension $actions)
146 ## Use the JSON format in order to be parsable in JavaScript.
147 #set ($jsonData = {
148 'featureId': $extension.id.id,
149 'extensionVersion': $extension.id.version.toString(),
150 'userCount': $userCount
151 })
152 #if (!$license || $license.expirationDate == 0)
153 ## No license available.
154 #set ($discard = $actions.add("#licenseButton('PAID' 'success' 'paid' $jsonData)"))
155 #set ($discard = $actions.add("#licenseButton('TRIAL' 'primary' 'trial' $jsonData)"))
156 #elseif ($license.type == 'FREE')
157 #set ($discard = $actions.add("#licenseButton('PAID' 'success' 'paid' $jsonData)"))
158 #elseif ($license.type == 'TRIAL')
159 #set ($discard = $actions.add("#licenseButton('PAID' 'success' 'paid' $jsonData)"))
160 #set ($discard = $actions.add("#licenseButton('TRIAL' 'primary' 'extendTrial' $jsonData)"))
161 #elseif ($license.type == 'PAID')
162 #set ($discard = $actions.add("#licenseButton('PAID' 'success' 'extendPaid' $jsonData)"))
163 #end
164 #end
165
166 #macro (licenseActions $license $extension)
167 #set ($actions = [])
168 #getLicenseActions($license $extension $actions)
169 <div class="licenseActions">
170 $stringtool.join($actions, '')
171 </div>
172 #end
173 {{/velocity}}
This wiki is licensed under a Creative Commons 2.0 license
XWiki 13.10 - Documentation - Conditions