X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=plugins%2Fqrcode%2Fshaarli-qrcode.js;fp=plugins%2Fqrcode%2Fshaarli-qrcode.js;h=0a8de21de7f7a6c8b3b258e97041ae7e41a5cc60;hb=14c8efbe312696bde56466af114385b70c159bc1;hp=0000000000000000000000000000000000000000;hpb=a52e8435939c641f964939f1df55cf7ceddcc0fd;p=github%2Fshaarli%2FShaarli.git diff --git a/plugins/qrcode/shaarli-qrcode.js b/plugins/qrcode/shaarli-qrcode.js new file mode 100644 index 00000000..0a8de21d --- /dev/null +++ b/plugins/qrcode/shaarli-qrcode.js @@ -0,0 +1,56 @@ +// Show the QR-Code of a permalink (when the QR-Code icon is clicked). +function showQrCode(caller,loading) +{ + // Dynamic javascript lib loading: We only load qr.js if the QR code icon is clicked: + if (typeof(qr) == 'undefined') // Load qr.js only if not present. + { + if (!loading) // If javascript lib is still loading, do not append script to body. + { + var element = document.createElement("script"); + element.src = "plugins/qrcode/qr-1.1.3.min.js"; + document.body.appendChild(element); + } + setTimeout(function() { showQrCode(caller,true);}, 200); // Retry in 200 milliseconds. + return false; + } + + // Remove previous qrcode if present. + removeQrcode(); + + // Build the div which contains the QR-Code: + var element = document.createElement('div'); + element.id="permalinkQrcode"; + + // Make QR-Code div commit sepuku when clicked: + if ( element.attachEvent ){ + element.attachEvent('onclick', 'this.parentNode.removeChild(this);' ); + + } else { + // Damn IE + element.setAttribute('onclick', 'this.parentNode.removeChild(this);' ); + } + + // Build the QR-Code: + var image = qr.image({size: 8,value: caller.dataset.permalink}); + if (image) + { + element.appendChild(image); + element.innerHTML += "
Click to close"; + caller.parentNode.appendChild(element); + } + else + { + element.innerHTML = "Your browser does not seem to be HTML5 compatible."; + } + return false; +} + +// Remove any displayed QR-Code +function removeQrcode() +{ + var elem = document.getElementById("permalinkQrcode"); + if (elem) { + elem.parentNode.removeChild(elem); + } + return false; +} \ No newline at end of file