diff --git a/handybarcodescannerindex.php b/handybarcodescannerindex.php
index dde46da..8026eb8 100755
--- a/handybarcodescannerindex.php
+++ b/handybarcodescannerindex.php
@@ -127,6 +127,14 @@ print '';
print ''; // scanner-box
print ''; // div-table-responsive
+// Manual Barcode Input (for testing without camera/HTTPS)
+print '
';
+
// Last Scan Info
print '';
print ''.$langs->trans("LastScan").': ';
diff --git a/js/scanner.js b/js/scanner.js
index 1462209..59c9551 100644
--- a/js/scanner.js
+++ b/js/scanner.js
@@ -41,7 +41,9 @@
videoContainer: document.getElementById('scanner-video-container'),
video: document.getElementById('scanner-video'),
lastScanCode: document.getElementById('last-scan-code'),
- resultArea: document.getElementById('result-area')
+ resultArea: document.getElementById('result-area'),
+ manualInput: document.getElementById('manual-barcode-input'),
+ manualSearchBtn: document.getElementById('manual-search-btn')
};
if (!elements.startBtn || !elements.videoContainer) {
@@ -101,6 +103,39 @@
function bindEvents() {
elements.startBtn.addEventListener('click', startScanner);
elements.stopBtn.addEventListener('click', stopScanner);
+
+ // Manual barcode input
+ if (elements.manualSearchBtn && elements.manualInput) {
+ elements.manualSearchBtn.addEventListener('click', handleManualSearch);
+ elements.manualInput.addEventListener('keypress', function(e) {
+ if (e.key === 'Enter') {
+ handleManualSearch();
+ }
+ });
+ }
+ }
+
+ // Handle manual barcode input
+ function handleManualSearch() {
+ const barcode = elements.manualInput.value.trim();
+ if (!barcode) {
+ showToast('Bitte Barcode eingeben', 'error');
+ return;
+ }
+
+ // Update last scan display
+ elements.lastScanCode.textContent = barcode;
+
+ // Vibration feedback
+ if (CONFIG.enableVibration && navigator.vibrate) {
+ navigator.vibrate(100);
+ }
+
+ // Search product
+ searchProduct(barcode);
+
+ // Clear input
+ elements.manualInput.value = '';
}
// Load all suppliers for manual selection
diff --git a/langs/de_DE/handybarcodescanner.lang b/langs/de_DE/handybarcodescanner.lang
index 9e825e0..326755e 100644
--- a/langs/de_DE/handybarcodescanner.lang
+++ b/langs/de_DE/handybarcodescanner.lang
@@ -13,6 +13,8 @@ StartScan = Scannen starten
StopScan = Scannen stoppen
LastScan = Letzter Scan
CameraAccessError = Kamera-Zugriff fehlgeschlagen. Bitte Berechtigung erteilen.
+BarcodeManualInput = Barcode manuell eingeben...
+Search = Suchen
# Modes
Order = Bestellen