Utilisateur:Petit Chaton/en-travaux.js
Aller à la navigation
Aller à la recherche
Note : après avoir enregistré tes préférences, tu devras forcer le rechargement complet du cache de ton navigateur pour voir les changements. Mozilla Firefox / Safari : maintiens la touche Majuscule (Shift) en cliquant sur le bouton Actualiser (Reload) ou presse Maj-Ctrl-R (Maj-Cmd-R sur Apple Mac) ; Internet Explorer / Opera : maintiens la touche Ctrl en cliquant sur le bouton Actualiser ou presse Ctrl-F5.
if ( mw.config.get( 'wgArticleId' ) > 0 && (mw.config.get( 'wgAction' ) === 'view' || mw.config.get( 'wgAction' ) === 'edit') ) {
$.when( mw.loader.using( [ 'mediawiki.api', 'mediawiki.util', 'user' ] ), $.ready ).done( function () {
// Les temps sont en secondes,
// et personnalisables via le JavaScript utilisateur, e.g. : window.lastContribNiveau1 = 120;
var alertLevels = {
1: typeof lastContribNiveau1 !== 'undefined' ? lastContribNiveau1 : 30 * 60, // Niveau d'alerte fort
};
function lastContribCallback( timestampLastRevision ) {
var last = new Date( timestampLastRevision );
var now = new Date();
var diff = Math.round( ( now - last ) / 1000 );
if ( diff < -600 ) {
mw.notify( "Erreur probable dans la concordance des horloges serveur-client. Vérifiez l'exactitude de l'heure de votre ordinateur et le fuseau horaire utilisé dans vos préférences globales wiki.", {
autoHide: true,
title: 'Gadget LastContrib',
type: 'error'
} );
return;
}
if ( diff < 0 ) {
diff = 0;
}
if ( diff <= alertLevels[ 3 ] ) {
var $contentSub = $( '#contentSub' );
if ( !$contentSub.length ) { return; }
var diffHeures = Math.floor( diff / 3600 );
var diffMinutes = Math.floor( ( diff - diffHeures * 3600 ) / 60 );
var diffSecondes = diff - diffHeures * 3600 - diffMinutes * 60;
var icon;
if ( diff <= alertLevels[ 1 ] ) {
icon = '{{En travaux|Petit Chaton}}';
}
var ellapsed = ( diffHeures > 0 ? diffHeures + ' h ' : '' ) + ( diffMinutes > 0 ? diffMinutes + ' min ' : '' ) + diffSecondes + ' sec';
var $link = $( '<a href="' + mw.util.getUrl( null, {
action: 'history'
} ) + '" style="font-size:8pt; color:#545454;">' + last.toLocaleTimeString() + ' (Dernière modification il y a ' + ellapsed + '.) </a> ' );
$contentSub.prepend( icon, $link );
}
}
new mw.Api()
.get( {
'action': 'query',
'prop': 'revisions',
'titles': mw.config.get( 'wgPageName' ),
'rvprop': 'timestamp',
'formatversion': 2
} )
.then( function ( data ) {
var page = data.query.pages[ 0 ];
lastContribCallback( page.revisions[ 0 ].timestamp );
} )
.fail( function ( error, details ) {
// L'objet Promise échoue quand l'utilisateur quitte la page avant que la requête soit achevée.
if ( details && details.xhr && details.xhr.readyState < 4 ) {
return;
}
mw.notify( "Erreur rencontrée lors de la requête à l'API.", {
autoHide: true,
title: 'Gadget LastContrib',
type: 'error'
} );
console.log( error, details );
} );
} );
}