diff --git a/core/modules/modHandyBarcodeScanner.class.php b/core/modules/modHandyBarcodeScanner.class.php index aac6480..2a2fe02 100755 --- a/core/modules/modHandyBarcodeScanner.class.php +++ b/core/modules/modHandyBarcodeScanner.class.php @@ -76,7 +76,7 @@ class modHandyBarcodeScanner extends DolibarrModules $this->editor_squarred_logo = ''; // Must be image filename into the module/img directory followed with @modulename. Example: 'myimage.png@handybarcodescanner' // Possible values for version are: 'development', 'experimental', 'dolibarr', 'dolibarr_deprecated', 'experimental_deprecated' or a version string like 'x.y.z' - $this->version = '1.0'; + $this->version = '1.1'; // Url to the file with your last numberversion of this module //$this->url_last_version = 'http://www.example.com/versionmodule.txt'; diff --git a/js/scanner.js b/js/scanner.js index 59c9551..b96732f 100644 --- a/js/scanner.js +++ b/js/scanner.js @@ -165,6 +165,33 @@ elements.startBtn.disabled = true; elements.startBtn.textContent = 'Initialisiere...'; + // First request camera permission explicitly + navigator.mediaDevices.getUserMedia({ video: { facingMode: 'environment' } }) + .then(function(stream) { + // Permission granted - stop the test stream + stream.getTracks().forEach(track => track.stop()); + + // Now start Quagga + initQuagga(); + }) + .catch(function(err) { + console.error('Camera permission error:', err); + elements.startBtn.disabled = false; + elements.startBtn.textContent = CONFIG.lang.startScan || 'Scan starten'; + + let errorMsg = CONFIG.lang.cameraError || 'Kamerafehler'; + if (err.name === 'NotAllowedError') { + errorMsg = 'Kamerazugriff verweigert. Bitte Berechtigung in den Browser-Einstellungen erteilen.'; + } else if (err.name === 'NotFoundError') { + errorMsg = 'Keine Kamera gefunden.'; + } else if (err.name === 'NotReadableError') { + errorMsg = 'Kamera wird bereits verwendet.'; + } + showToast(errorMsg, 'error'); + }); + } + + function initQuagga() { Quagga.init({ inputStream: { name: "Live", @@ -191,17 +218,7 @@ console.error('Quagga init error:', err); elements.startBtn.disabled = false; elements.startBtn.textContent = CONFIG.lang.startScan || 'Scan starten'; - - // Show specific error message - let errorMsg = CONFIG.lang.cameraError || 'Kamerafehler'; - if (err.name === 'NotAllowedError') { - errorMsg = 'Kamerazugriff verweigert. Bitte Berechtigung erteilen.'; - } else if (err.name === 'NotFoundError') { - errorMsg = 'Keine Kamera gefunden.'; - } else if (err.name === 'NotReadableError') { - errorMsg = 'Kamera wird bereits verwendet.'; - } - showToast(errorMsg, 'error'); + showToast(CONFIG.lang.cameraError || 'Kamerafehler', 'error'); return; }