PLUGIN QRCode
Add an icon in linklist to display links QRCode
This commit is contained in:
parent
a52e843593
commit
14c8efbe31
6 changed files with 1312 additions and 0 deletions
1215
plugins/qrcode/qr-1.1.3.js
Normal file
1215
plugins/qrcode/qr-1.1.3.js
Normal file
File diff suppressed because it is too large
Load diff
BIN
plugins/qrcode/qr-1.1.3.min.js
vendored
Normal file
BIN
plugins/qrcode/qr-1.1.3.min.js
vendored
Normal file
Binary file not shown.
5
plugins/qrcode/qrcode.html
Normal file
5
plugins/qrcode/qrcode.html
Normal file
|
@ -0,0 +1,5 @@
|
|||
<div class="linkqrcode">
|
||||
<a href="http://qrfree.kaywa.com/?l=1&s=8&d=%s" onclick="showQrCode(this); return false;" class="qrcode" data-permalink="%s">
|
||||
<img src="%s/qrcode/qrcode.png" width="13" height="13" title="QR-Code">
|
||||
</a>
|
||||
</div>
|
36
plugins/qrcode/qrcode.php
Normal file
36
plugins/qrcode/qrcode.php
Normal file
|
@ -0,0 +1,36 @@
|
|||
<?php
|
||||
|
||||
// TODO: Can't be tested in localhost
|
||||
|
||||
/**
|
||||
* Add qrcode icon to link_plugin when rendering linklist.
|
||||
*
|
||||
* @param $data - linklist data.
|
||||
* @return mixed - linklist data with qrcode plugin.
|
||||
*/
|
||||
function hook_qrcode_render_linklist($data)
|
||||
{
|
||||
$qrcode_html = file_get_contents(PluginManager::$PLUGINS_PATH . '/qrcode/qrcode.html');
|
||||
|
||||
foreach ($data['links'] as &$value) {
|
||||
$qrcode = sprintf($qrcode_html, $value['url'], $value['url'], PluginManager::$PLUGINS_PATH);
|
||||
$value['link_plugin'][] = $qrcode;
|
||||
}
|
||||
|
||||
return $data;
|
||||
}
|
||||
|
||||
/**
|
||||
* When linklist is displayed, include qrcode JS files.
|
||||
*
|
||||
* @param array $data - footer data.
|
||||
* @return mixed - footer data with qrcode JS files added.
|
||||
*/
|
||||
function hook_qrcode_render_footer($data)
|
||||
{
|
||||
if ($data['_PAGE_'] == Router::$PAGE_LINKLIST) {
|
||||
$data['js_files'][] = PluginManager::$PLUGINS_PATH . '/qrcode/shaarli-qrcode.js';
|
||||
}
|
||||
|
||||
return $data;
|
||||
}
|
BIN
plugins/qrcode/qrcode.png
Normal file
BIN
plugins/qrcode/qrcode.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 321 B |
56
plugins/qrcode/shaarli-qrcode.js
Normal file
56
plugins/qrcode/shaarli-qrcode.js
Normal file
|
@ -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 += "<br>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;
|
||||
}
|
Loading…
Reference in a new issue