Autres langues : English
Note : après avoir enregistré 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 pressez Ctrl-F5 ou Ctrl-R (⌘-R sur un Mac) ;
- Google Chrome : Appuyez sur Ctrl-Maj-R (⌘-Shift-R sur un Mac) ;
- Internet Explorer : Maintenez la touche Ctrl en cliquant sur le bouton Actualiser ou pressez Ctrl-F5 ;
- Opera : Videz le cache dans Outils → Préférences.
/* Tout JavaScript ici sera chargé avec chaque page accédée par n’importe quel utilisateur. */
$( function () {
// Cache purge shortcut
var purge_href = $( '#ca-cargo-purge > a' ).attr( 'href' );
$( '#ca-cargo-purge' ).remove();
$( '#p-views > ul' ).append( '<li></li>' );
$( '#p-views > ul > li:not([id])' ).attr( 'id', 'ca-cargo-purge' );
$( '#ca-cargo-purge' ).append( '<span><a>⟳</a></span>' );
$( '#ca-cargo-purge > span > a' )
.attr( { 'title': 'Purge the cache [alt-shift-g]', 'href': purge_href, 'accesskey': 'g' } )
.css( { 'line-height': 0, 'font-size': 'large' } );
// Links titles
$( '.notitle, .tooltip' )
.find( 'a' )
.attr( 'title', '' );
// Nav
$( '.nav-master-button-visible, .nav-master' ).hide();
$( '.nav-master-button-collapsed' ).show();
$( '.nav-master-button-visible' ).click( function () {
$( '.nav-master-button-visible, .nav-master' ).hide();
$( '.nav-master-button-collapsed' ).show();
} );
$( '.nav-master-button-collapsed' ).click( function () {
$( '.nav-master-button-visible, .nav-master' ).show();
$( '.nav-master-button-collapsed' ).hide();
} );
// Slideshows initialization
var $slideshows = $( '.infobox-slideshow' );
var anim = new Array( $slideshows.size() ).fill( 0 );
$slideshows.each( function ( _, slideshow ) {
var maxHeight = 0;
var maxWidth = 0;
$( slideshow )
.find( '.slide' )
.each( function ( _, slide ) {
maxHeight = Math.max( maxHeight, $( slide ).height() );
maxWidth = Math.max( maxWidth , $( slide ).width() );
} );
$( slideshow )
.height( maxHeight )
.width ( maxWidth );
} );
// Slideshows loop
setInterval( function () {
$slideshows.each( function ( i, slideshow ) {
var $slides = $( slideshow ).find( '.slide' );
if ( $slides.length > 1 )
if ( $( slideshow ).hasClass( 'infobox-slideshow-smooth' ) ) {
$( $slides.get( anim[i] ) ).fadeOut( 'slow' );
anim[i] = ( anim[i] + 1 ) % $slides.length;
$( $slides.get( anim[i] ) ).fadeIn( 'slow' );
} else {
$( $slides.get( anim[i] ) ).fadeOut( 'slow' );
anim[i] = ( anim[i] + 1 ) % $slides.length;
$( $slides.get( anim[i] ) ).fadeIn( 'slow' );
}
} );
}, 3000 );
} );
// Tooltips
$( document ).on( 'mousemove', function ( event ) {
$( '.tooltip:hover > .tooltip-block' ).css( { 'left': event.clientX + 10 + 'px', 'top': event.clientY + 20 + 'px' } );
} );
/**********************
* TRANSLATION SYSTEM *
**********************/
$.when( mw.loader.using( [ 'mediawiki.api', 'mediawiki.ForeignApi' ] ), $.ready ).then( function () {
var sourceApi = new mw.ForeignApi( 'https://bindingofisaacrebirth.gamepedia.com/api.php' );
var targetApi = new mw.Api();
// Translation progress
var translatedRevision;
targetApi.get( {
action: 'cargoquery',
tables: 'maintenance',
fields: 'revision',
where: '_pageID=' + mw.config.get( 'wgArticleId' ),
limit: 1
} ).done( function ( data ) {
var cargoquery = data.cargoquery;
if ( !cargoquery.length ) {
var editnotice = $( 'body.action-edit #mw-translation-editnotice' );
if ( editnotice.length ) {
editnotice.append( '<br><br>Entrer le nom d’une page pour obtenir le texte correspondant à la dernière révision.<br><div class="oo-ui-widget oo-ui-widget-enabled oo-ui-inputWidget oo-ui-textInputWidget oo-ui-textInputWidget-type-text oo-ui-labelElement" style="width: 40%; display: inline-block"><input type="text" id="mw-translation-editnotice-search" class="oo-ui-inputWidget-input" value="' + mw.config.get( 'wgPageName' ).replace( /_/g, ' ' ).replace( 'Aide:', 'Help:' ).replace( 'Catégorie:', 'Category:' ).replace( 'Modèle:', 'Template:' ) + '"></div><a class="mw-ui-button button" style="min-width: 30px; margin-right: 0.5em" onclick="translationSearch()"><b>></b></a><br><code>{{révision | <span id="mw-translation-editnotice-revision"></span> }}</code>' );
translationSearch();
}
return;
}
translatedRevision = cargoquery[0].title.revision;
sourceApi.get( {
action: 'query',
prop: 'revisions',
revids: translatedRevision
} ).done( function ( data ) {
var page;
for ( var i in data.query.pages ) {
page = data.query.pages[i];
break;
}
sourceApi.get( {
action: 'query',
prop: 'revisions',
pageids: page.pageid
} ).done( function ( data ) {
var lastRevision;
for ( var i in data.query.pages ) {
lastRevision = data.query.pages[i].revisions[0].revid;
break;
}
if ( $( 'body.action-view' ).length )
$( '#firstHeading' ).prepend( lastRevision == translatedRevision ?
'<a target="_blank" rel="noopener noreferrer" href="https://bindingofisaacrebirth.gamepedia.com/index.php?curid=' + page.pageid + '" title="Traduction à jour"><div class="translation-icon translation-icon-uptodate"></div></a>' :
'<a target="_blank" rel="noopener noreferrer" href="https://bindingofisaacrebirth.gamepedia.com/index.php?type=revision&diff=' + lastRevision + '&oldid=' + translatedRevision + '"><div class="translation-icon translation-icon-toupdate"></div></a>'
);
else if ( $( 'body.action-edit' ).length )
$( '#mw-translation-editnotice' )
.css( 'background', lastRevision == translatedRevision ? 'green' : 'darkred' )
.html( lastRevision == translatedRevision ?
'<b>Cette page est à jour.</b><br>Elle est une traduction de la révision <code>' + lastRevision + '</code> de la page <a target="_blank" rel="noopener noreferrer" href="https://bindingofisaacrebirth.gamepedia.com/index.php?title=' + page.pageid + '">' + page.title + '</a>.' :
'<b>Cette page n’est pas à jour.</b><br>Vous pouvez aider en <a target="_blank" rel="noopener noreferrer" href="https://bindingofisaacrebirth.gamepedia.com/index.php?type=revision&diff=' + lastRevision + '&oldid=' + translatedRevision + '">la mettant à jour</a>, puis en remplaçant <code>{{révision | ' + translatedRevision + ' }}</code> par <code>{{révision | ' + lastRevision + ' }}</code> en bas de la page.'
);
} );
} );
} );
function translationSearch() {
var title = $( '#mw-translation-editnotice-search' ).val();
sourceApi.get( {
action: 'query',
prop: 'revisions',
titles: title
} ).done( function ( data ) {
var page;
for ( page in data.pages )
break;
$( '#mw-translation-editnotice-revision' ).html( page === '-1' ? '' : '<a target="_blank" rel="noopener noreferrer" href="https://bindingofisaacrebirth.gamepedia.com/index.php?title=' + title + '&action=edit">' + data.pages[page].revisions[0].revid + '</a>' );
} );
}
// Outdated or untranslated pages table
$( '.mw-translation-list' ).each( function () {
var $table = $( this );
var namespace = $table.attr( 'data-translation-list-ns' ) || 0;
Promise.all( [
apiQueryAllPages( sourceApi, namespace ),
apiQueryAllPages( targetApi, namespace ),
targetApi.get( {
action: 'cargoquery',
tables: 'maintenance',
fields: '_pageName=page,revision',
limit: 500
} ).then( function ( data ) { return data.cargoquery.map( function ( e ) { return e.title; } ); } )
] ).then( function ( data ) {
$( '.mw-translation-list > tbody' ).empty();
Promise.all( data[1]
.map( function ( targetPage ) {
var translationData = data[2].find( function ( page ) { return page.page == targetPage.title; } );
if ( !translationData ) {
$table.append( '<tr class="mw-translation-list-nosource"' + ( $table.hasClass( 'mw-collapsed' ) ? ' style="display: none;"' : '' ) + '><td><a href="https://bindingofisaacrebirth-fr.gamepedia.com/index.php?curid=' + targetPage.pageid + '">' + targetPage.title + '</a></td><td>→</td><td style="color: darkred">☒</td><td style="color: grey">⬾</td><td></td></tr>' );
return;
}
return sourceApi.get( {
action: 'query',
prop: 'revisions',
revids: translationData.revision
} ).then( function ( data ) {
if ( !data.query.pages || data.query.pages[-1] ) {
console.error( 'invalid revision ID ("' + translationData.revision + '") from translation template on page "' + targetPage.title + '"' );
return;
}
var sourcePageID;
for ( sourcePageID in data.query.pages )
break;
var sourcePage = data[0].find( function ( page ) { return page.pageid == sourcePageID; } );
return sourceApi.get( {
action: 'query',
prop: 'info',
pageids: sourcePageID
} ).then( function ( data ) {
var lastSourcePageRevisionID;
for ( var i in data.query.pages ) {
lastSourcePageRevisionID = data.query.pages[i].lastrevid;
break;
}
$table.append( translationData.revision == lastSourcePageRevisionID ? '<tr class="mw-translation-list-uptodate"' + ( $table.hasClass( 'mw-collapsed' ) ? ' style="display: none"' : '' ) + '><td><a href="https://bindingofisaacrebirth-fr.gamepedia.com/index.php?curid=' + targetPage.pageid + '">' + targetPage.title + '</a></td><td>→</td><td style="color: green">☑</td><td>←</td><td><a href="https://bindingofisaacrebirth.gamepedia.com/index.php?curid=' + sourcePage.pageid + '">' + sourcePage.title + '</a></td></tr>' : '<tr class="mw-translation-list-outdated"' + ( $table.hasClass( 'mw-collapsed' ) ? ' style="display: none"' : '' ) + '><td><a href="https://bindingofisaacrebirth-fr.gamepedia.com/index.php?curid=' + targetPage.pageid + '&action=edit">' + targetPage.title + '</a></td><td>→</td><td><a href="https://bindingofisaacrebirth.gamepedia.com/index.php?type=revision&diff=' + lastSourcePageRevisionID + '&oldid=' + translationData.revision + '" style="color: red">☒</a></td><td>←</td><td><a href="https://bindingofisaacrebirth.gamepedia.com/index.php?curid=' + sourcePage.pageid + '">' + sourcePage.title + '</a></td></tr>' );
return sourcePageID;
} );
} );
} )
.filter( function ( query ) { return query; } )
).then( function ( treatedSourcePages ) {
var remainingSourcePages = data[0].filter( function ( page ) { return treatedSourcePages.indexOf( "" + page.pageid ) === -1; } );
for ( var i in remainingSourcePages )
$table.append( '<tr class="mw-translation-list-notarget"' + ( $table.hasClass( 'mw-collapsed' ) ? ' style="display: none;"' : '' ) + '><td></td><td style="color: grey">⥇</td><td style="color: darkred">☒</td><td>←</td><td><a href="https://bindingofisaacrebirth.gamepedia.com/index.php?curid=' + remainingSourcePages[i].pageid + '">' + remainingSourcePages[i].title + '</a></td></tr>' );
} );
} );
} );
function apiQueryAllPages( api, namespace, args, storage ) {
args = args || {
action: 'query',
list: 'allpages',
rawcontinue: true,
aplimit: 500,
apnamespace: namespace
};
return api.get( args ).then( function ( data ) {
storage = storage ? storage.concat( data.query.allpages ) : data.query.allpages;
if ( !data['query-continue'] )
return storage;
for ( var i in data['query-continue'] )
for ( var arg in data['query-continue'][i] )
args[arg] = data['query-continue'][i][arg];
return apiQueryAllPages( api, namespace, args, storage );
} );
}
} );