Änderungen von Dokument Licensed Extensions
Zuletzt geändert von xwikiadmin am 2025/07/14 15:59
Von Version 4.1
bearbeitet von xwikiadmin
am 2025/07/14 15:59
am 2025/07/14 15:59
Änderungskommentar:
Install extension [com.xwiki.licensing:application-licensing-licensor-ui/1.29]
Auf Version 2.1
bearbeitet von xwikiadmin
am 2023/04/25 10:57
am 2023/04/25 10:57
Änderungskommentar:
Install extension [com.xwiki.licensing:application-licensing-licensor-ui/1.24.1]
Zusammenfassung
-
Seiteneigenschaften (1 geändert, 0 hinzugefügt, 0 gelöscht)
-
Objekte (2 geändert, 0 hinzugefügt, 0 gelöscht)
Details
- Seiteneigenschaften
-
- Inhalt
-
... ... @@ -6,14 +6,11 @@ 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 12 12 </fieldset> 13 13 {{/html}} 14 14 #set ($columns = ['name', 'version', 'status', 'support', 'userLimit', 'wiki', 'actions']) 15 15 #set ($columnsProperties = { 16 - 'name': {'filterable': false, 'sortable': false, 'link': 'auto' , 'html': true},13 + 'name': {'filterable': false, 'sortable': false, 'link': 'auto'}, 17 17 'version': {'filterable': false, 'sortable': false}, 18 18 'status': {'filterable': false, 'sortable': false, 'html': true}, 19 19 'support': {'filterable': false, 'sortable': false}, ... ... @@ -24,7 +24,7 @@ 24 24 #set ($options = { 25 25 'resultPage':'Licenses.Code.LicenseJSON', 26 26 'translationPrefix' : 'licensor.', 27 - 'extraParams': "&show TopLevelExtensions=$!escapetool.url($request.showTopLevelExtensions)"24 + 'extraParams': "&showAllPaidExtensions=$!escapetool.url($request.showAllPaidExtensions)" 28 28 }) 29 29 #livetable('licenseManager' $columns $columnsProperties $options) 30 30 {{html clean="false"}} ... ... @@ -73,7 +73,5 @@ 73 73 #displayOwnerDetailsForm 74 74 #displayLicensesLiveTable 75 75 #displayAddLicenseForm 76 - #feedbackForm 77 - #installedAsDependency 78 78 #end 79 79 {{/velocity}}
- XWiki.JavaScriptExtension[0]
-
- Code
-
... ... @@ -159,7 +159,7 @@ 159 159 // xwiki:livetable:displayComplete might be triggered before the code from this jsx is executed. In this case, the 160 160 // livetable is also loaded before, because it is using Prototype.js which is loading before the page loads. 161 161 // Make sure that the livetable is loaded by checking for a row with some data. 162 - if ($('#licenseManager-display td.type'). length> 0) {162 + if ($('#licenseManager-display td.type').size() > 0) { 163 163 updateLivetableButtons(); 164 164 } 165 165 $(document).on('xwiki:livetable:displayComplete', updateLivetableButtons); ... ... @@ -208,10 +208,19 @@ 208 208 }); 209 209 }; 210 210 211 - // Trigger Get Trial / Extend trial or Buy license actions. 212 - var triggerLicenseAction = function(buttonData) { 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(); 213 213 var ownerDetailsForm = $('#ownerDetails'); 214 - let ownerDetails = ownerDetailsForm.serializeArray(); 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')); 215 215 if (buttonData.licenseType === 'TRIAL') { 216 216 ownerDetails.push.apply(ownerDetails, $.map(buttonData, function(value, name) { 217 217 return {name: name, value: value}; ... ... @@ -224,35 +224,6 @@ 224 224 ownerDetailsForm.append(extraFields).submit(); 225 225 extraFields.remove(); 226 226 }; 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 - } 256 256 }); 257 257 258 258 // Show a popover on the "Check for Updates" button to let the user know what to do after he pays for the license. ... ... @@ -305,51 +305,8 @@ 305 305 }); 306 306 }); 307 307 308 - $(document).on('click', '.licenseButton-feedback', function(e) { 309 - // Get the data needed in the form. 310 - const buttonData = JSON.parse($(this).attr('data-button')); 311 - const ownerDetails = {}; 312 - $('#ownerDetails').serializeArray().map(x => ownerDetails[x.name] = x.value); 313 - if (typeof MauticSDK !== 'undefined') { 314 - // Make sure no messages or errors remained from the previous submit. 315 - const formName = $('#feedbackFormModal').find('.webmecanikForm form').attr('data-mautic-form'); 316 - MauticSDK.getValidator(formName).clearErrors(); 317 - MauticSDK.getValidator(formName).setMessage('', 'message'); 318 - // Prefill values. 319 - const fieldPrefix = '#mauticform_input_' + formName + '_'; 320 - $(fieldPrefix + 'email').val(ownerDetails['email']); 321 - const instanceId = $(fieldPrefix + 'instance_id'); 322 - instanceId.val(ownerDetails['instanceId']); 323 - const featureId = $(fieldPrefix + 'name_of_the_app'); 324 - featureId.val(buttonData['featureId']); 325 - 326 - // Show the feedback form modal. 327 - $('#feedbackFormModal').modal('show'); 328 - } else { 329 - const params = $.param({ 330 - 'email': ownerDetails['email'], 331 - 'instanceId': ownerDetails['instanceId'], 332 - 'featureId': buttonData['featureId'] 333 - }); 334 - 335 - const feedbackURL = buttonData['storeFeedbackURL'] + '?' + params; 336 - window.open(feedbackURL, '_blank').focus(); 337 - } 338 - }); 339 - 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 - 351 351 // Set the documentation links to open in new tab. 352 352 $('#licenseManager-display td.name a').each(function() { 353 - $(this).attr('target', '_blank') ;290 + $(this).attr('target', '_blank') 354 354 }); 355 355 });
- XWiki.StyleSheetExtension[0]
-
- Code
-
... ... @@ -12,19 +12,6 @@ 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 - 28 28 .licenseButton-paid .action-icon, .licenseButton-extendPaid .action-icon, .isAutoUpgrade { 29 29 color: @brand-success; 30 30 } ... ... @@ -31,6 +31,3 @@ 31 31 .licenseButton-trial .action-icon, .licenseButton-extendTrial .action-icon { 32 32 color: @link-color; 33 33 } 34 -.webmecanikForm input[type=text], .webmecanikForm input[type=email] { 35 - width: 100%; 36 -}