« MediaWiki:Common.js » : différence entre les versions
Apparence
Création : "Zoom sur une association" aléatoire sur la page d'accueil, tiré de Catégorie:Association de Colombes à chaque chargement |
Aucun résumé des modifications |
||
| Ligne 4 : | Ligne 4 : | ||
* différente dans [[Catégorie:Association de Colombes]] à chaque ouverture de la page, | * 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. */ | * en évitant si possible de répéter celle affichée lors de la visite précédente. */ | ||
( function () { | $( function () { | ||
if ( mw.config.get( 'wgPageName' ) !== 'Accueil' ) { | if ( mw.config.get( 'wgPageName' ) !== 'Accueil' ) { | ||
return; | return; | ||
| Ligne 82 : | Ligne 82 : | ||
} ); | } ); | ||
} ); | } ); | ||
} | } ); | ||
Version du 7 septembre 2026 à 00:00
/* 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 ) );
}
} );
} );
} );