« MediaWiki:Common.js » : différence entre les versions
Page de l’interface de MediaWiki
Autres actions
Aucun résumé des modifications |
Aucun résumé des modifications |
||
| Ligne 1 : | Ligne 1 : | ||
/* Tout JavaScript | /* Tout JavaScript present ici sera execute par tous les utilisateurs a chaque chargement de page. */ | ||
/* ===== Fil d'Ariane des tuiles dans l'en-tete (skin Citizen) ===== | /* ===== Fil d'Ariane des tuiles dans l'en-tete (skin Citizen) ===== | ||
Affiche entre Accueil et Recherche la/les tuile(s) qui contient(ent) | Affiche entre Accueil et Recherche un rectangle noir avec le titre | ||
de la/les tuile(s) qui contient(ent) la page courante | |||
(tuile directe ou tuile parente d'un sous-article). | |||
MediaWiki 1.45 : le module mediawiki.title n'existe plus, | |||
mw.Title est fourni par mediawiki.api. */ | |||
( function () { | ( function () { | ||
'use strict'; | 'use strict'; | ||
| Ligne 10 : | Ligne 12 : | ||
var current = mw.config.get( 'wgPageName' ); | var current = mw.config.get( 'wgPageName' ); | ||
if ( current === 'Accueil' ) return; | if ( current === 'Accueil' ) return; | ||
function titreNormalise( nom ) { | |||
try { return new mw.Title( nom ).toText(); } | |||
catch ( e ) { return nom; } | |||
} | |||
function pastilles( tuiles ) { | function pastilles( tuiles ) { | ||
| Ligne 23 : | Ligne 30 : | ||
a.className = 'tuile-pastille'; | a.className = 'tuile-pastille'; | ||
a.title = 'Retour a la tuile : ' + t.titre; | a.title = 'Retour a la tuile : ' + t.titre; | ||
var span = document.createElement( 'span' ); | var span = document.createElement( 'span' ); | ||
span.textContent = t.titre; | span.textContent = t.titre; | ||
a.appendChild( span ); | a.appendChild( span ); | ||
zone.appendChild( a ); | zone.appendChild( a ); | ||
| Ligne 38 : | Ligne 40 : | ||
function lancer() { | function lancer() { | ||
var api = new mw.Api(); | var api = new mw.Api(); | ||
var norm = | var norm = titreNormalise( current ); | ||
api.get( { action: 'parse', page: 'Accueil', prop: 'text', formatversion: 2 } ) | api.get( { action: 'parse', page: 'Accueil', prop: 'text', formatversion: 2 } ) | ||
.then( function ( data ) { | .then( function ( data ) { | ||
| Ligne 55 : | Ligne 57 : | ||
} ); | } ); | ||
var trouvees = tuiles.filter( function ( t ) { | var trouvees = tuiles.filter( function ( t ) { | ||
return | return titreNormalise( t.cible ) === norm; | ||
} ); | } ); | ||
return api.get( { action: 'query', list: 'backlinks', bltitle: norm, | return api.get( { action: 'query', list: 'backlinks', bltitle: norm, | ||
| Ligne 62 : | Ligne 64 : | ||
var liens = ( bd.query.backlinks || [] ).map( function ( p ) { return p.title; } ); | var liens = ( bd.query.backlinks || [] ).map( function ( p ) { return p.title; } ); | ||
tuiles.forEach( function ( t ) { | tuiles.forEach( function ( t ) { | ||
var cibleNorm = | var cibleNorm = titreNormalise( t.cible ); | ||
if ( cibleNorm !== norm && liens.indexOf( cibleNorm ) !== -1 ) { | if ( cibleNorm !== norm && liens.indexOf( cibleNorm ) !== -1 ) { | ||
trouvees.push( t ); | trouvees.push( t ); | ||
| Ligne 78 : | Ligne 80 : | ||
quandPret( function () { | quandPret( function () { | ||
mw.loader.using( [ 'mediawiki.api', 'mediawiki.util | mw.loader.using( [ 'mediawiki.api', 'mediawiki.util' ], lancer ); | ||
} ); | } ); | ||
}() ); | }() ); | ||
Version du 24 octobre 2026 à 12:38
/* Tout JavaScript present ici sera execute par tous les utilisateurs a chaque chargement de page. */
/* ===== Fil d'Ariane des tuiles dans l'en-tete (skin Citizen) =====
Affiche entre Accueil et Recherche un rectangle noir avec le titre
de la/les tuile(s) qui contient(ent) la page courante
(tuile directe ou tuile parente d'un sous-article).
MediaWiki 1.45 : le module mediawiki.title n'existe plus,
mw.Title est fourni par mediawiki.api. */
( function () {
'use strict';
if ( mw.config.get( 'wgNamespaceNumber' ) !== 0 ) return;
var current = mw.config.get( 'wgPageName' );
if ( current === 'Accueil' ) return;
function titreNormalise( nom ) {
try { return new mw.Title( nom ).toText(); }
catch ( e ) { return nom; }
}
function pastilles( tuiles ) {
var header = document.querySelector( '.citizen-header' );
if ( !header ) return;
var logo = header.querySelector( '.citizen-header__logo' );
if ( !logo ) return;
var zone = document.createElement( 'div' );
zone.className = 'tuile-fil-ariane citizen-header__item';
tuiles.forEach( function ( t ) {
var a = document.createElement( 'a' );
a.href = mw.util.getUrl( t.cible );
a.className = 'tuile-pastille';
a.title = 'Retour a la tuile : ' + t.titre;
var span = document.createElement( 'span' );
span.textContent = t.titre;
a.appendChild( span );
zone.appendChild( a );
} );
logo.insertAdjacentElement( 'afterend', zone );
}
function lancer() {
var api = new mw.Api();
var norm = titreNormalise( current );
api.get( { action: 'parse', page: 'Accueil', prop: 'text', formatversion: 2 } )
.then( function ( data ) {
var doc = new DOMParser().parseFromString( data.parse.text, 'text/html' );
var tuiles = [];
doc.querySelectorAll( '.accueil-tile' ).forEach( function ( el ) {
var cible = el.getAttribute( 'data-cible' );
var cle = el.getAttribute( 'data-tuile' );
var titre = el.querySelector( '.accueil-tile-title' );
if ( cible && cle ) {
tuiles.push( {
cible: cible, key: cle,
titre: titre ? titre.textContent.trim() : cle
} );
}
} );
var trouvees = tuiles.filter( function ( t ) {
return titreNormalise( t.cible ) === norm;
} );
return api.get( { action: 'query', list: 'backlinks', bltitle: norm,
bllimit: 500, blnamespace: 0, formatversion: 2 } )
.then( function ( bd ) {
var liens = ( bd.query.backlinks || [] ).map( function ( p ) { return p.title; } );
tuiles.forEach( function ( t ) {
var cibleNorm = titreNormalise( t.cible );
if ( cibleNorm !== norm && liens.indexOf( cibleNorm ) !== -1 ) {
trouvees.push( t );
}
} );
if ( trouvees.length ) pastilles( trouvees );
} );
} );
}
function quandPret( fn ) {
if ( document.readyState !== 'loading' ) { fn(); }
else { document.addEventListener( 'DOMContentLoaded', fn ); }
}
quandPret( function () {
mw.loader.using( [ 'mediawiki.api', 'mediawiki.util' ], lancer );
} );
}() );