Binding of Isaac: Rebirth Wiki
Advertisement

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>&gt;</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 );
        } );
    }
} );
Advertisement