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.
$.when(
mw.loader.using( [ 'mediawiki.api', 'mediawiki.ForeignApi' ] ),
$.ready
).then( function () {
/** @type {JQuery} */
var $searchInput;
/** @type {JQuery} */
var $resultText;
/** @type {string} */
var translatedRevision;
/** @type {string} */
var lastRevision;
/** @type {{ pageid: string, title: string }} */
var sourcePage;
var sourceWikiRoot = 'https://bindingofisaacrebirth.gamepedia.com',
sourceApi = new mw.ForeignApi( sourceWikiRoot + '/api.php' ),
targetApi = new mw.Api();
targetApi.get( {
action: 'cargoquery',
tables: 'maintenance',
fields: 'revision',
where: '_pageID=' + mw.config.get( 'wgArticleId' ),
limit: 1
} ).done( onCargoQueryFetch );
/**
* @param {{ cargoquery: { title: { revision: string } }[] }} data
*/
function onCargoQueryFetch( data ) {
var cargoquery = data.cargoquery;
if ( cargoquery.length ) {
translatedRevision = cargoquery[ 0 ].title.revision;
sourceApi.get( {
action: 'query',
prop: 'revisions',
revids: translatedRevision
} ).done( onSourcePageFetch );
return;
}
var $editnotice = $( 'body.action-edit #translation-editnotice' );
if ( !$editnotice.length ) {
return;
}
var sourcePageTitle = mw.config.get( 'wgPageName' )
.replace( /_/g, ' ' )
.replace( 'Aide:', 'Help:' )
.replace( 'Catégorie:', 'Category:' )
.replace( 'Modèle:', 'Template:' ),
pageTitleInput = new OO.ui.TextInputWidget( {
id: 'translation-editnotice-search',
placeholder: 'Page du wiki anglais',
value: sourcePageTitle
} );
$searchInput = pageTitleInput.$element.children( 'input' ).first();
$resultText = $( '<span>' ).attr( 'id', 'translation-editnotice-revision' );
pageTitleInput.on( 'enter', translationSearch );
$editnotice.append(
'<br><br>Entrer le nom d’une page du wiki anglais pour obtenir le texte ' +
'correspondant à la dernière révision.'
);
$editnotice.append( pageTitleInput.$element );
$editnotice.append( '<code>{{révision | ' );
$editnotice.append( $resultText );
$editnotice.append( ' }}</code>' );
translationSearch();
}
/**
* @param {{ query: { pages: { pageid: string, title: string }[] } }} data
*/
function onSourcePageFetch( data ) {
var pages = data.query.pages;
for ( var i in pages ) {
sourcePage = pages[ i ];
break;
}
if ( !sourcePage ) {
return;
}
sourceApi.get( {
action: 'query',
prop: 'revisions',
pageids: sourcePage.pageid
} ).done( onNewSourceRevisionsFetch );
}
/**
* @param {{ query: { pages: { revisions: { revid: string }[] }[] } }} data
*/
function onNewSourceRevisionsFetch( data ) {
var pages = data.query.pages,
$link = $blankLink();
for ( var i in pages ) {
lastRevision = pages[ i ].revisions[ 0 ].revid;
break;
}
if ( $( 'body.action-view' ).length ) {
if ( lastRevision == translatedRevision ) {
$link
.attr( {
href: sourceWikiRoot + '/index.php?curid=' + sourcePage.pageid,
title: 'Traduction à jour'
} )
.html( '<div class="translation-icon translation-icon-uptodate"></div>' );
} else {
$link
.attr( {
href: sourceWikiRoot + '/index.php?type=revision&diff=' + lastRevision +
'&oldid=' + translatedRevision
} )
.html( '<div class="translation-icon translation-icon-toupdate"></div>' );
}
$link.prependTo( '#firstHeading' );
} else if ( $( 'body.action-edit' ).length ) {
var $editnotice = $( '#translation-editnotice' ).empty().append( $link );
if ( lastRevision == translatedRevision ) {
$link
.attr( 'href', sourceWikiRoot + '/index.php?curid=' + sourcePage.pageid )
.html( sourcePage.title );
$editnotice
.css( 'background', 'green' )
.prepend(
'<b>Cette page est à jour.</b><br>Elle est une traduction de la révision ' +
'<code>' + lastRevision + '</code> de la page '
)
.append( '.' );
} else {
$link
.attr(
'href',
sourceWikiRoot + '/index.php?type=revision&diff=' + lastRevision +
'&oldid=' + translatedRevision
)
.html( 'la mettant à jour' );
$editnotice
.css( 'background', 'darkred' )
.prepend( '<b>Cette page n’est pas à jour.</b><br>Vous pouvez aider en ' )
.append(
', puis en remplaçant <code>{{révision | ' + translatedRevision + ' }}' +
'</code> par <code>{{révision | ' + lastRevision + ' }}</code> en bas ' +
'de la page.'
);
}
}
}
function translationSearch() {
sourceApi.get( {
action: 'query',
prop: 'revisions',
titles: $searchInput.val()
} ).done( onTranslationSearchFetch );
}
/**
* @param {{ query: { pages: { [ key: string ]: { revisions: { revid: string }[] } } } }} data
*/
function onTranslationSearchFetch( data ) {
var page = '-1',
pages = data.query.pages;
for ( page in pages ) {
break;
}
$resultText.empty();
if ( page === '-1' ) {
return;
}
var $revision = $blankLink()
.attr(
'href',
sourceWikiRoot + '/index.php?title=' + $searchInput.val() + '&action=edit'
)
.html( pages[ page ].revisions[ 0 ].revid );
$resultText.append( $revision );
}
/**
* Creates a link to a new tab or window.
* @returns a JQuery object representing the link.
*/
function $blankLink() {
return $( '<a>' ).attr( {
target: '_blank',
rel: 'noopener noreferrer'
} );
}
} );