Release v0.2.2 - Display file checksums in UI

Features:
- Add SHA256 column to admin product versions table
- Display file hash in customer account downloads section
- Style checksum file upload field consistently with package upload

Changes:
- Admin versions table shows truncated hash with full hash on hover
- Customer downloads show hash with shield icon indicator
- Updated German translations

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
2026-01-22 17:35:25 +01:00
parent d2bf9aa330
commit 30efe1aa99
10 changed files with 244 additions and 166 deletions

View File

@@ -7,6 +7,25 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased] ## [Unreleased]
## [0.2.2] - 2026-01-22
### Added
- SHA256 checksum column in admin product versions table
- File hash display in customer account downloads section
- Visual indicators for file integrity verification
### Changed
- Checksum file upload field now styled consistently with package upload field
- Download list items now show truncated hash with full hash on hover
### Technical Details
- ProductVersion `getFileHash()` method now exposed in admin and frontend views
- Frontend CSS extended with `.download-hash` styles
- Admin CSS extended with `.file-hash` styles
## [0.2.1] - 2026-01-22 ## [0.2.1] - 2026-01-22
### Changed ### Changed
@@ -354,7 +373,8 @@ define('WC_LICENSE_SERVER_SECRET', 'your-secure-random-string-min-32-chars');
- WordPress REST API integration - WordPress REST API integration
- Custom WooCommerce product type extending WC_Product - Custom WooCommerce product type extending WC_Product
[Unreleased]: https://src.bundespruefstelle.ch/magdev/wc-licensed-product/compare/v0.2.1...HEAD [Unreleased]: https://src.bundespruefstelle.ch/magdev/wc-licensed-product/compare/v0.2.2...HEAD
[0.2.2]: https://src.bundespruefstelle.ch/magdev/wc-licensed-product/compare/v0.2.1...v0.2.2
[0.2.1]: https://src.bundespruefstelle.ch/magdev/wc-licensed-product/compare/v0.2.0...v0.2.1 [0.2.1]: https://src.bundespruefstelle.ch/magdev/wc-licensed-product/compare/v0.2.0...v0.2.1
[0.2.0]: https://src.bundespruefstelle.ch/magdev/wc-licensed-product/compare/v0.1.0...v0.2.0 [0.2.0]: https://src.bundespruefstelle.ch/magdev/wc-licensed-product/compare/v0.1.0...v0.2.0
[0.1.0]: https://src.bundespruefstelle.ch/magdev/wc-licensed-product/compare/v0.0.11...v0.1.0 [0.1.0]: https://src.bundespruefstelle.ch/magdev/wc-licensed-product/compare/v0.0.11...v0.1.0

View File

@@ -43,6 +43,13 @@
font-size: 0.9em; font-size: 0.9em;
} }
/* File Hash */
code.file-hash {
cursor: help;
font-size: 0.85em;
color: #666;
}
/* License Product Tab */ /* License Product Tab */
#woocommerce-product-data .show_if_licensed { #woocommerce-product-data .show_if_licensed {
display: block !important; display: block !important;

View File

@@ -247,6 +247,30 @@
margin-left: auto; margin-left: auto;
} }
.download-hash {
display: inline-flex;
align-items: center;
gap: 0.25em;
font-size: 0.8em;
color: #666;
}
.download-hash .dashicons {
font-size: 14px;
width: 14px;
height: 14px;
color: #28a745;
}
.download-hash code {
font-family: 'SF Mono', Monaco, Consolas, monospace;
background: #f5f5f5;
padding: 0.2em 0.4em;
border-radius: 3px;
font-size: 0.9em;
color: #666;
}
/* Domain Field */ /* Domain Field */
#licensed-product-domain-field { #licensed-product-domain-field {
margin-top: 2em; margin-top: 2em;

View File

@@ -5,7 +5,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: WC Licensed Product 0.2.1\n" "Project-Id-Version: WC Licensed Product 0.2.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-22 17:25+0100\n" "POT-Creation-Date: 2026-01-22 17:32+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"
@@ -81,7 +81,7 @@ msgstr "Bearbeiten"
#: src/Admin/AdminController.php:146 src/Admin/AdminController.php:1303 #: src/Admin/AdminController.php:146 src/Admin/AdminController.php:1303
#: src/Admin/AdminController.php:1323 src/Admin/AdminController.php:1344 #: src/Admin/AdminController.php:1323 src/Admin/AdminController.php:1344
#: src/Admin/OrderLicenseController.php:185 #: src/Admin/OrderLicenseController.php:185
#: src/Frontend/AccountController.php:270 #: src/Frontend/AccountController.php:271
msgid "Cancel" msgid "Cancel"
msgstr "Abbrechen" msgstr "Abbrechen"
@@ -99,25 +99,25 @@ msgstr "Speichern"
msgid "Lifetime" msgid "Lifetime"
msgstr "Lebenslang" msgstr "Lebenslang"
#: src/Admin/AdminController.php:149 src/Frontend/AccountController.php:308 #: src/Admin/AdminController.php:149 src/Frontend/AccountController.php:309
msgid "Copied!" msgid "Copied!"
msgstr "Kopiert!" msgstr "Kopiert!"
#: src/Admin/AdminController.php:150 src/Frontend/AccountController.php:309 #: src/Admin/AdminController.php:150 src/Frontend/AccountController.php:310
msgid "Copy failed" msgid "Copy failed"
msgstr "Kopieren fehlgeschlagen" msgstr "Kopieren fehlgeschlagen"
#: src/Admin/AdminController.php:153 src/Admin/AdminController.php:875 #: src/Admin/AdminController.php:153 src/Admin/AdminController.php:875
#: src/Admin/AdminController.php:1194 src/Admin/AdminController.php:1317 #: src/Admin/AdminController.php:1194 src/Admin/AdminController.php:1317
#: src/Admin/VersionAdminController.php:172 #: src/Admin/VersionAdminController.php:180
#: src/Admin/VersionAdminController.php:394 #: src/Admin/VersionAdminController.php:409
msgid "Active" msgid "Active"
msgstr "Aktiv" msgstr "Aktiv"
#: src/Admin/AdminController.php:154 src/Admin/AdminController.php:882 #: src/Admin/AdminController.php:154 src/Admin/AdminController.php:882
#: src/Admin/AdminController.php:1195 src/Admin/AdminController.php:1318 #: src/Admin/AdminController.php:1195 src/Admin/AdminController.php:1318
#: src/Admin/VersionAdminController.php:172 #: src/Admin/VersionAdminController.php:180
#: src/Admin/VersionAdminController.php:394 #: src/Admin/VersionAdminController.php:409
msgid "Inactive" msgid "Inactive"
msgstr "Inaktiv" msgstr "Inaktiv"
@@ -135,9 +135,9 @@ msgstr "Widerrufen"
#: src/Admin/AdminController.php:246 src/Admin/AdminController.php:298 #: src/Admin/AdminController.php:246 src/Admin/AdminController.php:298
#: src/Admin/AdminController.php:336 src/Admin/OrderLicenseController.php:301 #: src/Admin/AdminController.php:336 src/Admin/OrderLicenseController.php:301
#: src/Admin/OrderLicenseController.php:340 #: src/Admin/OrderLicenseController.php:340
#: src/Admin/VersionAdminController.php:249 #: src/Admin/VersionAdminController.php:257
#: src/Admin/VersionAdminController.php:318 #: src/Admin/VersionAdminController.php:326
#: src/Admin/VersionAdminController.php:344 #: src/Admin/VersionAdminController.php:352
msgid "Permission denied." msgid "Permission denied."
msgstr "Zugriff verweigert." msgstr "Zugriff verweigert."
@@ -208,7 +208,7 @@ msgstr "Lizenz konnte nicht widerrufen werden."
#: src/Admin/AdminController.php:466 src/Admin/AdminController.php:484 #: src/Admin/AdminController.php:466 src/Admin/AdminController.php:484
#: src/Admin/AdminController.php:504 src/Admin/AdminController.php:522 #: src/Admin/AdminController.php:504 src/Admin/AdminController.php:522
#: src/Admin/AdminController.php:589 src/Admin/AdminController.php:779 #: src/Admin/AdminController.php:589 src/Admin/AdminController.php:779
#: src/Frontend/AccountController.php:325 #: src/Frontend/AccountController.php:326
msgid "Security check failed." msgid "Security check failed."
msgstr "Sicherheitsüberprüfung fehlgeschlagen." msgstr "Sicherheitsüberprüfung fehlgeschlagen."
@@ -430,14 +430,14 @@ msgid "Bulk Actions"
msgstr "Massenaktionen" msgstr "Massenaktionen"
#: src/Admin/AdminController.php:1235 src/Admin/AdminController.php:1407 #: src/Admin/AdminController.php:1235 src/Admin/AdminController.php:1407
#: src/Admin/VersionAdminController.php:178 #: src/Admin/VersionAdminController.php:186
#: src/Admin/VersionAdminController.php:400 #: src/Admin/VersionAdminController.php:415
msgid "Activate" msgid "Activate"
msgstr "Aktivieren" msgstr "Aktivieren"
#: src/Admin/AdminController.php:1236 src/Admin/AdminController.php:1408 #: src/Admin/AdminController.php:1236 src/Admin/AdminController.php:1408
#: src/Admin/VersionAdminController.php:178 #: src/Admin/VersionAdminController.php:186
#: src/Admin/VersionAdminController.php:400 #: src/Admin/VersionAdminController.php:415
msgid "Deactivate" msgid "Deactivate"
msgstr "Deaktivieren" msgstr "Deaktivieren"
@@ -459,8 +459,8 @@ msgid "Extend 1 year"
msgstr "1 Jahr verlängern" msgstr "1 Jahr verlängern"
#: src/Admin/AdminController.php:1241 src/Admin/AdminController.php:1377 #: src/Admin/AdminController.php:1241 src/Admin/AdminController.php:1377
#: src/Admin/AdminController.php:1413 src/Admin/VersionAdminController.php:181 #: src/Admin/AdminController.php:1413 src/Admin/VersionAdminController.php:189
#: src/Admin/VersionAdminController.php:403 #: src/Admin/VersionAdminController.php:418
msgid "Delete" msgid "Delete"
msgstr "Löschen" msgstr "Löschen"
@@ -492,7 +492,7 @@ msgstr "Domain"
#: src/Admin/AdminController.php:1257 src/Admin/AdminController.php:1395 #: src/Admin/AdminController.php:1257 src/Admin/AdminController.php:1395
#: src/Admin/OrderLicenseController.php:147 #: src/Admin/OrderLicenseController.php:147
#: src/Admin/VersionAdminController.php:139 #: src/Admin/VersionAdminController.php:140
msgid "Status" msgid "Status"
msgstr "Status" msgstr "Status"
@@ -508,7 +508,7 @@ msgstr "Läuft ab"
#: src/Admin/AdminController.php:1260 src/Admin/AdminController.php:1398 #: src/Admin/AdminController.php:1260 src/Admin/AdminController.php:1398
#: src/Admin/OrderLicenseController.php:149 #: src/Admin/OrderLicenseController.php:149
#: src/Admin/VersionAdminController.php:141 #: src/Admin/VersionAdminController.php:142
msgid "Actions" msgid "Actions"
msgstr "Aktionen" msgstr "Aktionen"
@@ -516,7 +516,7 @@ msgstr "Aktionen"
msgid "No licenses found." msgid "No licenses found."
msgstr "Keine Lizenzen gefunden." msgstr "Keine Lizenzen gefunden."
#: src/Admin/AdminController.php:1276 src/Frontend/AccountController.php:193 #: src/Admin/AdminController.php:1276 src/Frontend/AccountController.php:194
msgid "Copy to clipboard" msgid "Copy to clipboard"
msgstr "In Zwischenablage kopieren" msgstr "In Zwischenablage kopieren"
@@ -718,8 +718,8 @@ msgid "Error saving. Please try again."
msgstr "Fehler beim Speichern. Bitte versuchen Sie es erneut." msgstr "Fehler beim Speichern. Bitte versuchen Sie es erneut."
#: src/Admin/OrderLicenseController.php:288 #: src/Admin/OrderLicenseController.php:288
#: src/Frontend/AccountController.php:313 #: src/Frontend/AccountController.php:314
#: src/Frontend/AccountController.php:345 #: src/Frontend/AccountController.php:346
msgid "Please enter a valid domain." msgid "Please enter a valid domain."
msgstr "Bitte geben Sie eine gültige Domain ein." msgstr "Bitte geben Sie eine gültige Domain ein."
@@ -737,7 +737,7 @@ msgid "Order domain updated."
msgstr "Bestellungs-Domain aktualisiert." msgstr "Bestellungs-Domain aktualisiert."
#: src/Admin/OrderLicenseController.php:363 #: src/Admin/OrderLicenseController.php:363
#: src/Frontend/AccountController.php:351 #: src/Frontend/AccountController.php:352
#: src/Frontend/DownloadController.php:105 #: src/Frontend/DownloadController.php:105
msgid "License not found." msgid "License not found."
msgstr "Lizenz nicht gefunden." msgstr "Lizenz nicht gefunden."
@@ -890,7 +890,7 @@ msgstr ""
"Dateiintegrität zu überprüfen." "Dateiintegrität zu überprüfen."
#: src/Admin/VersionAdminController.php:116 #: src/Admin/VersionAdminController.php:116
#: src/Admin/VersionAdminController.php:138 #: src/Admin/VersionAdminController.php:139
msgid "Release Notes" msgid "Release Notes"
msgstr "Versionshinweise" msgstr "Versionshinweise"
@@ -902,107 +902,111 @@ msgstr "Version hinzufügen"
msgid "Existing Versions" msgid "Existing Versions"
msgstr "Vorhandene Versionen" msgstr "Vorhandene Versionen"
#: src/Admin/VersionAdminController.php:140 #: src/Admin/VersionAdminController.php:138
msgid "SHA256"
msgstr "SHA256"
#: src/Admin/VersionAdminController.php:141
msgid "Released" msgid "Released"
msgstr "Veröffentlicht" msgstr "Veröffentlicht"
#: src/Admin/VersionAdminController.php:147 #: src/Admin/VersionAdminController.php:148
msgid "No versions found. Add your first version above." msgid "No versions found. Add your first version above."
msgstr "Keine Versionen gefunden. Fügen Sie Ihre erste Version oben hinzu." msgstr "Keine Versionen gefunden. Fügen Sie Ihre erste Version oben hinzu."
#: src/Admin/VersionAdminController.php:163 #: src/Admin/VersionAdminController.php:164
#: src/Admin/VersionAdminController.php:385 #: src/Admin/VersionAdminController.php:393
msgid "Uploaded file" msgid "Uploaded file"
msgstr "Hochgeladene Datei" msgstr "Hochgeladene Datei"
#: src/Admin/VersionAdminController.php:166 #: src/Admin/VersionAdminController.php:167
#: src/Admin/VersionAdminController.php:388 #: src/Admin/VersionAdminController.php:396
msgid "No download file" msgid "No download file"
msgstr "Keine Download-Datei" msgstr "Keine Download-Datei"
#: src/Admin/VersionAdminController.php:222 #: src/Admin/VersionAdminController.php:230
msgid "Are you sure you want to delete this version?" msgid "Are you sure you want to delete this version?"
msgstr "Sind Sie sicher, dass Sie diese Version löschen möchten?" msgstr "Sind Sie sicher, dass Sie diese Version löschen möchten?"
#: src/Admin/VersionAdminController.php:223 #: src/Admin/VersionAdminController.php:231
msgid "Please enter a version number." msgid "Please enter a version number."
msgstr "Bitte geben Sie eine Versionsnummer ein." msgstr "Bitte geben Sie eine Versionsnummer ein."
#: src/Admin/VersionAdminController.php:224 #: src/Admin/VersionAdminController.php:232
msgid "Please enter a valid version number (e.g., 1.0.0)." msgid "Please enter a valid version number (e.g., 1.0.0)."
msgstr "Bitte geben Sie eine gültige Versionsnummer ein (z.B. 1.0.0)." msgstr "Bitte geben Sie eine gültige Versionsnummer ein (z.B. 1.0.0)."
#: src/Admin/VersionAdminController.php:225 #: src/Admin/VersionAdminController.php:233
msgid "An error occurred. Please try again." msgid "An error occurred. Please try again."
msgstr "Ein Fehler ist aufgetreten. Bitte versuchen Sie es erneut." msgstr "Ein Fehler ist aufgetreten. Bitte versuchen Sie es erneut."
#: src/Admin/VersionAdminController.php:226 #: src/Admin/VersionAdminController.php:234
msgid "Select Download File" msgid "Select Download File"
msgstr "Download-Datei auswählen" msgstr "Download-Datei auswählen"
#: src/Admin/VersionAdminController.php:227 #: src/Admin/VersionAdminController.php:235
msgid "Use this file" msgid "Use this file"
msgstr "Diese Datei verwenden" msgstr "Diese Datei verwenden"
#: src/Admin/VersionAdminController.php:228 #: src/Admin/VersionAdminController.php:236
msgid "" msgid ""
"Invalid checksum file format. File must contain a 64-character SHA256 hash." "Invalid checksum file format. File must contain a 64-character SHA256 hash."
msgstr "" msgstr ""
"Ungültiges Prüfsummendateiformat. Die Datei muss einen 64-stelligen SHA256-" "Ungültiges Prüfsummendateiformat. Die Datei muss einen 64-stelligen SHA256-"
"Hash enthalten." "Hash enthalten."
#: src/Admin/VersionAdminController.php:229 #: src/Admin/VersionAdminController.php:237
msgid "Failed to read checksum file." msgid "Failed to read checksum file."
msgstr "Prüfsummendatei konnte nicht gelesen werden." msgstr "Prüfsummendatei konnte nicht gelesen werden."
#: src/Admin/VersionAdminController.php:259 #: src/Admin/VersionAdminController.php:267
msgid "Product ID and version are required." msgid "Product ID and version are required."
msgstr "Produkt-ID und Version sind erforderlich." msgstr "Produkt-ID und Version sind erforderlich."
#: src/Admin/VersionAdminController.php:264 #: src/Admin/VersionAdminController.php:272
msgid "Invalid version format. Use semantic versioning (e.g., 1.0.0)." msgid "Invalid version format. Use semantic versioning (e.g., 1.0.0)."
msgstr "" msgstr ""
"Ungültiges Versionsformat. Verwenden Sie semantische Versionierung (z.B. " "Ungültiges Versionsformat. Verwenden Sie semantische Versionierung (z.B. "
"1.0.0)." "1.0.0)."
#: src/Admin/VersionAdminController.php:269 #: src/Admin/VersionAdminController.php:277
msgid "This version already exists." msgid "This version already exists."
msgstr "Diese Version existiert bereits." msgstr "Diese Version existiert bereits."
#: src/Admin/VersionAdminController.php:275 #: src/Admin/VersionAdminController.php:283
msgid "Product not found." msgid "Product not found."
msgstr "Produkt nicht gefunden." msgstr "Produkt nicht gefunden."
#: src/Admin/VersionAdminController.php:279 #: src/Admin/VersionAdminController.php:287
msgid "This product is not a licensed product." msgid "This product is not a licensed product."
msgstr "Dieses Produkt ist kein lizensiertes Produkt." msgstr "Dieses Produkt ist kein lizensiertes Produkt."
#: src/Admin/VersionAdminController.php:296 #: src/Admin/VersionAdminController.php:304
msgid "Failed to create version." msgid "Failed to create version."
msgstr "Version konnte nicht erstellt werden." msgstr "Version konnte nicht erstellt werden."
#: src/Admin/VersionAdminController.php:304 #: src/Admin/VersionAdminController.php:312
msgid "Version added successfully." msgid "Version added successfully."
msgstr "Version erfolgreich hinzugefügt." msgstr "Version erfolgreich hinzugefügt."
#: src/Admin/VersionAdminController.php:324 #: src/Admin/VersionAdminController.php:332
#: src/Admin/VersionAdminController.php:351 #: src/Admin/VersionAdminController.php:359
msgid "Version ID is required." msgid "Version ID is required."
msgstr "Versions-ID ist erforderlich." msgstr "Versions-ID ist erforderlich."
#: src/Admin/VersionAdminController.php:330 #: src/Admin/VersionAdminController.php:338
msgid "Failed to delete version." msgid "Failed to delete version."
msgstr "Version konnte nicht gelöscht werden." msgstr "Version konnte nicht gelöscht werden."
#: src/Admin/VersionAdminController.php:333 #: src/Admin/VersionAdminController.php:341
msgid "Version deleted successfully." msgid "Version deleted successfully."
msgstr "Version erfolgreich gelöscht." msgstr "Version erfolgreich gelöscht."
#: src/Admin/VersionAdminController.php:357 #: src/Admin/VersionAdminController.php:365
msgid "Failed to update version." msgid "Failed to update version."
msgstr "Version konnte nicht aktualisiert werden." msgstr "Version konnte nicht aktualisiert werden."
#: src/Admin/VersionAdminController.php:361 #: src/Admin/VersionAdminController.php:369
msgid "Version updated successfully." msgid "Version updated successfully."
msgstr "Version erfolgreich aktualisiert." msgstr "Version erfolgreich aktualisiert."
@@ -1084,7 +1088,7 @@ msgstr "Domain für Lizenz-Aktivierung"
#: src/Email/LicenseEmailController.php:281 #: src/Email/LicenseEmailController.php:281
#: src/Email/LicenseExpirationEmail.php:207 #: src/Email/LicenseExpirationEmail.php:207
#: src/Email/LicenseExpirationEmail.php:270 #: src/Email/LicenseExpirationEmail.php:270
#: src/Frontend/AccountController.php:189 #: src/Frontend/AccountController.php:190
msgid "License Key:" msgid "License Key:"
msgstr "Lizenzschlüssel:" msgstr "Lizenzschlüssel:"
@@ -1099,7 +1103,7 @@ msgstr "Lizensierte Domain:"
#: src/Email/LicenseEmailController.php:248 #: src/Email/LicenseEmailController.php:248
#: src/Email/LicenseEmailController.php:287 #: src/Email/LicenseEmailController.php:287
#: src/Frontend/AccountController.php:217 #: src/Frontend/AccountController.php:218
msgid "Never" msgid "Never"
msgstr "Nie" msgstr "Nie"
@@ -1116,7 +1120,7 @@ msgstr "IHRE LIZENZSCHLÜSSEL"
#: src/Email/LicenseEmailController.php:284 #: src/Email/LicenseEmailController.php:284
#: src/Email/LicenseExpirationEmail.php:219 #: src/Email/LicenseExpirationEmail.php:219
#: src/Email/LicenseExpirationEmail.php:272 #: src/Email/LicenseExpirationEmail.php:272
#: src/Frontend/AccountController.php:212 #: src/Frontend/AccountController.php:213
msgid "Expires:" msgid "Expires:"
msgstr "Läuft ab:" msgstr "Läuft ab:"
@@ -1145,7 +1149,7 @@ msgid "License Expiration Notice"
msgstr "Lizenzablauf-Benachrichtigung" msgstr "Lizenzablauf-Benachrichtigung"
#: src/Email/LicenseExpirationEmail.php:107 #: src/Email/LicenseExpirationEmail.php:107
#: src/Frontend/AccountController.php:139 src/License/LicenseManager.php:760 #: src/Frontend/AccountController.php:140 src/License/LicenseManager.php:760
msgid "Unknown Product" msgid "Unknown Product"
msgstr "Unbekanntes Produkt" msgstr "Unbekanntes Produkt"
@@ -1179,7 +1183,7 @@ msgstr "Produkt:"
#: src/Email/LicenseExpirationEmail.php:215 #: src/Email/LicenseExpirationEmail.php:215
#: src/Email/LicenseExpirationEmail.php:271 #: src/Email/LicenseExpirationEmail.php:271
#: src/Frontend/AccountController.php:200 #: src/Frontend/AccountController.php:201
msgid "Domain:" msgid "Domain:"
msgstr "Domain:" msgstr "Domain:"
@@ -1237,61 +1241,61 @@ msgstr "Wählen Sie, welches E-Mail-Format gesendet werden soll."
msgid "Please log in to view your licenses." msgid "Please log in to view your licenses."
msgstr "Bitte melden Sie sich an, um Ihre Lizenzen zu sehen." msgstr "Bitte melden Sie sich an, um Ihre Lizenzen zu sehen."
#: src/Frontend/AccountController.php:164 #: src/Frontend/AccountController.php:165
msgid "You have no licenses yet." msgid "You have no licenses yet."
msgstr "Sie haben noch keine Lizenzen." msgstr "Sie haben noch keine Lizenzen."
#: src/Frontend/AccountController.php:206 #: src/Frontend/AccountController.php:207
msgid "Transfer to new domain" msgid "Transfer to new domain"
msgstr "Auf neue Domain übertragen" msgstr "Auf neue Domain übertragen"
#: src/Frontend/AccountController.php:208 #: src/Frontend/AccountController.php:209
msgid "Transfer" msgid "Transfer"
msgstr "Übertragen" msgstr "Übertragen"
#: src/Frontend/AccountController.php:225 #: src/Frontend/AccountController.php:226
msgid "Available Downloads" msgid "Available Downloads"
msgstr "Verfügbare Downloads" msgstr "Verfügbare Downloads"
#: src/Frontend/AccountController.php:231 #: src/Frontend/AccountController.php:232
#, php-format #, php-format
msgid "Version %s" msgid "Version %s"
msgstr "Version %s" msgstr "Version %s"
#: src/Frontend/AccountController.php:248 #: src/Frontend/AccountController.php:249
msgid "Close" msgid "Close"
msgstr "Schliessen" msgstr "Schliessen"
#: src/Frontend/AccountController.php:249 #: src/Frontend/AccountController.php:250
msgid "Transfer License to New Domain" msgid "Transfer License to New Domain"
msgstr "Lizenz auf neue Domain übertragen" msgstr "Lizenz auf neue Domain übertragen"
#: src/Frontend/AccountController.php:254 #: src/Frontend/AccountController.php:255
msgid "Current Domain" msgid "Current Domain"
msgstr "Aktuelle Domain" msgstr "Aktuelle Domain"
#: src/Frontend/AccountController.php:259 #: src/Frontend/AccountController.php:260
msgid "New Domain" msgid "New Domain"
msgstr "Neue Domain" msgstr "Neue Domain"
#: src/Frontend/AccountController.php:263 #: src/Frontend/AccountController.php:264
msgid "Enter the new domain without http:// or www." msgid "Enter the new domain without http:// or www."
msgstr "Geben Sie die neue Domain ohne http:// oder www ein." msgstr "Geben Sie die neue Domain ohne http:// oder www ein."
#: src/Frontend/AccountController.php:268 #: src/Frontend/AccountController.php:269
msgid "Transfer License" msgid "Transfer License"
msgstr "Lizenz übertragen" msgstr "Lizenz übertragen"
#: src/Frontend/AccountController.php:310 #: src/Frontend/AccountController.php:311
#: src/Frontend/AccountController.php:377 #: src/Frontend/AccountController.php:378
msgid "License transferred successfully!" msgid "License transferred successfully!"
msgstr "Lizenz erfolgreich übertragen!" msgstr "Lizenz erfolgreich übertragen!"
#: src/Frontend/AccountController.php:311 #: src/Frontend/AccountController.php:312
msgid "Transfer failed. Please try again." msgid "Transfer failed. Please try again."
msgstr "Übertragung fehlgeschlagen. Bitte versuchen Sie es erneut." msgstr "Übertragung fehlgeschlagen. Bitte versuchen Sie es erneut."
#: src/Frontend/AccountController.php:312 #: src/Frontend/AccountController.php:313
msgid "" msgid ""
"Are you sure you want to transfer this license to a new domain? This action " "Are you sure you want to transfer this license to a new domain? This action "
"cannot be undone." "cannot be undone."
@@ -1299,31 +1303,31 @@ msgstr ""
"Sind Sie sicher, dass Sie diese Lizenz auf eine neue Domain übertragen " "Sind Sie sicher, dass Sie diese Lizenz auf eine neue Domain übertragen "
"möchten? Diese Aktion kann nicht rückgängig gemacht werden." "möchten? Diese Aktion kann nicht rückgängig gemacht werden."
#: src/Frontend/AccountController.php:331 #: src/Frontend/AccountController.php:332
msgid "Please log in to transfer a license." msgid "Please log in to transfer a license."
msgstr "Bitte melden Sie sich an, um eine Lizenz zu übertragen." msgstr "Bitte melden Sie sich an, um eine Lizenz zu übertragen."
#: src/Frontend/AccountController.php:337 #: src/Frontend/AccountController.php:338
msgid "Invalid license." msgid "Invalid license."
msgstr "Ungültige Lizenz." msgstr "Ungültige Lizenz."
#: src/Frontend/AccountController.php:355 #: src/Frontend/AccountController.php:356
msgid "You do not have permission to transfer this license." msgid "You do not have permission to transfer this license."
msgstr "Sie haben keine Berechtigung, diese Lizenz zu übertragen." msgstr "Sie haben keine Berechtigung, diese Lizenz zu übertragen."
#: src/Frontend/AccountController.php:360 #: src/Frontend/AccountController.php:361
msgid "Revoked licenses cannot be transferred." msgid "Revoked licenses cannot be transferred."
msgstr "Widerrufene Lizenzen können nicht übertragen werden." msgstr "Widerrufene Lizenzen können nicht übertragen werden."
#: src/Frontend/AccountController.php:364 #: src/Frontend/AccountController.php:365
msgid "Expired licenses cannot be transferred." msgid "Expired licenses cannot be transferred."
msgstr "Abgelaufene Lizenzen können nicht übertragen werden." msgstr "Abgelaufene Lizenzen können nicht übertragen werden."
#: src/Frontend/AccountController.php:369 #: src/Frontend/AccountController.php:370
msgid "The new domain is the same as the current domain." msgid "The new domain is the same as the current domain."
msgstr "Die neue Domain ist dieselbe wie die aktuelle Domain." msgstr "Die neue Domain ist dieselbe wie die aktuelle Domain."
#: src/Frontend/AccountController.php:381 #: src/Frontend/AccountController.php:382
msgid "Failed to transfer license. Please try again." msgid "Failed to transfer license. Please try again."
msgstr "Lizenzübertragung fehlgeschlagen. Bitte versuchen Sie es erneut." msgstr "Lizenzübertragung fehlgeschlagen. Bitte versuchen Sie es erneut."
@@ -1473,9 +1477,6 @@ msgstr "Datei-Prüfsumme stimmt nicht überein. Erwartet: %1$s, Erhalten: %2$s"
#~ "Alternativ: Geben Sie eine externe Download-URL ein, anstatt eine Datei " #~ "Alternativ: Geben Sie eine externe Download-URL ein, anstatt eine Datei "
#~ "hochzuladen." #~ "hochzuladen."
#~ msgid "SHA256 Hash"
#~ msgstr "SHA256 Prüfsumme"
#~ msgid "Enter SHA256 checksum..." #~ msgid "Enter SHA256 checksum..."
#~ msgstr "SHA256 Prüfsumme eingeben..." #~ msgstr "SHA256 Prüfsumme eingeben..."

View File

@@ -6,9 +6,9 @@
#, fuzzy #, fuzzy
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: WooCommerce Licensed Product 0.2.1\n" "Project-Id-Version: WooCommerce Licensed Product 0.2.2\n"
"Report-Msgid-Bugs-To: magdev3.0@gmail.com\n" "Report-Msgid-Bugs-To: magdev3.0@gmail.com\n"
"POT-Creation-Date: 2026-01-22 17:25+0100\n" "POT-Creation-Date: 2026-01-22 17:32+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"
@@ -80,7 +80,7 @@ msgstr ""
#: src/Admin/AdminController.php:146 src/Admin/AdminController.php:1303 #: src/Admin/AdminController.php:146 src/Admin/AdminController.php:1303
#: src/Admin/AdminController.php:1323 src/Admin/AdminController.php:1344 #: src/Admin/AdminController.php:1323 src/Admin/AdminController.php:1344
#: src/Admin/OrderLicenseController.php:185 #: src/Admin/OrderLicenseController.php:185
#: src/Frontend/AccountController.php:270 #: src/Frontend/AccountController.php:271
msgid "Cancel" msgid "Cancel"
msgstr "" msgstr ""
@@ -98,25 +98,25 @@ msgstr ""
msgid "Lifetime" msgid "Lifetime"
msgstr "" msgstr ""
#: src/Admin/AdminController.php:149 src/Frontend/AccountController.php:308 #: src/Admin/AdminController.php:149 src/Frontend/AccountController.php:309
msgid "Copied!" msgid "Copied!"
msgstr "" msgstr ""
#: src/Admin/AdminController.php:150 src/Frontend/AccountController.php:309 #: src/Admin/AdminController.php:150 src/Frontend/AccountController.php:310
msgid "Copy failed" msgid "Copy failed"
msgstr "" msgstr ""
#: src/Admin/AdminController.php:153 src/Admin/AdminController.php:875 #: src/Admin/AdminController.php:153 src/Admin/AdminController.php:875
#: src/Admin/AdminController.php:1194 src/Admin/AdminController.php:1317 #: src/Admin/AdminController.php:1194 src/Admin/AdminController.php:1317
#: src/Admin/VersionAdminController.php:172 #: src/Admin/VersionAdminController.php:180
#: src/Admin/VersionAdminController.php:394 #: src/Admin/VersionAdminController.php:409
msgid "Active" msgid "Active"
msgstr "" msgstr ""
#: src/Admin/AdminController.php:154 src/Admin/AdminController.php:882 #: src/Admin/AdminController.php:154 src/Admin/AdminController.php:882
#: src/Admin/AdminController.php:1195 src/Admin/AdminController.php:1318 #: src/Admin/AdminController.php:1195 src/Admin/AdminController.php:1318
#: src/Admin/VersionAdminController.php:172 #: src/Admin/VersionAdminController.php:180
#: src/Admin/VersionAdminController.php:394 #: src/Admin/VersionAdminController.php:409
msgid "Inactive" msgid "Inactive"
msgstr "" msgstr ""
@@ -134,9 +134,9 @@ msgstr ""
#: src/Admin/AdminController.php:246 src/Admin/AdminController.php:298 #: src/Admin/AdminController.php:246 src/Admin/AdminController.php:298
#: src/Admin/AdminController.php:336 src/Admin/OrderLicenseController.php:301 #: src/Admin/AdminController.php:336 src/Admin/OrderLicenseController.php:301
#: src/Admin/OrderLicenseController.php:340 #: src/Admin/OrderLicenseController.php:340
#: src/Admin/VersionAdminController.php:249 #: src/Admin/VersionAdminController.php:257
#: src/Admin/VersionAdminController.php:318 #: src/Admin/VersionAdminController.php:326
#: src/Admin/VersionAdminController.php:344 #: src/Admin/VersionAdminController.php:352
msgid "Permission denied." msgid "Permission denied."
msgstr "" msgstr ""
@@ -207,7 +207,7 @@ msgstr ""
#: src/Admin/AdminController.php:466 src/Admin/AdminController.php:484 #: src/Admin/AdminController.php:466 src/Admin/AdminController.php:484
#: src/Admin/AdminController.php:504 src/Admin/AdminController.php:522 #: src/Admin/AdminController.php:504 src/Admin/AdminController.php:522
#: src/Admin/AdminController.php:589 src/Admin/AdminController.php:779 #: src/Admin/AdminController.php:589 src/Admin/AdminController.php:779
#: src/Frontend/AccountController.php:325 #: src/Frontend/AccountController.php:326
msgid "Security check failed." msgid "Security check failed."
msgstr "" msgstr ""
@@ -427,14 +427,14 @@ msgid "Bulk Actions"
msgstr "" msgstr ""
#: src/Admin/AdminController.php:1235 src/Admin/AdminController.php:1407 #: src/Admin/AdminController.php:1235 src/Admin/AdminController.php:1407
#: src/Admin/VersionAdminController.php:178 #: src/Admin/VersionAdminController.php:186
#: src/Admin/VersionAdminController.php:400 #: src/Admin/VersionAdminController.php:415
msgid "Activate" msgid "Activate"
msgstr "" msgstr ""
#: src/Admin/AdminController.php:1236 src/Admin/AdminController.php:1408 #: src/Admin/AdminController.php:1236 src/Admin/AdminController.php:1408
#: src/Admin/VersionAdminController.php:178 #: src/Admin/VersionAdminController.php:186
#: src/Admin/VersionAdminController.php:400 #: src/Admin/VersionAdminController.php:415
msgid "Deactivate" msgid "Deactivate"
msgstr "" msgstr ""
@@ -456,8 +456,8 @@ msgid "Extend 1 year"
msgstr "" msgstr ""
#: src/Admin/AdminController.php:1241 src/Admin/AdminController.php:1377 #: src/Admin/AdminController.php:1241 src/Admin/AdminController.php:1377
#: src/Admin/AdminController.php:1413 src/Admin/VersionAdminController.php:181 #: src/Admin/AdminController.php:1413 src/Admin/VersionAdminController.php:189
#: src/Admin/VersionAdminController.php:403 #: src/Admin/VersionAdminController.php:418
msgid "Delete" msgid "Delete"
msgstr "" msgstr ""
@@ -489,7 +489,7 @@ msgstr ""
#: src/Admin/AdminController.php:1257 src/Admin/AdminController.php:1395 #: src/Admin/AdminController.php:1257 src/Admin/AdminController.php:1395
#: src/Admin/OrderLicenseController.php:147 #: src/Admin/OrderLicenseController.php:147
#: src/Admin/VersionAdminController.php:139 #: src/Admin/VersionAdminController.php:140
msgid "Status" msgid "Status"
msgstr "" msgstr ""
@@ -505,7 +505,7 @@ msgstr ""
#: src/Admin/AdminController.php:1260 src/Admin/AdminController.php:1398 #: src/Admin/AdminController.php:1260 src/Admin/AdminController.php:1398
#: src/Admin/OrderLicenseController.php:149 #: src/Admin/OrderLicenseController.php:149
#: src/Admin/VersionAdminController.php:141 #: src/Admin/VersionAdminController.php:142
msgid "Actions" msgid "Actions"
msgstr "" msgstr ""
@@ -513,7 +513,7 @@ msgstr ""
msgid "No licenses found." msgid "No licenses found."
msgstr "" msgstr ""
#: src/Admin/AdminController.php:1276 src/Frontend/AccountController.php:193 #: src/Admin/AdminController.php:1276 src/Frontend/AccountController.php:194
msgid "Copy to clipboard" msgid "Copy to clipboard"
msgstr "" msgstr ""
@@ -701,8 +701,8 @@ msgid "Error saving. Please try again."
msgstr "" msgstr ""
#: src/Admin/OrderLicenseController.php:288 #: src/Admin/OrderLicenseController.php:288
#: src/Frontend/AccountController.php:313 #: src/Frontend/AccountController.php:314
#: src/Frontend/AccountController.php:345 #: src/Frontend/AccountController.php:346
msgid "Please enter a valid domain." msgid "Please enter a valid domain."
msgstr "" msgstr ""
@@ -720,7 +720,7 @@ msgid "Order domain updated."
msgstr "" msgstr ""
#: src/Admin/OrderLicenseController.php:363 #: src/Admin/OrderLicenseController.php:363
#: src/Frontend/AccountController.php:351 #: src/Frontend/AccountController.php:352
#: src/Frontend/DownloadController.php:105 #: src/Frontend/DownloadController.php:105
msgid "License not found." msgid "License not found."
msgstr "" msgstr ""
@@ -858,7 +858,7 @@ msgid ""
msgstr "" msgstr ""
#: src/Admin/VersionAdminController.php:116 #: src/Admin/VersionAdminController.php:116
#: src/Admin/VersionAdminController.php:138 #: src/Admin/VersionAdminController.php:139
msgid "Release Notes" msgid "Release Notes"
msgstr "" msgstr ""
@@ -870,103 +870,107 @@ msgstr ""
msgid "Existing Versions" msgid "Existing Versions"
msgstr "" msgstr ""
#: src/Admin/VersionAdminController.php:140 #: src/Admin/VersionAdminController.php:138
msgid "SHA256"
msgstr ""
#: src/Admin/VersionAdminController.php:141
msgid "Released" msgid "Released"
msgstr "" msgstr ""
#: src/Admin/VersionAdminController.php:147 #: src/Admin/VersionAdminController.php:148
msgid "No versions found. Add your first version above." msgid "No versions found. Add your first version above."
msgstr "" msgstr ""
#: src/Admin/VersionAdminController.php:163 #: src/Admin/VersionAdminController.php:164
#: src/Admin/VersionAdminController.php:385 #: src/Admin/VersionAdminController.php:393
msgid "Uploaded file" msgid "Uploaded file"
msgstr "" msgstr ""
#: src/Admin/VersionAdminController.php:166 #: src/Admin/VersionAdminController.php:167
#: src/Admin/VersionAdminController.php:388 #: src/Admin/VersionAdminController.php:396
msgid "No download file" msgid "No download file"
msgstr "" msgstr ""
#: src/Admin/VersionAdminController.php:222 #: src/Admin/VersionAdminController.php:230
msgid "Are you sure you want to delete this version?" msgid "Are you sure you want to delete this version?"
msgstr "" msgstr ""
#: src/Admin/VersionAdminController.php:223 #: src/Admin/VersionAdminController.php:231
msgid "Please enter a version number." msgid "Please enter a version number."
msgstr "" msgstr ""
#: src/Admin/VersionAdminController.php:224 #: src/Admin/VersionAdminController.php:232
msgid "Please enter a valid version number (e.g., 1.0.0)." msgid "Please enter a valid version number (e.g., 1.0.0)."
msgstr "" msgstr ""
#: src/Admin/VersionAdminController.php:225 #: src/Admin/VersionAdminController.php:233
msgid "An error occurred. Please try again." msgid "An error occurred. Please try again."
msgstr "" msgstr ""
#: src/Admin/VersionAdminController.php:226 #: src/Admin/VersionAdminController.php:234
msgid "Select Download File" msgid "Select Download File"
msgstr "" msgstr ""
#: src/Admin/VersionAdminController.php:227 #: src/Admin/VersionAdminController.php:235
msgid "Use this file" msgid "Use this file"
msgstr "" msgstr ""
#: src/Admin/VersionAdminController.php:228 #: src/Admin/VersionAdminController.php:236
msgid "" msgid ""
"Invalid checksum file format. File must contain a 64-character SHA256 hash." "Invalid checksum file format. File must contain a 64-character SHA256 hash."
msgstr "" msgstr ""
#: src/Admin/VersionAdminController.php:229 #: src/Admin/VersionAdminController.php:237
msgid "Failed to read checksum file." msgid "Failed to read checksum file."
msgstr "" msgstr ""
#: src/Admin/VersionAdminController.php:259 #: src/Admin/VersionAdminController.php:267
msgid "Product ID and version are required." msgid "Product ID and version are required."
msgstr "" msgstr ""
#: src/Admin/VersionAdminController.php:264 #: src/Admin/VersionAdminController.php:272
msgid "Invalid version format. Use semantic versioning (e.g., 1.0.0)." msgid "Invalid version format. Use semantic versioning (e.g., 1.0.0)."
msgstr "" msgstr ""
#: src/Admin/VersionAdminController.php:269 #: src/Admin/VersionAdminController.php:277
msgid "This version already exists." msgid "This version already exists."
msgstr "" msgstr ""
#: src/Admin/VersionAdminController.php:275 #: src/Admin/VersionAdminController.php:283
msgid "Product not found." msgid "Product not found."
msgstr "" msgstr ""
#: src/Admin/VersionAdminController.php:279 #: src/Admin/VersionAdminController.php:287
msgid "This product is not a licensed product." msgid "This product is not a licensed product."
msgstr "" msgstr ""
#: src/Admin/VersionAdminController.php:296 #: src/Admin/VersionAdminController.php:304
msgid "Failed to create version." msgid "Failed to create version."
msgstr "" msgstr ""
#: src/Admin/VersionAdminController.php:304 #: src/Admin/VersionAdminController.php:312
msgid "Version added successfully." msgid "Version added successfully."
msgstr "" msgstr ""
#: src/Admin/VersionAdminController.php:324 #: src/Admin/VersionAdminController.php:332
#: src/Admin/VersionAdminController.php:351 #: src/Admin/VersionAdminController.php:359
msgid "Version ID is required." msgid "Version ID is required."
msgstr "" msgstr ""
#: src/Admin/VersionAdminController.php:330 #: src/Admin/VersionAdminController.php:338
msgid "Failed to delete version." msgid "Failed to delete version."
msgstr "" msgstr ""
#: src/Admin/VersionAdminController.php:333 #: src/Admin/VersionAdminController.php:341
msgid "Version deleted successfully." msgid "Version deleted successfully."
msgstr "" msgstr ""
#: src/Admin/VersionAdminController.php:357 #: src/Admin/VersionAdminController.php:365
msgid "Failed to update version." msgid "Failed to update version."
msgstr "" msgstr ""
#: src/Admin/VersionAdminController.php:361 #: src/Admin/VersionAdminController.php:369
msgid "Version updated successfully." msgid "Version updated successfully."
msgstr "" msgstr ""
@@ -1046,7 +1050,7 @@ msgstr ""
#: src/Email/LicenseEmailController.php:281 #: src/Email/LicenseEmailController.php:281
#: src/Email/LicenseExpirationEmail.php:207 #: src/Email/LicenseExpirationEmail.php:207
#: src/Email/LicenseExpirationEmail.php:270 #: src/Email/LicenseExpirationEmail.php:270
#: src/Frontend/AccountController.php:189 #: src/Frontend/AccountController.php:190
msgid "License Key:" msgid "License Key:"
msgstr "" msgstr ""
@@ -1061,7 +1065,7 @@ msgstr ""
#: src/Email/LicenseEmailController.php:248 #: src/Email/LicenseEmailController.php:248
#: src/Email/LicenseEmailController.php:287 #: src/Email/LicenseEmailController.php:287
#: src/Frontend/AccountController.php:217 #: src/Frontend/AccountController.php:218
msgid "Never" msgid "Never"
msgstr "" msgstr ""
@@ -1077,7 +1081,7 @@ msgstr ""
#: src/Email/LicenseEmailController.php:284 #: src/Email/LicenseEmailController.php:284
#: src/Email/LicenseExpirationEmail.php:219 #: src/Email/LicenseExpirationEmail.php:219
#: src/Email/LicenseExpirationEmail.php:272 #: src/Email/LicenseExpirationEmail.php:272
#: src/Frontend/AccountController.php:212 #: src/Frontend/AccountController.php:213
msgid "Expires:" msgid "Expires:"
msgstr "" msgstr ""
@@ -1102,7 +1106,7 @@ msgid "License Expiration Notice"
msgstr "" msgstr ""
#: src/Email/LicenseExpirationEmail.php:107 #: src/Email/LicenseExpirationEmail.php:107
#: src/Frontend/AccountController.php:139 src/License/LicenseManager.php:760 #: src/Frontend/AccountController.php:140 src/License/LicenseManager.php:760
msgid "Unknown Product" msgid "Unknown Product"
msgstr "" msgstr ""
@@ -1136,7 +1140,7 @@ msgstr ""
#: src/Email/LicenseExpirationEmail.php:215 #: src/Email/LicenseExpirationEmail.php:215
#: src/Email/LicenseExpirationEmail.php:271 #: src/Email/LicenseExpirationEmail.php:271
#: src/Frontend/AccountController.php:200 #: src/Frontend/AccountController.php:201
msgid "Domain:" msgid "Domain:"
msgstr "" msgstr ""
@@ -1192,91 +1196,91 @@ msgstr ""
msgid "Please log in to view your licenses." msgid "Please log in to view your licenses."
msgstr "" msgstr ""
#: src/Frontend/AccountController.php:164 #: src/Frontend/AccountController.php:165
msgid "You have no licenses yet." msgid "You have no licenses yet."
msgstr "" msgstr ""
#: src/Frontend/AccountController.php:206 #: src/Frontend/AccountController.php:207
msgid "Transfer to new domain" msgid "Transfer to new domain"
msgstr "" msgstr ""
#: src/Frontend/AccountController.php:208 #: src/Frontend/AccountController.php:209
msgid "Transfer" msgid "Transfer"
msgstr "" msgstr ""
#: src/Frontend/AccountController.php:225 #: src/Frontend/AccountController.php:226
msgid "Available Downloads" msgid "Available Downloads"
msgstr "" msgstr ""
#: src/Frontend/AccountController.php:231 #: src/Frontend/AccountController.php:232
#, php-format #, php-format
msgid "Version %s" msgid "Version %s"
msgstr "" msgstr ""
#: src/Frontend/AccountController.php:248 #: src/Frontend/AccountController.php:249
msgid "Close" msgid "Close"
msgstr "" msgstr ""
#: src/Frontend/AccountController.php:249 #: src/Frontend/AccountController.php:250
msgid "Transfer License to New Domain" msgid "Transfer License to New Domain"
msgstr "" msgstr ""
#: src/Frontend/AccountController.php:254 #: src/Frontend/AccountController.php:255
msgid "Current Domain" msgid "Current Domain"
msgstr "" msgstr ""
#: src/Frontend/AccountController.php:259 #: src/Frontend/AccountController.php:260
msgid "New Domain" msgid "New Domain"
msgstr "" msgstr ""
#: src/Frontend/AccountController.php:263 #: src/Frontend/AccountController.php:264
msgid "Enter the new domain without http:// or www." msgid "Enter the new domain without http:// or www."
msgstr "" msgstr ""
#: src/Frontend/AccountController.php:268 #: src/Frontend/AccountController.php:269
msgid "Transfer License" msgid "Transfer License"
msgstr "" msgstr ""
#: src/Frontend/AccountController.php:310 #: src/Frontend/AccountController.php:311
#: src/Frontend/AccountController.php:377 #: src/Frontend/AccountController.php:378
msgid "License transferred successfully!" msgid "License transferred successfully!"
msgstr "" msgstr ""
#: src/Frontend/AccountController.php:311 #: src/Frontend/AccountController.php:312
msgid "Transfer failed. Please try again." msgid "Transfer failed. Please try again."
msgstr "" msgstr ""
#: src/Frontend/AccountController.php:312 #: src/Frontend/AccountController.php:313
msgid "" msgid ""
"Are you sure you want to transfer this license to a new domain? This action " "Are you sure you want to transfer this license to a new domain? This action "
"cannot be undone." "cannot be undone."
msgstr "" msgstr ""
#: src/Frontend/AccountController.php:331 #: src/Frontend/AccountController.php:332
msgid "Please log in to transfer a license." msgid "Please log in to transfer a license."
msgstr "" msgstr ""
#: src/Frontend/AccountController.php:337 #: src/Frontend/AccountController.php:338
msgid "Invalid license." msgid "Invalid license."
msgstr "" msgstr ""
#: src/Frontend/AccountController.php:355 #: src/Frontend/AccountController.php:356
msgid "You do not have permission to transfer this license." msgid "You do not have permission to transfer this license."
msgstr "" msgstr ""
#: src/Frontend/AccountController.php:360 #: src/Frontend/AccountController.php:361
msgid "Revoked licenses cannot be transferred." msgid "Revoked licenses cannot be transferred."
msgstr "" msgstr ""
#: src/Frontend/AccountController.php:364 #: src/Frontend/AccountController.php:365
msgid "Expired licenses cannot be transferred." msgid "Expired licenses cannot be transferred."
msgstr "" msgstr ""
#: src/Frontend/AccountController.php:369 #: src/Frontend/AccountController.php:370
msgid "The new domain is the same as the current domain." msgid "The new domain is the same as the current domain."
msgstr "" msgstr ""
#: src/Frontend/AccountController.php:381 #: src/Frontend/AccountController.php:382
msgid "Failed to transfer license. Please try again." msgid "Failed to transfer license. Please try again."
msgstr "" msgstr ""

View File

@@ -135,6 +135,7 @@ final class VersionAdminController
<tr> <tr>
<th><?php esc_html_e('Version', 'wc-licensed-product'); ?></th> <th><?php esc_html_e('Version', 'wc-licensed-product'); ?></th>
<th><?php esc_html_e('Download File', 'wc-licensed-product'); ?></th> <th><?php esc_html_e('Download File', 'wc-licensed-product'); ?></th>
<th><?php esc_html_e('SHA256', 'wc-licensed-product'); ?></th>
<th><?php esc_html_e('Release Notes', 'wc-licensed-product'); ?></th> <th><?php esc_html_e('Release Notes', 'wc-licensed-product'); ?></th>
<th><?php esc_html_e('Status', 'wc-licensed-product'); ?></th> <th><?php esc_html_e('Status', 'wc-licensed-product'); ?></th>
<th><?php esc_html_e('Released', 'wc-licensed-product'); ?></th> <th><?php esc_html_e('Released', 'wc-licensed-product'); ?></th>
@@ -144,7 +145,7 @@ final class VersionAdminController
<tbody> <tbody>
<?php if (empty($versions)): ?> <?php if (empty($versions)): ?>
<tr class="no-versions"> <tr class="no-versions">
<td colspan="6"><?php esc_html_e('No versions found. Add your first version above.', 'wc-licensed-product'); ?></td> <td colspan="7"><?php esc_html_e('No versions found. Add your first version above.', 'wc-licensed-product'); ?></td>
</tr> </tr>
<?php else: ?> <?php else: ?>
<?php foreach ($versions as $version): ?> <?php foreach ($versions as $version): ?>
@@ -166,6 +167,13 @@ final class VersionAdminController
<em><?php esc_html_e('No download file', 'wc-licensed-product'); ?></em> <em><?php esc_html_e('No download file', 'wc-licensed-product'); ?></em>
<?php endif; ?> <?php endif; ?>
</td> </td>
<td>
<?php if ($version->getFileHash()): ?>
<code class="file-hash" title="<?php echo esc_attr($version->getFileHash()); ?>"><?php echo esc_html(substr($version->getFileHash(), 0, 12)); ?>...</code>
<?php else: ?>
<em>—</em>
<?php endif; ?>
</td>
<td><?php echo esc_html($version->getReleaseNotes() ? wp_trim_words($version->getReleaseNotes(), 10) : '—'); ?></td> <td><?php echo esc_html($version->getReleaseNotes() ? wp_trim_words($version->getReleaseNotes(), 10) : '—'); ?></td>
<td> <td>
<span class="version-status version-status-<?php echo $version->isActive() ? 'active' : 'inactive'; ?>"> <span class="version-status version-status-<?php echo $version->isActive() ? 'active' : 'inactive'; ?>">
@@ -388,6 +396,13 @@ final class VersionAdminController
<em><?php esc_html_e('No download file', 'wc-licensed-product'); ?></em> <em><?php esc_html_e('No download file', 'wc-licensed-product'); ?></em>
<?php endif; ?> <?php endif; ?>
</td> </td>
<td>
<?php if ($version->getFileHash()): ?>
<code class="file-hash" title="<?php echo esc_attr($version->getFileHash()); ?>"><?php echo esc_html(substr($version->getFileHash(), 0, 12)); ?>...</code>
<?php else: ?>
<em>—</em>
<?php endif; ?>
</td>
<td><?php echo esc_html($version->getReleaseNotes() ? wp_trim_words($version->getReleaseNotes(), 10) : '—'); ?></td> <td><?php echo esc_html($version->getReleaseNotes() ? wp_trim_words($version->getReleaseNotes(), 10) : '—'); ?></td>
<td> <td>
<span class="version-status version-status-<?php echo $version->isActive() ? 'active' : 'inactive'; ?>"> <span class="version-status version-status-<?php echo $version->isActive() ? 'active' : 'inactive'; ?>">

View File

@@ -129,6 +129,7 @@ final class AccountController
), ),
'release_notes' => $version->getReleaseNotes(), 'release_notes' => $version->getReleaseNotes(),
'released_at' => $version->getReleasedAt()->format(get_option('date_format')), 'released_at' => $version->getReleasedAt()->format(get_option('date_format')),
'file_hash' => $version->getFileHash(),
]; ];
} }
} }

View File

@@ -64,6 +64,12 @@
</a> </a>
<span class="download-version">v{{ esc_html(download.version) }}</span> <span class="download-version">v{{ esc_html(download.version) }}</span>
<span class="download-date">{{ esc_html(download.released_at) }}</span> <span class="download-date">{{ esc_html(download.released_at) }}</span>
{% if download.file_hash %}
<span class="download-hash" title="{{ esc_attr(download.file_hash) }}">
<span class="dashicons dashicons-shield"></span>
<code>{{ download.file_hash[:12] }}...</code>
</span>
{% endif %}
</li> </li>
{% endfor %} {% endfor %}
</ul> </ul>

View File

@@ -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.2.1 * Version: 0.2.2
* 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.2.1'); define('WC_LICENSED_PRODUCT_VERSION', '0.2.2');
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__));