Zmeny dokumentu Licensed Extensions
Naposledy upravil Admin-metais MetaIS 2025/05/28 21:41
Z verzie 1.1
upravil Admin-metais MetaIS
-
-
Zmeniť komentár:
Install extension [com.xwiki.licensing:application-licensing-licensor-ui/1.26]
Do verzie 2.1
upravil Admin-metais MetaIS
-
-
Zmeniť komentár:
Install extension [com.xwiki.licensing:application-licensing-licensor-ui/1.29]
Súhrn
-
Vlastnosti stránky (1 modified, 0 added, 0 removed)
-
Objekty (2 modified, 0 added, 0 removed)
Podrobnosti
- Vlastnosti stránky
-
- Obsah
-
... ... @@ -6,11 +6,14 @@ 6 6 <fieldset class="header"> 7 7 <legend>$services.localization.render('licensor.licenseManager.heading')</legend> 8 8 $services.localization.render('licensor.licenseManager.hint') 9 + <div class="required-by-hint"> 10 + $services.icon.renderHTML('warning') : $services.localization.render('licensor.licenseManager.installedAsDependency.hint') 11 + </div 9 9 </fieldset> 10 10 {{/html}} 11 11 #set ($columns = ['name', 'version', 'status', 'support', 'userLimit', 'wiki', 'actions']) 12 12 #set ($columnsProperties = { 13 - 'name': {'filterable': false, 'sortable': false, 'link': 'auto'}, 16 + 'name': {'filterable': false, 'sortable': false, 'link': 'auto', 'html': true}, 14 14 'version': {'filterable': false, 'sortable': false}, 15 15 'status': {'filterable': false, 'sortable': false, 'html': true}, 16 16 'support': {'filterable': false, 'sortable': false}, ... ... @@ -21,7 +21,7 @@ 21 21 #set ($options = { 22 22 'resultPage':'Licenses.Code.LicenseJSON', 23 23 'translationPrefix' : 'licensor.', 24 - 'extraParams': "&show AllPaidExtensions=$!escapetool.url($request.showAllPaidExtensions)"27 + 'extraParams': "&showTopLevelExtensions=$!escapetool.url($request.showTopLevelExtensions)" 25 25 }) 26 26 #livetable('licenseManager' $columns $columnsProperties $options) 27 27 {{html clean="false"}} ... ... @@ -71,5 +71,6 @@ 71 71 #displayLicensesLiveTable 72 72 #displayAddLicenseForm 73 73 #feedbackForm 77 + #installedAsDependency 74 74 #end 75 75 {{/velocity}}
- XWiki.JavaScriptExtension[0]
-
- Kód
-
... ... @@ -208,19 +208,10 @@ 208 208 }); 209 209 }; 210 210 211 - // Manages the license buttons from the licenses livetable. If a trial is requested, it is automatically generated 212 - // and installed, else the user is redirected to a page to buy a license. 213 - $('#licenseManager').on('click', '.licenseButton', function(e) { 214 - e.preventDefault(); 211 + // Trigger Get Trial / Extend trial or Buy license actions. 212 + var triggerLicenseAction = function(buttonData) { 215 215 var ownerDetailsForm = $('#ownerDetails'); 216 - if (!validateOwnerDetails(ownerDetailsForm)) { 217 - return; 218 - } 219 - // Update the owner details. 220 - var ownerDetails = ownerDetailsForm.serializeArray(); 221 - licensor.updateOwnerDetails(ownerDetails); 222 - // Get the data from the license button. 223 - var buttonData = JSON.parse($(this).attr('data-button')); 214 + let ownerDetails = ownerDetailsForm.serializeArray(); 224 224 if (buttonData.licenseType === 'TRIAL') { 225 225 ownerDetails.push.apply(ownerDetails, $.map(buttonData, function(value, name) { 226 226 return {name: name, value: value}; ... ... @@ -233,6 +233,35 @@ 233 233 ownerDetailsForm.append(extraFields).submit(); 234 234 extraFields.remove(); 235 235 }; 227 + }; 228 + 229 + // Manages the license buttons from the licenses livetable. If a trial is requested, it is automatically generated 230 + // and installed, else the user is redirected to a page to buy a license. 231 + $('#licenseManager').on('click', '.licenseButton', function(e) { 232 + e.preventDefault(); 233 + var ownerDetailsForm = $('#ownerDetails'); 234 + if (!validateOwnerDetails(ownerDetailsForm)) { 235 + return; 236 + } 237 + // Update the owner details. 238 + var ownerDetails = ownerDetailsForm.serializeArray(); 239 + licensor.updateOwnerDetails(ownerDetails); 240 + // Get data from the license button. 241 + var buttonData = JSON.parse($(this).attr('data-button')); 242 + // If this extension was installed as dependency, ask for a confirmation before continuing this action, since it 243 + // would be better for the user to get a license for the top level licensed extension. 244 + const requiredByInfo = $($($(this).parents('td.actions')[0]).siblings('td.name')[0]).find('.required-by-info'); 245 + if (requiredByInfo.size() > 0) { 246 + const parentExtensionNode = $('#installed-as-dependency').find('.parent-extensions'); 247 + parentExtensionNode.empty(); 248 + requiredByInfo.data('parent-extensions').split(',').forEach((extension) => { 249 + parentExtensionNode.append("<li>"+ extension.trim() + "</li>"); 250 + }); 251 + $('#installed-as-dependency').data('buttonData', buttonData); 252 + $('#installed-as-dependency').modal('show'); 253 + } else { 254 + triggerLicenseAction(buttonData); 255 + } 236 236 }); 237 237 238 238 // Show a popover on the "Check for Updates" button to let the user know what to do after he pays for the license. ... ... @@ -317,8 +317,19 @@ 317 317 } 318 318 }); 319 319 340 + // Continue license action after user confirmation. 341 + $(document).on('click', '#installed-as-dependency .btn-primary', function(e) { 342 + e.preventDefault(); 343 + triggerLicenseAction($('#installed-as-dependency').data('buttonData')); 344 + }); 345 + 346 + $(document).on('hide.bs.modal', '#installed-as-dependency', function() { 347 + $('#installed-as-dependency').removeData('buttonData'); 348 + $('#installed-as-dependency').find('.parent-extensions').empty(); 349 + }); 350 + 320 320 // Set the documentation links to open in new tab. 321 321 $('#licenseManager-display td.name a').each(function() { 322 - $(this).attr('target', '_blank') 353 + $(this).attr('target', '_blank'); 323 323 }); 324 324 });
- XWiki.StyleSheetExtension[0]
-
- Kód
-
... ... @@ -12,6 +12,19 @@ 12 12 left: auto; 13 13 } 14 14 15 +#licenseManager-display .required-by-info:hover { 16 + color: @gray; 17 +} 18 + 19 +.required-by-hint { 20 + padding-top: 2%; 21 +} 22 + 23 +#installed-as-dependency .parent-extensions li { 24 + padding-top: 1%; 25 + font-weight: bold; 26 +} 27 + 15 15 .licenseButton-paid .action-icon, .licenseButton-extendPaid .action-icon, .isAutoUpgrade { 16 16 color: @brand-success; 17 17 }