- PHP 64.1%
- JavaScript 35.9%
| public/js | ||
| .gitignore | ||
| logo.png | ||
| README.md | ||
| setup.php | ||
simqr — QR code pour les cartes SIM
Plugin GLPI : affiche un QR code sur les fiches de cartes SIM (détail et édition), positionné à droite de la page dans la même colonne que le QR natif des assets (page ordinateur). Le QR contient les identifiants de la SIM au lieu d'une URL, au format :
IMSI;NumLigne;PIN;PUK
Champs lus
| Segment | Champ GLPI |
|---|---|
| IMSI | msin (GLPI stocke l'IMSI sous ce nom — 8/10 derniers chiffres) |
| NumLigne | caller_num de la ligne téléphonique liée (lines_id → Line) |
| PIN | pin |
| PUK | puk |
Les valeurs vides restent des segments vides (IMSI;;PIN;PUK si pas de ligne).
Contrôle d'accès
Le QR n'est affiché que si l'utilisateur a le droit devicesimcard_pinpuk
(même test que GLPI pour masquer/masquer le PIN/PUK sur la fiche,
src/Item_Devices.php:1151). Sans ce droit, aucun QR — le PIN/PUK ne sont
jamais exposés.
Positionnement
GLPI n'autorise pas un plugin à override le template twig du core (les
templates de plugin sont chargés via un namespace @pluginkey, pas au même
niveau), le plugin ne peut donc pas réécrire le template lui-même. Il
injecte le QR dans la page, puis un script JS (js/simqr.js, chargé sur
toutes les pages via le hook ADD_JAVASCRIPT) le déplace dans la colonne
droite (div.card-body.d-flex) en recréant exactement le layout de la page
ordinateur : colonne gauche col-xxl-9 + colonne droite col-xxl-3 avec
carte, centrée, flex:1.
Le script est externe (pas inline) et observe le DOM (MutationObserver) :
c'est indispensable car, sur une fiche, le contenu des onglets est chargé
par AJAX et un <script> inline inséré dynamiquement ne s'exécuterait
jamais.
Sur mobile (grille à une colonne) le QR apparaît en bas de page.
Installation
- Copier le dossier dans
<glpi>/plugins/simqr(le nom du dossier doit êtresimqr). - Activer dans Administration → Plugins.
Requiert GLPI ≥ 10.0.0.
Releases
- v1.4.2 — double mécanique de placement : le script de positionnement
est injecté inline par le hook (DOM, indépendant du chargement du JS
externe) +
js/simqr.js(footer, MutationObserver) pour les fiches chargées par AJAX. Marqueurdata-simqr="1.4.2"sur le bloc QR :document.querySelector('#simqr-qrwrap').dataset.simqren console montre instantanément quelle version est réellement chargée. - v1.4.0 — placement QR fiable (script JS externe
js/simqr.js+ MutationObserver, gère aussi le chargement AJAX des onglets) + logo (carte SIM + QR) - v1.3.0 — correction
Line::getByID()(retourne un objet, pas un tableau) + logo - v1.2.0 — numéro de ligne corrigé (
caller_num) + QR déplacé à droite (colonne assets) - v1.1.0 — contenu
IMSI;NumLigne;PIN;PUKau lieu de l'URL + contrôle de droit - v1.0.0 — QR URL de la fiche (comme le QR natif des assets)