Utilisateur:Laurent04000/pamo.js
Note : après avoir enregistré la page, vous devrez forcer le rechargement complet du cache de votre navigateur pour voir les changements.
Mozilla / Firefox / Konqueror / Safari : maintenez la touche Majuscule (Shift) en cliquant sur le bouton Actualiser (Reload) ou pressez Maj-Ctrl-R (Cmd-R sur Apple Mac) ;
Firefox (sur GNU/Linux) / Chrome / Internet Explorer / Opera : maintenez la touche Ctrl en cliquant sur le bouton Actualiser ou pressez Ctrl-F5./*
* Pamo
* Affichage des palettes de navigation sur Minerva
* Auteurs : Google Gemini pour Laurent04000, Od1n
* {{Catégorisation JS|Pamo}}
*/
(function() {
// 1. On s'assure qu'on est sur un article (Namespace 0)
if (mw.config.get('wgNamespaceNumber') !== 0) return;
// 2. On s'assure qu'on est en mode "lecture" (pas en édition ou historique)
if (mw.config.get('wgAction') !== 'view') return;
// 3. On bloque le script sur les pages de "diff" (comparaison)
if (mw.config.get('wgDiffNewId')) return;
const pageTitle = mw.config.get('wgPageName');
const restUrl = window.location.origin + "/api/rest_v1/page/html/" + encodeURIComponent(pageTitle);
fetch(restUrl)
.then(response => response.text())
.then(html => {
const parser = new DOMParser();
const doc = parser.parseFromString(html, 'text/html');
const palettes = doc.querySelectorAll('.navbox');
if (palettes.length > 0) {
const container = document.createElement('div');
container.style = "margin: 20px 0; padding: 10px; border-top: 2px solid #E6F2FF; background: #fff; clear: both;";
palettes.forEach(function(pal) {
const wrapper = document.createElement('div');
wrapper.style = "overflow-x: auto; width: 100%; margin-bottom: 15px; border: 1px solid #a2a9b1; border-radius: 2px;";
// Correction des liens relatifs de l'API REST
const links = pal.querySelectorAll('a');
links.forEach(function(a) {
const href = a.getAttribute('href');
if (href && href.startsWith('./')) {
a.setAttribute('href', '/wiki/' + href.substring(2));
}
});
// Styles forcés pour la lisibilité mobile
pal.style.display = "table";
pal.style.width = "100%";
pal.style.minWidth = "650px";
pal.style.visibility = "visible";
pal.style.fontSize = "0.9em";
wrapper.append(pal);
container.append(wrapper);
});
// Insertion avant les catégories ou en fin de texte
let target = document.querySelector('.catlinks');
if (target) {
target.before(container);
} else {
target = document.querySelector('#mw-content-text');
if (target) {
target.append(container);
}
}
}
})
.catch(err => console.error("Erreur chargement palettes :", err));
})();