Koha/koha-tmpl/opac-tmpl/lib/kjua/kjua.js
Owen Leonard 4c17151d74
Bug 23566: Continue on device - with QR codes
This patch adds the option to show a QR code on the OPAC bibliographic
detail page. The URL of the page is encoded in the image so that
scanning it will take the user to that page on their device. The feature
is controlled by a new system preference, OPACDetailQRCode, which is
disabled by default.

The QR Code is generated by a JavaScript library, "kjua"
(https://github.com/lrsjng/kjua), which has been added to the "About"
page in the staff client.

To test, apply the patch and run the database update. Rebuild the OPAC
CSS (https://wiki.koha-community.org/wiki/Working_with_SCSS_in_the_OPAC_and_staff_client).

 - In the staff client, go to Administration -> System preferences.
 - Locate the OPACDetailQRCode system preferences under OPAC ->
   Features. It should be disabled.
   - Enable the preference and switch to the OPAC.
 - Locate a title in the catalog and view the detail page.
   - In the sidebar menu there should be a "Send to device" link.
   - Clicking the link should display a QR Code.
   - Scan the code using a QR Code-capable device.
   - The URL should be correct.
 - Disable the system preference and confirm that the "Send to device"
   link no longer appears on the OPAC detail page.

Signed-off-by: Christopher Brannon <cbrannon@cdalibrary.org>
Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
2019-10-01 14:38:02 +01:00

18 lines
656 B
JavaScript

const {create_canvas, canvas_to_img, dpr} = require('./lib/dom');
const defaults = require('./lib/defaults');
const qrcode = require('./lib/qrcode');
const draw = require('./lib/draw');
module.exports = options => {
const settings = Object.assign({}, defaults, options);
const qr = qrcode(settings.text, settings.ecLevel, settings.minVersion, settings.quiet);
const ratio = settings.ratio || dpr;
const canvas = create_canvas(settings.size, ratio);
const context = canvas.getContext('2d');
context.scale(ratio, ratio);
draw(qr, context, settings);
return settings.render === 'image' ? canvas_to_img(canvas) : canvas;
};