MediaWiki:Gadget-generations.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.
if ( $.inArray( 'Pokémon', mw.config.get( 'wgCategories' ) ) != -1 || $.inArray( 'Capacité', mw.config.get( 'wgCategories' ) ) != -1 ) { // Config : la génération indiquée et la précédente seront considérées comme les seules encore présentes sur la page principale // Lors du passage à une nouvelle génération, seules les mises à jour de cette variable et du Modèle:Générations sont nécessaires var genActuelle = 9; /** * Fonction permettant de créer un sommaire * * Créé en avril 2017 par XFusio */ var createToc = function( toc ) { var headings = $( '#mw-content-text' ).find( 'h2, h3, h4, h5, h6' ).not( '#toc h2' ); var i, x, y = [1, 1, 1, 1, 1, 1], last_y = [1, 1, 1, 1, 1, 1]; var parent; for ( i = 0 ; i < headings.length ; i++ ) { headings[i].level = headings[i].tagName.replace( "H", "" ); headings[i].name = $( headings[i] ).find( '> .mw-headline' ).text(); headings[i].link = $( headings[i] ).find( '> a' ).attr( 'id' ); if ( headings[i].link === undefined ) headings[i].link = $( headings[i] ).find( '> .mw-headline' ).attr( 'id' ); if ( headings[i].level == 2 ) { headings[i].number = y[1]; y[1]++; toc.append( '<li class="toclevel-1 tocsection-' + i + '"><a href="#' + headings[i].link + '"><span class="tocnumber">' + headings[i].number + '</span> <span class="toctext">' + headings[i].name + '</span></a></li>' ); } else { for ( x = i - 1 ; x >= 0 ; x-- ) { if ( headings[x].level < headings[i].level ) { if ( last_y[headings[x].level] != x ) { y[headings[x].level] = 1; last_y[headings[x].level] = x; } headings[i].number = headings[x].number + "." + y[headings[x].level]; y[headings[x].level]++; parent = toc.find( '.tocsection-' + x ); if ( parent.find( '> ul' ).length < 1 ) parent.append( $( '<ul>' ) ); parent.find( '> ul' ).append( '<li class="toclevel-' + headings[i].level + ' tocsection-' + i + '"><a href="#' + headings[i].link + '"><span class="tocnumber">' + headings[i].number + '</span> <span class="toctext">' + headings[i].name + '</span></a></li>' ); break; } } } } }; /** * Affichage des informations d'une génération spécifique dans les articles de Pokémon et de capacité * * Idée de base en 2013 par Misdre : http://www.pokepedia.fr/Utilisateur:Misdre/common.js?oldid=539301 * Créé en mars 2017 par XFusio * Modif de mai 2018 par XFusio : supporte désormais les pages de capacité & détection automatique des sections à modifier */ var generation = function( gen ) { var page = mw.config.get( 'wgPageName' ).replace( new RegExp('/.+', 'i'), "" ); if ( gen != genActuelle && gen != genActuelle - 1 ) page += '/Génération ' + gen; if ( $( '.permuter:first' ).data( 'apparition' ) > gen ) { console.log( 'Le Pokémon ou la capacité demandée n\'existe pas dans la génération demandée, et le changement de génération n\'a donc pas pu être effectué.' ); $( '.permuter a' ).click( function( e ) { e.preventDefault(); var gen = $( this ).text(); $.cookie( 'defaultGeneration', gen ); if ( gen != genActuelle && gen != genActuelle - 1 ) generation( gen ); } ); } else { $(".permuter").css({ "background-image": "url(\"/images/d/de/Ajax-loader.gif\")", "background-repeat": "no-repeat", "background-size": "100% 8px" }); new mw.Api().get({ 'format': 'json', 'action': 'parse', 'page': page, 'prop': 'text', 'redirects': '' }).done( function( data ) { var permuter, position, sections = []; var parser = new DOMParser(); var contents = parser.parseFromString(data.parse.text['*'], 'text/html'); $('.permuter').each(function(){ if ( $( contents ).find( '.permuter[data-section="' + $( this ).data('section') + '"]' ).length > 0 ) sections.push( $( this ).data('section') ); }); sections.forEach( function( element ) { if ( element == "Infobox" ) { $( '.permuter[data-section="Infobox"]' ).html( $( contents ).find( '.permuter[data-section="Infobox"]' ).html() ); $( '.ficheinfo:first' ).html( $( contents ).find( '.ficheinfo:first' ).html() ); } else { permuter = $( '.permuter[data-section="' + element +'"]' ); position = permuter.prev( 'h2, h3, h4, h5, h6' ).prev(); permuter.prev( 'h2, h3, h4, h5, h6' ).nextUntil( 'h2' ).addBack().remove(); $( contents ).find( '.permuter[data-section="' + element +'"]' ).prev( 'h2, h3, h4, h5, h6' ).nextUntil( 'h2' ).addBack().insertAfter( position ); } } ); if ( $.inArray( 'Pokémon', mw.config.get( 'wgCategories' ) ) != -1 ) { var title = $( '.permuter[data-section=Descriptions]' ).prev( 'h2, h3, h4, h5, h6' ); var prev = title.prev(); var contenu = title.html(); title.remove(); $( '<h3>' ).html( contenu ).insertAfter( prev ); $( '#content .ruban-pokemon:not(:first):not(:last)' ).remove(); } if ( typeof boutonsAfficherMasquer == "function" ) { boutonsAfficherMasquer(); } $( '#toc > ul' ).html( "" ); createToc( $( '#toc > ul' ) ); // Conserve en mémoire le dernier changement de génération effectué, pour le pas le refaire une autre fois d'affilée $( '.permuter' ).data( 'precedent', gen ); $( '.permuter a ').click( function( e ) { e.preventDefault(); var gen = $( this ).text(); if ( gen != $.cookie( 'defaultGeneration' ) ) $.cookie( 'defaultGeneration', gen ); genApparente = $( this ).closest( '.permuter' ).data( 'precedent' ); if ( genApparente == genActuelle && gen != genApparente && gen != genApparente - 1 ) generation( gen ); else if ( genApparente == genActuelle - 1 && gen != genApparente && gen != genActuelle ) generation( gen ); else if ( gen != genApparente ) generation( gen ); } ); } ).fail( function( error ) { console.error( 'Gadget generations : ' + error ); } ).always( function() { $(".permuter").css("background-image", "none"); } ); } }; ( function() { var defaultGeneration = $.cookie( 'defaultGeneration' ); if ( !defaultGeneration ) { defaultGeneration = genActuelle; $.cookie( 'defaultGeneration', genActuelle ); } if ( defaultGeneration != genActuelle && defaultGeneration != genActuelle - 1 ) { generation( defaultGeneration ); } else { $( '.permuter a' ).click( function( e ) { e.preventDefault(); var gen = $( this ).text(); if ( gen != defaultGeneration ) $.cookie( 'defaultGeneration', gen ); if ( gen != genActuelle && gen != genActuelle - 1 ) generation( gen ); } ); } } )(); }