LicenseManagementPlugin.ktPlugin entry point — hybrid Wicket + React architecture. Extends AbstractPlugin with ID "licenseManagement". Notable for being one of the first plugins to support both Wicket (legacy) and React (modern) UIs simultaneously.
initialize() registration:
LicenseDao in the RegistryEntry so it's accessible via Groovy scripting engine — scripts can query/manage licenses programmaticallyLicenseListPage, LicenseEditPage (#140, #138)LicensePagesRest — the React frontend REST controllerMenuItemDefId.MISC with i18n key "plugins.licensemanagement.menu"/wa/licenseManagement — used by ProjectForge's two-factor authentication to allow/disallow access to the React UIregisterRight(LicenseManagementRight())addResourceBundle("LicenseManagementI18nResources")