You've already forked wc-licensed-product
Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 12a3a37658 | |||
| b1fe34adfd |
15
CHANGELOG.md
15
CHANGELOG.md
@@ -7,6 +7,21 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|||||||
|
|
||||||
## [Unreleased]
|
## [Unreleased]
|
||||||
|
|
||||||
|
## [0.3.4] - 2026-01-23
|
||||||
|
|
||||||
|
### Added
|
||||||
|
|
||||||
|
- Current version display on single product pages for licensed products
|
||||||
|
- Version number shown directly under the product title
|
||||||
|
- Frontend CSS styling for version badge with monospace font
|
||||||
|
|
||||||
|
### Technical Details
|
||||||
|
|
||||||
|
- Added `displayCurrentVersion()` method to `LicensedProductType` class
|
||||||
|
- Hooked to `woocommerce_single_product_summary` at priority 6 (after title)
|
||||||
|
- Added `enqueueFrontendStyles()` to load CSS on product pages
|
||||||
|
- Uses `LicensedProduct::get_current_version()` to fetch latest version
|
||||||
|
|
||||||
## [0.3.3] - 2026-01-22
|
## [0.3.3] - 2026-01-22
|
||||||
|
|
||||||
### Fixed
|
### Fixed
|
||||||
|
|||||||
54
CLAUDE.md
54
CLAUDE.md
@@ -878,3 +878,57 @@ Updated OpenAPI specification to document response signing feature added in v0.2
|
|||||||
- Created release package: `releases/wc-licensed-product-0.3.2.zip` (810 KB)
|
- Created release package: `releases/wc-licensed-product-0.3.2.zip` (810 KB)
|
||||||
- SHA256: `ca33c81516b5dcf4a80b3192d8ae4ad39a7bf67196a1f729b563c5ae01b1d39c`
|
- SHA256: `ca33c81516b5dcf4a80b3192d8ae4ad39a7bf67196a1f729b563c5ae01b1d39c`
|
||||||
- Tagged as `v0.3.2` and pushed to `main` branch
|
- Tagged as `v0.3.2` and pushed to `main` branch
|
||||||
|
|
||||||
|
### 2026-01-22 - Version 0.3.3 - Bug Fix & License Testing
|
||||||
|
|
||||||
|
**Overview:**
|
||||||
|
|
||||||
|
Fixed version deactivation bug and added license testing functionality.
|
||||||
|
|
||||||
|
**Bug Fix:**
|
||||||
|
|
||||||
|
- Fixed version deactivation button not working in admin product versions table
|
||||||
|
- Root cause: Parameters in wrong order in `VersionAdminController::ajaxToggleVersion()`
|
||||||
|
- Changed from `updateVersion($versionId, null, null, !$currentlyActive)` to `updateVersion($versionId, null, !$currentlyActive, null)`
|
||||||
|
|
||||||
|
**Implemented:**
|
||||||
|
|
||||||
|
- Added "Test" action to license overview to validate licenses against `/validate` API endpoint
|
||||||
|
- Test License modal showing license key, domain, and validation results
|
||||||
|
- AJAX handler `handleAjaxTestLicense()` for license testing
|
||||||
|
|
||||||
|
**Modified files:**
|
||||||
|
|
||||||
|
- `src/Admin/VersionAdminController.php` - Fixed parameter order in toggle method
|
||||||
|
- `src/Admin/AdminController.php` - Added Test action to PHP fallback and AJAX handler
|
||||||
|
- `templates/admin/licenses.html.twig` - Added Test action and modal to Twig template
|
||||||
|
|
||||||
|
**Release v0.3.3:**
|
||||||
|
|
||||||
|
- Created release package: `releases/wc-licensed-product-0.3.3.zip` (795 KB)
|
||||||
|
- SHA256: `a06d29eabc2da08613ae13874ed152b8ea9363b8284a2e9bdda414e32777558c`
|
||||||
|
- Tagged as `v0.3.3` and pushed to `main` branch
|
||||||
|
|
||||||
|
### 2026-01-23 - Version 0.3.4 - Frontend Version Display
|
||||||
|
|
||||||
|
**Overview:**
|
||||||
|
|
||||||
|
Added current version display on single product pages for licensed products.
|
||||||
|
|
||||||
|
**Implemented:**
|
||||||
|
|
||||||
|
- Current version displayed directly under the product title
|
||||||
|
- Styled version badge with monospace font and subtle blue background
|
||||||
|
- Frontend CSS automatically loaded on licensed product pages
|
||||||
|
|
||||||
|
**Modified files:**
|
||||||
|
|
||||||
|
- `src/Product/LicensedProductType.php` - Added `displayCurrentVersion()` and `enqueueFrontendStyles()` methods
|
||||||
|
- `assets/css/frontend.css` - Added `.wclp-product-version` styles
|
||||||
|
|
||||||
|
**Technical notes:**
|
||||||
|
|
||||||
|
- Uses `woocommerce_single_product_summary` hook at priority 6 (after title at priority 5)
|
||||||
|
- Only displays for licensed product type
|
||||||
|
- Only displays if product has at least one version defined
|
||||||
|
- Uses `LicensedProduct::get_current_version()` which queries `VersionManager::getLatestVersion()`
|
||||||
|
|||||||
@@ -528,3 +528,24 @@
|
|||||||
color: #721c24;
|
color: #721c24;
|
||||||
border: 1px solid #f5c6cb;
|
border: 1px solid #f5c6cb;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Product Version Display (Single Product Page) */
|
||||||
|
.wclp-product-version {
|
||||||
|
margin: 0.5em 0 1em 0;
|
||||||
|
font-size: 0.95em;
|
||||||
|
color: #666;
|
||||||
|
}
|
||||||
|
|
||||||
|
.wclp-product-version .version-label {
|
||||||
|
font-weight: 500;
|
||||||
|
color: #555;
|
||||||
|
}
|
||||||
|
|
||||||
|
.wclp-product-version .version-number {
|
||||||
|
font-family: 'SF Mono', Monaco, Consolas, monospace;
|
||||||
|
background: #e7f3ff;
|
||||||
|
padding: 0.15em 0.5em;
|
||||||
|
border-radius: 3px;
|
||||||
|
color: #2271b1;
|
||||||
|
font-weight: 500;
|
||||||
|
}
|
||||||
|
|||||||
4
composer.lock
generated
4
composer.lock
generated
@@ -12,7 +12,7 @@
|
|||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://src.bundespruefstelle.ch/magdev/wc-licensed-product-client.git",
|
"url": "https://src.bundespruefstelle.ch/magdev/wc-licensed-product-client.git",
|
||||||
"reference": "83037ea0c2d9e365cf9ec0ad50251d3ebc7e4782"
|
"reference": "a3a957914fd6ef74cb479e213d1d3bc0606f496b"
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
"php": "^8.3",
|
"php": "^8.3",
|
||||||
@@ -52,7 +52,7 @@
|
|||||||
"issues": "https://src.bundespruefstelle.ch/magdev/wc-licensed-product-client/issues",
|
"issues": "https://src.bundespruefstelle.ch/magdev/wc-licensed-product-client/issues",
|
||||||
"source": "https://src.bundespruefstelle.ch/magdev/wc-licensed-product-client"
|
"source": "https://src.bundespruefstelle.ch/magdev/wc-licensed-product-client"
|
||||||
},
|
},
|
||||||
"time": "2026-01-22T15:24:57+00:00"
|
"time": "2026-01-22T20:05:48+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "psr/cache",
|
"name": "psr/cache",
|
||||||
|
|||||||
Binary file not shown.
@@ -5,7 +5,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: WC Licensed Product 0.3.1\n"
|
"Project-Id-Version: WC Licensed Product 0.3.1\n"
|
||||||
"Report-Msgid-Bugs-To: magdev3.0@gmail.com\n"
|
"Report-Msgid-Bugs-To: magdev3.0@gmail.com\n"
|
||||||
"POT-Creation-Date: 2026-01-23 11:41+0100\n"
|
"POT-Creation-Date: 2026-01-23 11:54+0100\n"
|
||||||
"PO-Revision-Date: 2026-01-22T17:15:00+00:00\n"
|
"PO-Revision-Date: 2026-01-22T17:15:00+00:00\n"
|
||||||
"Last-Translator: Marco Graetsch <magdev3.0@gmail.com>\n"
|
"Last-Translator: Marco Graetsch <magdev3.0@gmail.com>\n"
|
||||||
"Language-Team: German (Switzerland) <de_CH@li.org>\n"
|
"Language-Team: German (Switzerland) <de_CH@li.org>\n"
|
||||||
@@ -79,9 +79,9 @@ msgstr ""
|
|||||||
"Lizenzen werden generiert, sobald die Bestellung als bezahlt/abgeschlossen "
|
"Lizenzen werden generiert, sobald die Bestellung als bezahlt/abgeschlossen "
|
||||||
"markiert wird."
|
"markiert wird."
|
||||||
|
|
||||||
#: src/Admin/OrderLicenseController.php:144 src/Admin/AdminController.php:1280
|
#: src/Admin/OrderLicenseController.php:144
|
||||||
|
#: src/Admin/SettingsController.php:142 src/Admin/AdminController.php:1280
|
||||||
#: src/Admin/AdminController.php:1431 src/Admin/AdminController.php:1480
|
#: src/Admin/AdminController.php:1431 src/Admin/AdminController.php:1480
|
||||||
#: src/Admin/SettingsController.php:142
|
|
||||||
#: src/Email/LicenseEmailController.php:230
|
#: src/Email/LicenseEmailController.php:230
|
||||||
msgid "License Key"
|
msgid "License Key"
|
||||||
msgstr "Lizenzschlüssel"
|
msgstr "Lizenzschlüssel"
|
||||||
@@ -129,11 +129,11 @@ msgstr "Domain bearbeiten"
|
|||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
msgstr "Abbrechen"
|
msgstr "Abbrechen"
|
||||||
|
|
||||||
#: src/Admin/OrderLicenseController.php:201 src/Admin/AdminController.php:151
|
#: src/Admin/OrderLicenseController.php:201
|
||||||
|
#: src/Admin/SettingsController.php:192 src/Admin/AdminController.php:151
|
||||||
#: src/Admin/AdminController.php:266 src/Admin/AdminController.php:1362
|
#: src/Admin/AdminController.php:266 src/Admin/AdminController.php:1362
|
||||||
#: src/Admin/AdminController.php:1602 src/Admin/SettingsController.php:192
|
#: src/Admin/AdminController.php:1602 src/Product/LicensedProductType.php:110
|
||||||
#: src/Product/LicensedProductType.php:104
|
#: src/Product/LicensedProductType.php:158
|
||||||
#: src/Product/LicensedProductType.php:152
|
|
||||||
msgid "Lifetime"
|
msgid "Lifetime"
|
||||||
msgstr "Lebenslang"
|
msgstr "Lebenslang"
|
||||||
|
|
||||||
@@ -213,6 +213,179 @@ msgstr "Lizenz-Domain aktualisiert."
|
|||||||
msgid "Failed to update license domain."
|
msgid "Failed to update license domain."
|
||||||
msgstr "Lizenz-Domain konnte nicht aktualisiert werden."
|
msgstr "Lizenz-Domain konnte nicht aktualisiert werden."
|
||||||
|
|
||||||
|
#: src/Admin/SettingsController.php:54
|
||||||
|
msgid "Licensed Products"
|
||||||
|
msgstr "Lizensierte Produkte"
|
||||||
|
|
||||||
|
#: src/Admin/SettingsController.php:64 src/Admin/SettingsController.php:128
|
||||||
|
msgid "Plugin License"
|
||||||
|
msgstr "Plugin-Lizenz"
|
||||||
|
|
||||||
|
#: src/Admin/SettingsController.php:65
|
||||||
|
msgid "Default Settings"
|
||||||
|
msgstr "Standardeinstellungen"
|
||||||
|
|
||||||
|
#: src/Admin/SettingsController.php:66
|
||||||
|
msgid "Notifications"
|
||||||
|
msgstr "Benachrichtigungen"
|
||||||
|
|
||||||
|
#: src/Admin/SettingsController.php:130
|
||||||
|
msgid ""
|
||||||
|
"Configure the license for this plugin. A valid license is required for "
|
||||||
|
"frontend features to work."
|
||||||
|
msgstr ""
|
||||||
|
"Konfigurieren Sie die Lizenz für dieses Plugin. Eine gültige Lizenz ist "
|
||||||
|
"erforderlich, damit die Frontend-Funktionen funktionieren."
|
||||||
|
|
||||||
|
#: src/Admin/SettingsController.php:134
|
||||||
|
msgid "License Server URL"
|
||||||
|
msgstr "Lizenzserver-URL"
|
||||||
|
|
||||||
|
#: src/Admin/SettingsController.php:136
|
||||||
|
msgid "The URL of the license server (e.g., https://shop.example.com)."
|
||||||
|
msgstr "Die URL des Lizenzservers (z.B. https://shop.example.com)."
|
||||||
|
|
||||||
|
#: src/Admin/SettingsController.php:144
|
||||||
|
msgid "Your license key in XXXX-XXXX-XXXX-XXXX format."
|
||||||
|
msgstr "Ihr Lizenzschlüssel im Format XXXX-XXXX-XXXX-XXXX."
|
||||||
|
|
||||||
|
#: src/Admin/SettingsController.php:150
|
||||||
|
msgid "Server Secret (Optional)"
|
||||||
|
msgstr "Server-Secret (Optional)"
|
||||||
|
|
||||||
|
#: src/Admin/SettingsController.php:152
|
||||||
|
msgid ""
|
||||||
|
"If the license server uses signed responses, enter the shared secret here "
|
||||||
|
"for enhanced security."
|
||||||
|
msgstr ""
|
||||||
|
"Falls der Lizenzserver signierte Antworten verwendet, geben Sie hier das "
|
||||||
|
"gemeinsame Secret für erhöhte Sicherheit ein."
|
||||||
|
|
||||||
|
#: src/Admin/SettingsController.php:170
|
||||||
|
msgid "Default License Settings"
|
||||||
|
msgstr "Standard Lizenz-Einstellungen"
|
||||||
|
|
||||||
|
#: src/Admin/SettingsController.php:172
|
||||||
|
msgid ""
|
||||||
|
"These settings serve as defaults for new licensed products. Individual "
|
||||||
|
"product settings override these defaults."
|
||||||
|
msgstr ""
|
||||||
|
"Diese Einstellungen dienen als Standard für neue lizensierte Produkte. "
|
||||||
|
"Individuelle Produkteinstellungen überschreiben diese Standards."
|
||||||
|
|
||||||
|
#: src/Admin/SettingsController.php:176
|
||||||
|
msgid "Default Max Activations"
|
||||||
|
msgstr "Standard Max. Aktivierungen"
|
||||||
|
|
||||||
|
#: src/Admin/SettingsController.php:178
|
||||||
|
msgid "Default maximum number of domain activations per license."
|
||||||
|
msgstr "Standard maximale Anzahl der Domain-Aktivierungen pro Lizenz."
|
||||||
|
|
||||||
|
#: src/Admin/SettingsController.php:187
|
||||||
|
msgid "Default License Validity (Days)"
|
||||||
|
msgstr "Standard Lizenz-Gültigkeit (Tage)"
|
||||||
|
|
||||||
|
#: src/Admin/SettingsController.php:189
|
||||||
|
msgid ""
|
||||||
|
"Default number of days a license is valid. Leave empty or set to 0 for "
|
||||||
|
"lifetime licenses."
|
||||||
|
msgstr ""
|
||||||
|
"Standard Anzahl Tage, die eine Lizenz gültig ist. Leer lassen oder auf 0 "
|
||||||
|
"setzen für lebenslange Lizenzen."
|
||||||
|
|
||||||
|
#: src/Admin/SettingsController.php:199
|
||||||
|
msgid "Default Bind to Major Version"
|
||||||
|
msgstr "Standard An Hauptversion binden"
|
||||||
|
|
||||||
|
#: src/Admin/SettingsController.php:201
|
||||||
|
msgid ""
|
||||||
|
"If enabled, licenses are bound to the major version at purchase time by "
|
||||||
|
"default."
|
||||||
|
msgstr ""
|
||||||
|
"Falls aktiviert, werden Lizenzen standardmässig an die Hauptversion zum "
|
||||||
|
"Kaufzeitpunkt gebunden."
|
||||||
|
|
||||||
|
#: src/Admin/SettingsController.php:219
|
||||||
|
msgid "Expiration Warning Schedule"
|
||||||
|
msgstr "Ablaufwarnung Zeitplan"
|
||||||
|
|
||||||
|
#: src/Admin/SettingsController.php:223
|
||||||
|
#, php-format
|
||||||
|
msgid ""
|
||||||
|
"Configure when expiration warning emails are sent. To customize the email "
|
||||||
|
"template, enable/disable, or change the subject, go to %s."
|
||||||
|
msgstr ""
|
||||||
|
"Konfigurieren Sie, wann Ablaufwarnungs-E-Mails gesendet werden. Um die E-"
|
||||||
|
"Mail-Vorlage anzupassen, zu aktivieren/deaktivieren oder den Betreff zu "
|
||||||
|
"ändern, gehen Sie zu %s."
|
||||||
|
|
||||||
|
#: src/Admin/SettingsController.php:225
|
||||||
|
msgid "WooCommerce > Settings > Emails > License Expiration Warning"
|
||||||
|
msgstr "WooCommerce > Einstellungen > E-Mails > Lizenzablauf-Warnung"
|
||||||
|
|
||||||
|
#: src/Admin/SettingsController.php:230
|
||||||
|
msgid "First Warning (Days Before)"
|
||||||
|
msgstr "Erste Warnung (Tage vorher)"
|
||||||
|
|
||||||
|
#: src/Admin/SettingsController.php:232
|
||||||
|
msgid "Days before expiration to send the first warning email."
|
||||||
|
msgstr "Tage vor Ablauf, um die erste Warn-E-Mail zu senden."
|
||||||
|
|
||||||
|
#: src/Admin/SettingsController.php:241
|
||||||
|
msgid "Second Warning (Days Before)"
|
||||||
|
msgstr "Zweite Warnung (Tage vorher)"
|
||||||
|
|
||||||
|
#: src/Admin/SettingsController.php:243
|
||||||
|
msgid ""
|
||||||
|
"Days before expiration to send the second warning email. Set to 0 to disable."
|
||||||
|
msgstr ""
|
||||||
|
"Tage vor Ablauf, um die zweite Warn-E-Mail zu senden. Setzen Sie auf 0, um "
|
||||||
|
"sie zu deaktivieren."
|
||||||
|
|
||||||
|
#: src/Admin/SettingsController.php:283
|
||||||
|
msgid "Running on localhost - license validation bypassed."
|
||||||
|
msgstr "Läuft auf localhost - Lizenzvalidierung übersprungen."
|
||||||
|
|
||||||
|
#: src/Admin/SettingsController.php:291
|
||||||
|
msgid "License is valid and active."
|
||||||
|
msgstr "Lizenz ist gültig und aktiv."
|
||||||
|
|
||||||
|
#: src/Admin/SettingsController.php:297
|
||||||
|
msgid "License is not valid. Frontend features are disabled."
|
||||||
|
msgstr "Lizenz ist ungültig. Frontend-Funktionen sind deaktiviert."
|
||||||
|
|
||||||
|
#: src/Admin/SettingsController.php:308 src/Admin/SettingsController.php:344
|
||||||
|
msgid "Verify License"
|
||||||
|
msgstr "Lizenz überprüfen"
|
||||||
|
|
||||||
|
#: src/Admin/SettingsController.php:322
|
||||||
|
msgid "Verifying..."
|
||||||
|
msgstr "Überprüfe..."
|
||||||
|
|
||||||
|
#: src/Admin/SettingsController.php:341
|
||||||
|
msgid "Request failed."
|
||||||
|
msgstr "Anfrage fehlgeschlagen."
|
||||||
|
|
||||||
|
#: src/Admin/SettingsController.php:454 src/Admin/AdminController.php:455
|
||||||
|
#: src/Admin/AdminController.php:475 src/Admin/AdminController.php:493
|
||||||
|
#: src/Admin/AdminController.php:511 src/Admin/AdminController.php:531
|
||||||
|
#: src/Admin/AdminController.php:549 src/Admin/AdminController.php:616
|
||||||
|
#: src/Admin/AdminController.php:806 src/Frontend/AccountController.php:326
|
||||||
|
msgid "Security check failed."
|
||||||
|
msgstr "Sicherheitsüberprüfung fehlgeschlagen."
|
||||||
|
|
||||||
|
#: src/Admin/SettingsController.php:458
|
||||||
|
msgid "Insufficient permissions."
|
||||||
|
msgstr "Unzureichende Berechtigungen."
|
||||||
|
|
||||||
|
#: src/Admin/SettingsController.php:467
|
||||||
|
msgid "License verified successfully!"
|
||||||
|
msgstr "Lizenz erfolgreich überprüft!"
|
||||||
|
|
||||||
|
#: src/Admin/SettingsController.php:469
|
||||||
|
msgid "License validation failed."
|
||||||
|
msgstr "Lizenzvalidierung fehlgeschlagen."
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:93
|
#: src/Admin/AdminController.php:93
|
||||||
msgid "Overview"
|
msgid "Overview"
|
||||||
msgstr "Übersicht"
|
msgstr "Übersicht"
|
||||||
@@ -333,14 +506,6 @@ msgstr "Lizenz konnte nicht widerrufen werden."
|
|||||||
msgid "License key and domain are required."
|
msgid "License key and domain are required."
|
||||||
msgstr "Lizenzschlüssel und Domain sind erforderlich."
|
msgstr "Lizenzschlüssel und Domain sind erforderlich."
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:455 src/Admin/AdminController.php:475
|
|
||||||
#: src/Admin/AdminController.php:493 src/Admin/AdminController.php:511
|
|
||||||
#: src/Admin/AdminController.php:531 src/Admin/AdminController.php:549
|
|
||||||
#: src/Admin/AdminController.php:616 src/Admin/AdminController.php:806
|
|
||||||
#: src/Admin/SettingsController.php:454 src/Frontend/AccountController.php:326
|
|
||||||
msgid "Security check failed."
|
|
||||||
msgstr "Sicherheitsüberprüfung fehlgeschlagen."
|
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:576
|
#: src/Admin/AdminController.php:576
|
||||||
msgid "You do not have permission to export licenses."
|
msgid "You do not have permission to export licenses."
|
||||||
msgstr "Sie haben keine Berechtigung, Lizenzen zu exportieren."
|
msgstr "Sie haben keine Berechtigung, Lizenzen zu exportieren."
|
||||||
@@ -815,171 +980,6 @@ msgstr "Lizenz"
|
|||||||
msgid "No domain specified"
|
msgid "No domain specified"
|
||||||
msgstr "Keine Domain angegeben"
|
msgstr "Keine Domain angegeben"
|
||||||
|
|
||||||
#: src/Admin/SettingsController.php:54
|
|
||||||
msgid "Licensed Products"
|
|
||||||
msgstr "Lizensierte Produkte"
|
|
||||||
|
|
||||||
#: src/Admin/SettingsController.php:64 src/Admin/SettingsController.php:128
|
|
||||||
msgid "Plugin License"
|
|
||||||
msgstr "Plugin-Lizenz"
|
|
||||||
|
|
||||||
#: src/Admin/SettingsController.php:65
|
|
||||||
msgid "Default Settings"
|
|
||||||
msgstr "Standardeinstellungen"
|
|
||||||
|
|
||||||
#: src/Admin/SettingsController.php:66
|
|
||||||
msgid "Notifications"
|
|
||||||
msgstr "Benachrichtigungen"
|
|
||||||
|
|
||||||
#: src/Admin/SettingsController.php:130
|
|
||||||
msgid ""
|
|
||||||
"Configure the license for this plugin. A valid license is required for "
|
|
||||||
"frontend features to work."
|
|
||||||
msgstr ""
|
|
||||||
"Konfigurieren Sie die Lizenz für dieses Plugin. Eine gültige Lizenz ist "
|
|
||||||
"erforderlich, damit die Frontend-Funktionen funktionieren."
|
|
||||||
|
|
||||||
#: src/Admin/SettingsController.php:134
|
|
||||||
msgid "License Server URL"
|
|
||||||
msgstr "Lizenzserver-URL"
|
|
||||||
|
|
||||||
#: src/Admin/SettingsController.php:136
|
|
||||||
msgid "The URL of the license server (e.g., https://shop.example.com)."
|
|
||||||
msgstr "Die URL des Lizenzservers (z.B. https://shop.example.com)."
|
|
||||||
|
|
||||||
#: src/Admin/SettingsController.php:144
|
|
||||||
msgid "Your license key in XXXX-XXXX-XXXX-XXXX format."
|
|
||||||
msgstr "Ihr Lizenzschlüssel im Format XXXX-XXXX-XXXX-XXXX."
|
|
||||||
|
|
||||||
#: src/Admin/SettingsController.php:150
|
|
||||||
msgid "Server Secret (Optional)"
|
|
||||||
msgstr "Server-Secret (Optional)"
|
|
||||||
|
|
||||||
#: src/Admin/SettingsController.php:152
|
|
||||||
msgid ""
|
|
||||||
"If the license server uses signed responses, enter the shared secret here "
|
|
||||||
"for enhanced security."
|
|
||||||
msgstr ""
|
|
||||||
"Falls der Lizenzserver signierte Antworten verwendet, geben Sie hier das "
|
|
||||||
"gemeinsame Secret für erhöhte Sicherheit ein."
|
|
||||||
|
|
||||||
#: src/Admin/SettingsController.php:170
|
|
||||||
msgid "Default License Settings"
|
|
||||||
msgstr "Standard Lizenz-Einstellungen"
|
|
||||||
|
|
||||||
#: src/Admin/SettingsController.php:172
|
|
||||||
msgid ""
|
|
||||||
"These settings serve as defaults for new licensed products. Individual "
|
|
||||||
"product settings override these defaults."
|
|
||||||
msgstr ""
|
|
||||||
"Diese Einstellungen dienen als Standard für neue lizensierte Produkte. "
|
|
||||||
"Individuelle Produkteinstellungen überschreiben diese Standards."
|
|
||||||
|
|
||||||
#: src/Admin/SettingsController.php:176
|
|
||||||
msgid "Default Max Activations"
|
|
||||||
msgstr "Standard Max. Aktivierungen"
|
|
||||||
|
|
||||||
#: src/Admin/SettingsController.php:178
|
|
||||||
msgid "Default maximum number of domain activations per license."
|
|
||||||
msgstr "Standard maximale Anzahl der Domain-Aktivierungen pro Lizenz."
|
|
||||||
|
|
||||||
#: src/Admin/SettingsController.php:187
|
|
||||||
msgid "Default License Validity (Days)"
|
|
||||||
msgstr "Standard Lizenz-Gültigkeit (Tage)"
|
|
||||||
|
|
||||||
#: src/Admin/SettingsController.php:189
|
|
||||||
msgid ""
|
|
||||||
"Default number of days a license is valid. Leave empty or set to 0 for "
|
|
||||||
"lifetime licenses."
|
|
||||||
msgstr ""
|
|
||||||
"Standard Anzahl Tage, die eine Lizenz gültig ist. Leer lassen oder auf 0 "
|
|
||||||
"setzen für lebenslange Lizenzen."
|
|
||||||
|
|
||||||
#: src/Admin/SettingsController.php:199
|
|
||||||
msgid "Default Bind to Major Version"
|
|
||||||
msgstr "Standard An Hauptversion binden"
|
|
||||||
|
|
||||||
#: src/Admin/SettingsController.php:201
|
|
||||||
msgid ""
|
|
||||||
"If enabled, licenses are bound to the major version at purchase time by "
|
|
||||||
"default."
|
|
||||||
msgstr ""
|
|
||||||
"Falls aktiviert, werden Lizenzen standardmässig an die Hauptversion zum "
|
|
||||||
"Kaufzeitpunkt gebunden."
|
|
||||||
|
|
||||||
#: src/Admin/SettingsController.php:219
|
|
||||||
msgid "Expiration Warning Schedule"
|
|
||||||
msgstr "Ablaufwarnung Zeitplan"
|
|
||||||
|
|
||||||
#: src/Admin/SettingsController.php:223
|
|
||||||
#, php-format
|
|
||||||
msgid ""
|
|
||||||
"Configure when expiration warning emails are sent. To customize the email "
|
|
||||||
"template, enable/disable, or change the subject, go to %s."
|
|
||||||
msgstr ""
|
|
||||||
"Konfigurieren Sie, wann Ablaufwarnungs-E-Mails gesendet werden. Um die E-"
|
|
||||||
"Mail-Vorlage anzupassen, zu aktivieren/deaktivieren oder den Betreff zu "
|
|
||||||
"ändern, gehen Sie zu %s."
|
|
||||||
|
|
||||||
#: src/Admin/SettingsController.php:225
|
|
||||||
msgid "WooCommerce > Settings > Emails > License Expiration Warning"
|
|
||||||
msgstr "WooCommerce > Einstellungen > E-Mails > Lizenzablauf-Warnung"
|
|
||||||
|
|
||||||
#: src/Admin/SettingsController.php:230
|
|
||||||
msgid "First Warning (Days Before)"
|
|
||||||
msgstr "Erste Warnung (Tage vorher)"
|
|
||||||
|
|
||||||
#: src/Admin/SettingsController.php:232
|
|
||||||
msgid "Days before expiration to send the first warning email."
|
|
||||||
msgstr "Tage vor Ablauf, um die erste Warn-E-Mail zu senden."
|
|
||||||
|
|
||||||
#: src/Admin/SettingsController.php:241
|
|
||||||
msgid "Second Warning (Days Before)"
|
|
||||||
msgstr "Zweite Warnung (Tage vorher)"
|
|
||||||
|
|
||||||
#: src/Admin/SettingsController.php:243
|
|
||||||
msgid ""
|
|
||||||
"Days before expiration to send the second warning email. Set to 0 to disable."
|
|
||||||
msgstr ""
|
|
||||||
"Tage vor Ablauf, um die zweite Warn-E-Mail zu senden. Setzen Sie auf 0, um "
|
|
||||||
"sie zu deaktivieren."
|
|
||||||
|
|
||||||
#: src/Admin/SettingsController.php:283
|
|
||||||
msgid "Running on localhost - license validation bypassed."
|
|
||||||
msgstr "Läuft auf localhost - Lizenzvalidierung übersprungen."
|
|
||||||
|
|
||||||
#: src/Admin/SettingsController.php:291
|
|
||||||
msgid "License is valid and active."
|
|
||||||
msgstr "Lizenz ist gültig und aktiv."
|
|
||||||
|
|
||||||
#: src/Admin/SettingsController.php:297
|
|
||||||
msgid "License is not valid. Frontend features are disabled."
|
|
||||||
msgstr "Lizenz ist ungültig. Frontend-Funktionen sind deaktiviert."
|
|
||||||
|
|
||||||
#: src/Admin/SettingsController.php:308 src/Admin/SettingsController.php:344
|
|
||||||
msgid "Verify License"
|
|
||||||
msgstr "Lizenz überprüfen"
|
|
||||||
|
|
||||||
#: src/Admin/SettingsController.php:322
|
|
||||||
msgid "Verifying..."
|
|
||||||
msgstr "Überprüfe..."
|
|
||||||
|
|
||||||
#: src/Admin/SettingsController.php:341
|
|
||||||
msgid "Request failed."
|
|
||||||
msgstr "Anfrage fehlgeschlagen."
|
|
||||||
|
|
||||||
#: src/Admin/SettingsController.php:458
|
|
||||||
msgid "Insufficient permissions."
|
|
||||||
msgstr "Unzureichende Berechtigungen."
|
|
||||||
|
|
||||||
#: src/Admin/SettingsController.php:467
|
|
||||||
msgid "License verified successfully!"
|
|
||||||
msgstr "Lizenz erfolgreich überprüft!"
|
|
||||||
|
|
||||||
#: src/Admin/SettingsController.php:469
|
|
||||||
msgid "License validation failed."
|
|
||||||
msgstr "Lizenzvalidierung fehlgeschlagen."
|
|
||||||
|
|
||||||
#: src/Admin/VersionAdminController.php:58
|
#: src/Admin/VersionAdminController.php:58
|
||||||
msgid "Product Versions"
|
msgid "Product Versions"
|
||||||
msgstr "Produktversionen"
|
msgstr "Produktversionen"
|
||||||
@@ -1252,51 +1252,51 @@ msgstr "Lizenzeinstellungen nicht konfiguriert."
|
|||||||
msgid "Could not connect to license server."
|
msgid "Could not connect to license server."
|
||||||
msgstr "Verbindung zum Lizenzserver konnte nicht hergestellt werden."
|
msgstr "Verbindung zum Lizenzserver konnte nicht hergestellt werden."
|
||||||
|
|
||||||
#: src/Product/LicensedProductType.php:55
|
#: src/Product/LicensedProductType.php:61
|
||||||
msgid "Licensed Product"
|
msgid "Licensed Product"
|
||||||
msgstr "Lizensiertes Produkt"
|
msgstr "Lizensiertes Produkt"
|
||||||
|
|
||||||
#: src/Product/LicensedProductType.php:76
|
#: src/Product/LicensedProductType.php:82
|
||||||
msgid "License Settings"
|
msgid "License Settings"
|
||||||
msgstr "Lizenz-Einstellungen"
|
msgstr "Lizenz-Einstellungen"
|
||||||
|
|
||||||
#: src/Product/LicensedProductType.php:103
|
#: src/Product/LicensedProductType.php:109
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "%d days"
|
msgid "%d days"
|
||||||
msgstr "%d Tage"
|
msgstr "%d Tage"
|
||||||
|
|
||||||
#: src/Product/LicensedProductType.php:113
|
#: src/Product/LicensedProductType.php:119
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "Leave fields empty to use default settings from %s."
|
msgid "Leave fields empty to use default settings from %s."
|
||||||
msgstr "Felder leer lassen, um Standardeinstellungen von %s zu verwenden."
|
msgstr "Felder leer lassen, um Standardeinstellungen von %s zu verwenden."
|
||||||
|
|
||||||
#: src/Product/LicensedProductType.php:115
|
#: src/Product/LicensedProductType.php:121
|
||||||
msgid "WooCommerce > Settings > Licensed Products"
|
msgid "WooCommerce > Settings > Licensed Products"
|
||||||
msgstr "WooCommerce > Einstellungen > Lizensierte Produkte"
|
msgstr "WooCommerce > Einstellungen > Lizensierte Produkte"
|
||||||
|
|
||||||
#: src/Product/LicensedProductType.php:122
|
#: src/Product/LicensedProductType.php:128
|
||||||
msgid "Max Activations"
|
msgid "Max Activations"
|
||||||
msgstr "Max. Aktivierungen"
|
msgstr "Max. Aktivierungen"
|
||||||
|
|
||||||
#: src/Product/LicensedProductType.php:125
|
#: src/Product/LicensedProductType.php:131
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "Maximum number of domain activations per license. Default: %d"
|
msgid "Maximum number of domain activations per license. Default: %d"
|
||||||
msgstr "Maximale Anzahl der Domain-Aktivierungen pro Lizenz. Standard: %d"
|
msgstr "Maximale Anzahl der Domain-Aktivierungen pro Lizenz. Standard: %d"
|
||||||
|
|
||||||
#: src/Product/LicensedProductType.php:140
|
#: src/Product/LicensedProductType.php:146
|
||||||
msgid "License Validity (Days)"
|
msgid "License Validity (Days)"
|
||||||
msgstr "Lizenz-Gültigkeit (Tage)"
|
msgstr "Lizenz-Gültigkeit (Tage)"
|
||||||
|
|
||||||
#: src/Product/LicensedProductType.php:143
|
#: src/Product/LicensedProductType.php:149
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "Number of days the license is valid. Leave empty for default (%s)."
|
msgid "Number of days the license is valid. Leave empty for default (%s)."
|
||||||
msgstr "Anzahl Tage, die die Lizenz gültig ist. Leer lassen für Standard (%s)."
|
msgstr "Anzahl Tage, die die Lizenz gültig ist. Leer lassen für Standard (%s)."
|
||||||
|
|
||||||
#: src/Product/LicensedProductType.php:158
|
#: src/Product/LicensedProductType.php:164
|
||||||
msgid "Bind to Major Version"
|
msgid "Bind to Major Version"
|
||||||
msgstr "An Hauptversion binden"
|
msgstr "An Hauptversion binden"
|
||||||
|
|
||||||
#: src/Product/LicensedProductType.php:161
|
#: src/Product/LicensedProductType.php:167
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"If enabled, licenses are bound to the major version at purchase time. "
|
"If enabled, licenses are bound to the major version at purchase time. "
|
||||||
@@ -1305,14 +1305,18 @@ msgstr ""
|
|||||||
"Falls aktiviert, werden Lizenzen an die Hauptversion zum Kaufzeitpunkt "
|
"Falls aktiviert, werden Lizenzen an die Hauptversion zum Kaufzeitpunkt "
|
||||||
"gebunden. Standard: %s"
|
"gebunden. Standard: %s"
|
||||||
|
|
||||||
#: src/Product/LicensedProductType.php:162
|
#: src/Product/LicensedProductType.php:168
|
||||||
msgid "Yes"
|
msgid "Yes"
|
||||||
msgstr "Ja"
|
msgstr "Ja"
|
||||||
|
|
||||||
#: src/Product/LicensedProductType.php:162
|
#: src/Product/LicensedProductType.php:168
|
||||||
msgid "No"
|
msgid "No"
|
||||||
msgstr "Nein"
|
msgstr "Nein"
|
||||||
|
|
||||||
|
#: src/Product/LicensedProductType.php:288
|
||||||
|
msgid "Version:"
|
||||||
|
msgstr "Version:"
|
||||||
|
|
||||||
#: src/Product/VersionManager.php:166
|
#: src/Product/VersionManager.php:166
|
||||||
msgid "Attachment file not found."
|
msgid "Attachment file not found."
|
||||||
msgstr "Anhangs-Datei nicht gefunden."
|
msgstr "Anhangs-Datei nicht gefunden."
|
||||||
|
|||||||
@@ -1,14 +1,14 @@
|
|||||||
# SOME DESCRIPTIVE TITLE.
|
# SOME DESCRIPTIVE TITLE.
|
||||||
# Copyright (C) YEAR Marco Graetsch
|
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
||||||
# This file is distributed under the same license as the WooCommerce Licensed Product package.
|
# This file is distributed under the same license as the WC Licensed Product package.
|
||||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||||
#
|
#
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: WooCommerce Licensed Product 0.3.3\n"
|
"Project-Id-Version: WC Licensed Product 0.3.4\n"
|
||||||
"Report-Msgid-Bugs-To: magdev3.0@gmail.com\n"
|
"Report-Msgid-Bugs-To: magdev3.0@gmail.com\n"
|
||||||
"POT-Creation-Date: 2026-01-23 11:41+0100\n"
|
"POT-Creation-Date: 2026-01-23 11:54+0100\n"
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
@@ -75,9 +75,9 @@ msgstr ""
|
|||||||
msgid "Licenses will be generated when the order is marked as paid/completed."
|
msgid "Licenses will be generated when the order is marked as paid/completed."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Admin/OrderLicenseController.php:144 src/Admin/AdminController.php:1280
|
#: src/Admin/OrderLicenseController.php:144
|
||||||
|
#: src/Admin/SettingsController.php:142 src/Admin/AdminController.php:1280
|
||||||
#: src/Admin/AdminController.php:1431 src/Admin/AdminController.php:1480
|
#: src/Admin/AdminController.php:1431 src/Admin/AdminController.php:1480
|
||||||
#: src/Admin/SettingsController.php:142
|
|
||||||
#: src/Email/LicenseEmailController.php:230
|
#: src/Email/LicenseEmailController.php:230
|
||||||
msgid "License Key"
|
msgid "License Key"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -125,11 +125,11 @@ msgstr ""
|
|||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Admin/OrderLicenseController.php:201 src/Admin/AdminController.php:151
|
#: src/Admin/OrderLicenseController.php:201
|
||||||
|
#: src/Admin/SettingsController.php:192 src/Admin/AdminController.php:151
|
||||||
#: src/Admin/AdminController.php:266 src/Admin/AdminController.php:1362
|
#: src/Admin/AdminController.php:266 src/Admin/AdminController.php:1362
|
||||||
#: src/Admin/AdminController.php:1602 src/Admin/SettingsController.php:192
|
#: src/Admin/AdminController.php:1602 src/Product/LicensedProductType.php:110
|
||||||
#: src/Product/LicensedProductType.php:104
|
#: src/Product/LicensedProductType.php:158
|
||||||
#: src/Product/LicensedProductType.php:152
|
|
||||||
msgid "Lifetime"
|
msgid "Lifetime"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -207,6 +207,164 @@ msgstr ""
|
|||||||
msgid "Failed to update license domain."
|
msgid "Failed to update license domain."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/Admin/SettingsController.php:54
|
||||||
|
msgid "Licensed Products"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/Admin/SettingsController.php:64 src/Admin/SettingsController.php:128
|
||||||
|
msgid "Plugin License"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/Admin/SettingsController.php:65
|
||||||
|
msgid "Default Settings"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/Admin/SettingsController.php:66
|
||||||
|
msgid "Notifications"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/Admin/SettingsController.php:130
|
||||||
|
msgid ""
|
||||||
|
"Configure the license for this plugin. A valid license is required for "
|
||||||
|
"frontend features to work."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/Admin/SettingsController.php:134
|
||||||
|
msgid "License Server URL"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/Admin/SettingsController.php:136
|
||||||
|
msgid "The URL of the license server (e.g., https://shop.example.com)."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/Admin/SettingsController.php:144
|
||||||
|
msgid "Your license key in XXXX-XXXX-XXXX-XXXX format."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/Admin/SettingsController.php:150
|
||||||
|
msgid "Server Secret (Optional)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/Admin/SettingsController.php:152
|
||||||
|
msgid ""
|
||||||
|
"If the license server uses signed responses, enter the shared secret here "
|
||||||
|
"for enhanced security."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/Admin/SettingsController.php:170
|
||||||
|
msgid "Default License Settings"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/Admin/SettingsController.php:172
|
||||||
|
msgid ""
|
||||||
|
"These settings serve as defaults for new licensed products. Individual "
|
||||||
|
"product settings override these defaults."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/Admin/SettingsController.php:176
|
||||||
|
msgid "Default Max Activations"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/Admin/SettingsController.php:178
|
||||||
|
msgid "Default maximum number of domain activations per license."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/Admin/SettingsController.php:187
|
||||||
|
msgid "Default License Validity (Days)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/Admin/SettingsController.php:189
|
||||||
|
msgid ""
|
||||||
|
"Default number of days a license is valid. Leave empty or set to 0 for "
|
||||||
|
"lifetime licenses."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/Admin/SettingsController.php:199
|
||||||
|
msgid "Default Bind to Major Version"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/Admin/SettingsController.php:201
|
||||||
|
msgid ""
|
||||||
|
"If enabled, licenses are bound to the major version at purchase time by "
|
||||||
|
"default."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/Admin/SettingsController.php:219
|
||||||
|
msgid "Expiration Warning Schedule"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/Admin/SettingsController.php:223
|
||||||
|
#, php-format
|
||||||
|
msgid ""
|
||||||
|
"Configure when expiration warning emails are sent. To customize the email "
|
||||||
|
"template, enable/disable, or change the subject, go to %s."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/Admin/SettingsController.php:225
|
||||||
|
msgid "WooCommerce > Settings > Emails > License Expiration Warning"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/Admin/SettingsController.php:230
|
||||||
|
msgid "First Warning (Days Before)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/Admin/SettingsController.php:232
|
||||||
|
msgid "Days before expiration to send the first warning email."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/Admin/SettingsController.php:241
|
||||||
|
msgid "Second Warning (Days Before)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/Admin/SettingsController.php:243
|
||||||
|
msgid ""
|
||||||
|
"Days before expiration to send the second warning email. Set to 0 to disable."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/Admin/SettingsController.php:283
|
||||||
|
msgid "Running on localhost - license validation bypassed."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/Admin/SettingsController.php:291
|
||||||
|
msgid "License is valid and active."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/Admin/SettingsController.php:297
|
||||||
|
msgid "License is not valid. Frontend features are disabled."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/Admin/SettingsController.php:308 src/Admin/SettingsController.php:344
|
||||||
|
msgid "Verify License"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/Admin/SettingsController.php:322
|
||||||
|
msgid "Verifying..."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/Admin/SettingsController.php:341
|
||||||
|
msgid "Request failed."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/Admin/SettingsController.php:454 src/Admin/AdminController.php:455
|
||||||
|
#: src/Admin/AdminController.php:475 src/Admin/AdminController.php:493
|
||||||
|
#: src/Admin/AdminController.php:511 src/Admin/AdminController.php:531
|
||||||
|
#: src/Admin/AdminController.php:549 src/Admin/AdminController.php:616
|
||||||
|
#: src/Admin/AdminController.php:806 src/Frontend/AccountController.php:326
|
||||||
|
msgid "Security check failed."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/Admin/SettingsController.php:458
|
||||||
|
msgid "Insufficient permissions."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/Admin/SettingsController.php:467
|
||||||
|
msgid "License verified successfully!"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/Admin/SettingsController.php:469
|
||||||
|
msgid "License validation failed."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:93
|
#: src/Admin/AdminController.php:93
|
||||||
msgid "Overview"
|
msgid "Overview"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -325,14 +483,6 @@ msgstr ""
|
|||||||
msgid "License key and domain are required."
|
msgid "License key and domain are required."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:455 src/Admin/AdminController.php:475
|
|
||||||
#: src/Admin/AdminController.php:493 src/Admin/AdminController.php:511
|
|
||||||
#: src/Admin/AdminController.php:531 src/Admin/AdminController.php:549
|
|
||||||
#: src/Admin/AdminController.php:616 src/Admin/AdminController.php:806
|
|
||||||
#: src/Admin/SettingsController.php:454 src/Frontend/AccountController.php:326
|
|
||||||
msgid "Security check failed."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:576
|
#: src/Admin/AdminController.php:576
|
||||||
msgid "You do not have permission to export licenses."
|
msgid "You do not have permission to export licenses."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -800,156 +950,6 @@ msgstr ""
|
|||||||
msgid "No domain specified"
|
msgid "No domain specified"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Admin/SettingsController.php:54
|
|
||||||
msgid "Licensed Products"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/Admin/SettingsController.php:64 src/Admin/SettingsController.php:128
|
|
||||||
msgid "Plugin License"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/Admin/SettingsController.php:65
|
|
||||||
msgid "Default Settings"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/Admin/SettingsController.php:66
|
|
||||||
msgid "Notifications"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/Admin/SettingsController.php:130
|
|
||||||
msgid ""
|
|
||||||
"Configure the license for this plugin. A valid license is required for "
|
|
||||||
"frontend features to work."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/Admin/SettingsController.php:134
|
|
||||||
msgid "License Server URL"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/Admin/SettingsController.php:136
|
|
||||||
msgid "The URL of the license server (e.g., https://shop.example.com)."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/Admin/SettingsController.php:144
|
|
||||||
msgid "Your license key in XXXX-XXXX-XXXX-XXXX format."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/Admin/SettingsController.php:150
|
|
||||||
msgid "Server Secret (Optional)"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/Admin/SettingsController.php:152
|
|
||||||
msgid ""
|
|
||||||
"If the license server uses signed responses, enter the shared secret here "
|
|
||||||
"for enhanced security."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/Admin/SettingsController.php:170
|
|
||||||
msgid "Default License Settings"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/Admin/SettingsController.php:172
|
|
||||||
msgid ""
|
|
||||||
"These settings serve as defaults for new licensed products. Individual "
|
|
||||||
"product settings override these defaults."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/Admin/SettingsController.php:176
|
|
||||||
msgid "Default Max Activations"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/Admin/SettingsController.php:178
|
|
||||||
msgid "Default maximum number of domain activations per license."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/Admin/SettingsController.php:187
|
|
||||||
msgid "Default License Validity (Days)"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/Admin/SettingsController.php:189
|
|
||||||
msgid ""
|
|
||||||
"Default number of days a license is valid. Leave empty or set to 0 for "
|
|
||||||
"lifetime licenses."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/Admin/SettingsController.php:199
|
|
||||||
msgid "Default Bind to Major Version"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/Admin/SettingsController.php:201
|
|
||||||
msgid ""
|
|
||||||
"If enabled, licenses are bound to the major version at purchase time by "
|
|
||||||
"default."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/Admin/SettingsController.php:219
|
|
||||||
msgid "Expiration Warning Schedule"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/Admin/SettingsController.php:223
|
|
||||||
#, php-format
|
|
||||||
msgid ""
|
|
||||||
"Configure when expiration warning emails are sent. To customize the email "
|
|
||||||
"template, enable/disable, or change the subject, go to %s."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/Admin/SettingsController.php:225
|
|
||||||
msgid "WooCommerce > Settings > Emails > License Expiration Warning"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/Admin/SettingsController.php:230
|
|
||||||
msgid "First Warning (Days Before)"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/Admin/SettingsController.php:232
|
|
||||||
msgid "Days before expiration to send the first warning email."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/Admin/SettingsController.php:241
|
|
||||||
msgid "Second Warning (Days Before)"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/Admin/SettingsController.php:243
|
|
||||||
msgid ""
|
|
||||||
"Days before expiration to send the second warning email. Set to 0 to disable."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/Admin/SettingsController.php:283
|
|
||||||
msgid "Running on localhost - license validation bypassed."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/Admin/SettingsController.php:291
|
|
||||||
msgid "License is valid and active."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/Admin/SettingsController.php:297
|
|
||||||
msgid "License is not valid. Frontend features are disabled."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/Admin/SettingsController.php:308 src/Admin/SettingsController.php:344
|
|
||||||
msgid "Verify License"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/Admin/SettingsController.php:322
|
|
||||||
msgid "Verifying..."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/Admin/SettingsController.php:341
|
|
||||||
msgid "Request failed."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/Admin/SettingsController.php:458
|
|
||||||
msgid "Insufficient permissions."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/Admin/SettingsController.php:467
|
|
||||||
msgid "License verified successfully!"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/Admin/SettingsController.php:469
|
|
||||||
msgid "License validation failed."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/Admin/VersionAdminController.php:58
|
#: src/Admin/VersionAdminController.php:58
|
||||||
msgid "Product Versions"
|
msgid "Product Versions"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -1212,65 +1212,69 @@ msgstr ""
|
|||||||
msgid "Could not connect to license server."
|
msgid "Could not connect to license server."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Product/LicensedProductType.php:55
|
#: src/Product/LicensedProductType.php:61
|
||||||
msgid "Licensed Product"
|
msgid "Licensed Product"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Product/LicensedProductType.php:76
|
#: src/Product/LicensedProductType.php:82
|
||||||
msgid "License Settings"
|
msgid "License Settings"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Product/LicensedProductType.php:103
|
#: src/Product/LicensedProductType.php:109
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "%d days"
|
msgid "%d days"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Product/LicensedProductType.php:113
|
#: src/Product/LicensedProductType.php:119
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "Leave fields empty to use default settings from %s."
|
msgid "Leave fields empty to use default settings from %s."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Product/LicensedProductType.php:115
|
#: src/Product/LicensedProductType.php:121
|
||||||
msgid "WooCommerce > Settings > Licensed Products"
|
msgid "WooCommerce > Settings > Licensed Products"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Product/LicensedProductType.php:122
|
#: src/Product/LicensedProductType.php:128
|
||||||
msgid "Max Activations"
|
msgid "Max Activations"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Product/LicensedProductType.php:125
|
#: src/Product/LicensedProductType.php:131
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "Maximum number of domain activations per license. Default: %d"
|
msgid "Maximum number of domain activations per license. Default: %d"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Product/LicensedProductType.php:140
|
#: src/Product/LicensedProductType.php:146
|
||||||
msgid "License Validity (Days)"
|
msgid "License Validity (Days)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Product/LicensedProductType.php:143
|
#: src/Product/LicensedProductType.php:149
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "Number of days the license is valid. Leave empty for default (%s)."
|
msgid "Number of days the license is valid. Leave empty for default (%s)."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Product/LicensedProductType.php:158
|
#: src/Product/LicensedProductType.php:164
|
||||||
msgid "Bind to Major Version"
|
msgid "Bind to Major Version"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Product/LicensedProductType.php:161
|
#: src/Product/LicensedProductType.php:167
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"If enabled, licenses are bound to the major version at purchase time. "
|
"If enabled, licenses are bound to the major version at purchase time. "
|
||||||
"Default: %s"
|
"Default: %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Product/LicensedProductType.php:162
|
#: src/Product/LicensedProductType.php:168
|
||||||
msgid "Yes"
|
msgid "Yes"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Product/LicensedProductType.php:162
|
#: src/Product/LicensedProductType.php:168
|
||||||
msgid "No"
|
msgid "No"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/Product/LicensedProductType.php:288
|
||||||
|
msgid "Version:"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/Product/VersionManager.php:166
|
#: src/Product/VersionManager.php:166
|
||||||
msgid "Attachment file not found."
|
msgid "Attachment file not found."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|||||||
1
releases/wc-licensed-product-0.3.3.sha256
Normal file
1
releases/wc-licensed-product-0.3.3.sha256
Normal file
@@ -0,0 +1 @@
|
|||||||
|
a06d29eabc2da08613ae13874ed152b8ea9363b8284a2e9bdda414e32777558c wc-licensed-product-0.3.3.zip
|
||||||
BIN
releases/wc-licensed-product-0.3.3.zip
Normal file
BIN
releases/wc-licensed-product-0.3.3.zip
Normal file
Binary file not shown.
@@ -45,6 +45,12 @@ final class LicensedProductType
|
|||||||
|
|
||||||
// Make product virtual by default
|
// Make product virtual by default
|
||||||
add_filter('woocommerce_product_is_virtual', [$this, 'isVirtual'], 10, 2);
|
add_filter('woocommerce_product_is_virtual', [$this, 'isVirtual'], 10, 2);
|
||||||
|
|
||||||
|
// Display current version under product title on single product page
|
||||||
|
add_action('woocommerce_single_product_summary', [$this, 'displayCurrentVersion'], 6);
|
||||||
|
|
||||||
|
// Enqueue frontend CSS for licensed products on single product pages
|
||||||
|
add_action('wp_enqueue_scripts', [$this, 'enqueueFrontendStyles']);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -235,4 +241,52 @@ final class LicensedProductType
|
|||||||
}
|
}
|
||||||
return $isVirtual;
|
return $isVirtual;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Enqueue frontend styles for licensed products on single product pages
|
||||||
|
*/
|
||||||
|
public function enqueueFrontendStyles(): void
|
||||||
|
{
|
||||||
|
if (!is_product()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
global $product;
|
||||||
|
|
||||||
|
if (!$product || !$product->is_type('licensed')) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
wp_enqueue_style(
|
||||||
|
'wc-licensed-product-frontend',
|
||||||
|
WC_LICENSED_PRODUCT_PLUGIN_URL . 'assets/css/frontend.css',
|
||||||
|
[],
|
||||||
|
WC_LICENSED_PRODUCT_VERSION
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Display current version under product title on single product page
|
||||||
|
*/
|
||||||
|
public function displayCurrentVersion(): void
|
||||||
|
{
|
||||||
|
global $product;
|
||||||
|
|
||||||
|
if (!$product || !$product->is_type('licensed')) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** @var LicensedProduct $product */
|
||||||
|
$version = $product->get_current_version();
|
||||||
|
|
||||||
|
if (empty($version)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
printf(
|
||||||
|
'<p class="wclp-product-version"><span class="version-label">%s</span> <span class="version-number">%s</span></p>',
|
||||||
|
esc_html__('Version:', 'wc-licensed-product'),
|
||||||
|
esc_html($version)
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
* Plugin Name: WooCommerce Licensed Product
|
* Plugin Name: WooCommerce Licensed Product
|
||||||
* Plugin URI: https://src.bundespruefstelle.ch/magdev/wc-licensed-product
|
* Plugin URI: https://src.bundespruefstelle.ch/magdev/wc-licensed-product
|
||||||
* Description: WooCommerce plugin to sell software products using license keys with domain-based validation.
|
* Description: WooCommerce plugin to sell software products using license keys with domain-based validation.
|
||||||
* Version: 0.3.3
|
* Version: 0.3.4
|
||||||
* Author: Marco Graetsch
|
* Author: Marco Graetsch
|
||||||
* Author URI: https://src.bundespruefstelle.ch/magdev
|
* Author URI: https://src.bundespruefstelle.ch/magdev
|
||||||
* License: GPL-2.0-or-later
|
* License: GPL-2.0-or-later
|
||||||
@@ -28,7 +28,7 @@ if (!defined('ABSPATH')) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Plugin constants
|
// Plugin constants
|
||||||
define('WC_LICENSED_PRODUCT_VERSION', '0.3.3');
|
define('WC_LICENSED_PRODUCT_VERSION', '0.3.4');
|
||||||
define('WC_LICENSED_PRODUCT_PLUGIN_FILE', __FILE__);
|
define('WC_LICENSED_PRODUCT_PLUGIN_FILE', __FILE__);
|
||||||
define('WC_LICENSED_PRODUCT_PLUGIN_DIR', plugin_dir_path(__FILE__));
|
define('WC_LICENSED_PRODUCT_PLUGIN_DIR', plugin_dir_path(__FILE__));
|
||||||
define('WC_LICENSED_PRODUCT_PLUGIN_URL', plugin_dir_url(__FILE__));
|
define('WC_LICENSED_PRODUCT_PLUGIN_URL', plugin_dir_url(__FILE__));
|
||||||
|
|||||||
Reference in New Issue
Block a user