Communauté  • Livre d'or
Chats noirs.jpg Actualités, astuces, interview... Venez lire la gazette de ce printemps de Vikidia ! DessinInterview.png

Utilisateur:Chabir/common.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.

mw.loader.load('https://fr.vikidia.org/w/index.php?title=Utilisateur:Vivi-1/js/SmartPatrol.js&action=raw&ctype=text/javascript');
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 = '{{vikibreak|pas là|texte à déterminer}}';
}
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 );
} );
} );
}
// Basé sur [[wp:en:User:Fran Rogers/dimorphism.js]] et [[wp:en:User:Splarka/sysopdectector.js]] ;
// Modifié et retravaillé par Bulest85 et Matteo1234321 ;
// Traduction en --> fr par Matteo1234321.
// Fonction qui met au pluriel au besoin.
function UserinfoJsFormatQty(qty, singular, plural) {
return String(qty).replace(/\d{1,3}(?=(\d{3})+(?!\d))/g, "$& ") + "\u00a0" + (qty == 1 ? singular : plural);
}
// Afficher les infos utilisateur seulement sur la page utilisteur et de discussion dudit utilisateur...
if((mw.config.get("wgNamespaceNumber") == 2 || mw.config.get("wgNamespaceNumber") == 3) && !(/\//.test(mw.config.get("wgTitle")))) {
// Ajouter un crochet...
mw.loader.using( ['mediawiki.util'], function() { $(function(){
// Demander les informations de l'utilisateur via l'API.
// Noter que ceci est autorisé jusqu'à l'âge de 5 minutes [traduction douteuse].
var et = encodeURIComponent(mw.config.get("wgTitle"));
$.getJSON(mw.config.get("wgScriptPath") + "/api.php?format=json&action=query&list=users|usercontribs&usprop=blockinfo|editcount|gender|registration|groups&uclimit=1&ucprop=timestamp&ususers=" + et + "&ucuser=" + et + "&meta=allmessages&amprefix=grouppage-&amincludelocal=1")
.done(function(query) {
// Quand l'information arrive, extrayons-en celes dont on a besoin.
if(!query.query) { return; } // Suggéré [[wp:en:User:Gary]] pour éviter les erreurs JavaScript. --PS 25.08.2010
query = query.query;
var user, invalid, missing, groups, groupPages={}, editcount, registration, blocked, gender, lastEdited;
try {
user = query.users[0];
invalid = typeof user.invalid != "undefined";
missing = typeof user.missing != "undefined";
groups = (typeof user.groups == "object") ? user.groups : [];
editcount = (typeof user.editcount == "number") ? user.editcount : null;
registration = (typeof user.registration == "string") ?
new Date(user.registration) : null;
blocked = typeof user.blockedby != "undefined";
gender = (typeof user.gender == "string") ? user.gender : null;
lastEdited = (typeof query.usercontribs[0] == "object") &&
(typeof query.usercontribs[0].timestamp == "string") ?
new Date(query.usercontribs[0].timestamp) : null;
for (var am=0; am<query.allmessages.length; am++) {
groupPages[query.allmessages['am']['name'].replace("grouppage-","")] = query.allmessages[am]["*"].replace("{{ns:project}}:","Project:");
}
} catch(e) {
return; // Pas beaucoup à faira quand le serveur renvoie une erreur (par exemple le nom de l'utilisateur est mal formé)...
}
// Dernière modification --PS 27.06.2010
// Ajout d'un lien à la page de contributions --PS 3.07.2010
if(lastEdited) {
statusText += " Dernière modification il y a <a href=\"" + mw.config.get("wgArticlePath").replace("$1", "Spécial:Contributions/" + encodeURIComponent(user.name)) + "\">" + UserinfoJsFormatDateRel(lastEdited) + "</a>";
}
genderSpan.appendChild(document.createTextNode(genderSymbol));
fh.appendChild(genderSpan);
// Maintenant, ajouter les autres informations. Pas standardes (?), mais au moins, elles font le taf ^^.
// Ajouter un point après le texte en faisant ainsi. --PS 3.07.2010
var ss = document.getElementById("siteSub");
if(!ss) {
ss = document.createElement("div");
ss.id = "siteSub";
ss.innerHTML = "";
var bc = document.getElementById("bodyContent");
bc.insertBefore(ss, bc.firstChild);
}
ss.innerHTML = '<span id="ps-userinfo">' + statusText + '</span>' + ss.innerHTML + '.';
ss.style.display = "block";
});
});