MediaWiki:Common.js
Apparence
Note : après avoir publié vos modifications, il se peut que vous deviez forcer le rechargement complet du cache de votre navigateur pour voir les changements.
- Firefox / Safari : maintenez la touche Maj (Shift) en cliquant sur le bouton Actualiser ou appuyez sur Ctrl + F5 ou Ctrl + R (⌘ + R sur un Mac).
- Google Chrome : appuyez sur Ctrl + Maj + R (⌘ + Shift + R sur un Mac).
- Edge : maintenez la touche Ctrl en cliquant sur le bouton Actualiser ou pressez Ctrl + F5.
/* Le JS placé ici sera chargé pour tous les utilisateurs à chaque chargement de page. */
/* "Zoom sur une association" aléatoire sur la page d'accueil : pioche une association
* différente dans [[Catégorie:Association de Colombes]] à chaque ouverture de la page,
* en évitant si possible de répéter celle affichée lors de la visite précédente. */
$( function () {
if ( mw.config.get( 'wgPageName' ) !== 'Accueil' ) {
return;
}
var container = document.getElementById( 'wikicolombes-zoom-asso-content' );
if ( !container ) {
return;
}
var api = new mw.Api();
api.get( {
action: 'query',
list: 'categorymembers',
cmtitle: 'Catégorie:Association de Colombes',
cmnamespace: 0,
cmlimit: 500,
format: 'json',
formatversion: 2
} ).done( function ( data ) {
var members = ( data.query && data.query.categorymembers ) || [];
if ( !members.length ) {
return;
}
var lastTitle = null;
try {
lastTitle = sessionStorage.getItem( 'wikicolombes-zoom-asso-last' );
} catch ( e ) {
lastTitle = null;
}
var pool = members;
if ( lastTitle && members.length > 1 ) {
pool = members.filter( function ( m ) {
return m.title !== lastTitle;
} );
}
var pick = pool[ Math.floor( Math.random() * pool.length ) ];
try {
sessionStorage.setItem( 'wikicolombes-zoom-asso-last', pick.title );
} catch ( e ) {}
api.get( {
action: 'parse',
page: pick.title,
prop: 'text',
section: 0,
format: 'json',
formatversion: 2
} ).done( function ( parseData ) {
var html = ( parseData.parse && parseData.parse.text ) || '';
var tmp = document.createElement( 'div' );
tmp.innerHTML = html;
var text = ( tmp.textContent || '' ).replace( /\s+/g, ' ' ).trim();
if ( text.length > 160 ) {
text = text.slice( 0, 160 ).replace( /\s+\S*$/, '' ) + '…';
}
while ( container.firstChild ) {
container.removeChild( container.firstChild );
}
var strong = document.createElement( 'strong' );
var link = document.createElement( 'a' );
link.href = mw.util.getUrl( pick.title );
link.textContent = 'L\'association ' + pick.title;
strong.appendChild( link );
container.appendChild( strong );
if ( text ) {
container.appendChild( document.createElement( 'br' ) );
container.appendChild( document.createTextNode( text ) );
}
} );
} );
} );