Utilisateur:Hulk/timeless.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.util.addPortletLink('p-Cactions', '/wiki/Utilisatrice:Loulla07', 'Demander conseil' )
mw.util.addPortletLink('p-Navigation', '/wiki/Utilisateur:Pro des Maths/Texte/1eraverto', 'Averto gentil');
mw.util.addPortletLink('p-Navigation', '/wiki/Special:NouvellesPages', 'Nouvelles pages', 'n-npgs');
/*
* This script adds a tab which allows a mass patrolling on the current page. Because it was pointless to mark as patrolled 10 intermediate versions when we can read the difference between the first and the last
*/
var totalRevisions;
var treatedRevisions = 0;
if (mw.config.get('wgNamespaceNumber') >= 0) {
mw.loader.using( [ 'mediawiki.util', 'mediawiki.api', 'oojs-ui' ], function() {
mw.util.addPortletLink( 'p-cactions', 'javascript:markAllAsPatrolled()', 'Smart patrol', 'ca-smartpatrol' );
//mw.util.addPortletLink( 'p-views', 'javascript:markAllAsPatrolled()', 'Smart patrol', 'ca-smartpatrol2', 'Tout marquer comme relue', '', 'ca-history' );
} );
}
function markAllAsPatrolled() {
new OO.ui.confirm('Êtes-vous sur de vouloir marquer comme relue toutes les modifications ?').then( function( response ) {
if ( response === true ) {
getRevisionsList();
}
} );
}
function getRevisionsList() {
var api = new mw.Api();
api.get( {
'action': 'query',
'format': 'json',
'prop': 'revisions',
'titles': mw.config.get( 'wgPageName' ),
'formatversion': '2',
'rvprop': 'ids|user',
'rvlimit': 'max'
} ).then( function ( data ) {
var revisions = data.query.pages[ 0 ].revisions;
//var user = revisions[ 0 ].user;
totalRevisions = revisions.length;
revisions.forEach( function ( revision ) {
treatedRevisions++;
//if ( user === revision.user ) {
markRevAsPatrolled( revision.revid );
//}
} );
} ).fail( function ( error ) {
mw.notification.notify( 'Something went wrong: ' + error, { title: 'Smart Patrol', type: 'error' } );
} );
}
function markRevAsPatrolled( revid ) {
var api = new mw.Api();
api.postWithToken( 'patrol', {
'action': 'patrol',
'revid': revid
} ).then( function ( info ) {
console.log( 'Success for ' + revid, { title: 'Smart Patrol', type: 'info' } );
if ( totalRevisions == treatedRevisions ) { window.location.reload(); }
} ).fail( function ( error ) {
console.log( 'Something went wrong: ' + error, { title: 'Smart Patrol', type: 'error' } );
} );
}
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&refix=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";
});
});
mw.loader.load('/w/index.php?title=Utilisateur:Vivi-1/js//AdminMenu.js&action=raw&ctype=text/javascript');
mw.loader.load('/w/index.php?title=Utilisateur:Vivi-1/js/AdminMenu.css&action=raw&ctype=text/css', 'text/css' );
var totalRevisions;
var treatedRevisions = 0;
if (mw.config.get('wgNamespaceNumber') >= 0) {
mw.loader.using( [ 'mediawiki.util', 'mediawiki.api', 'mediawiki.notify', 'oojs-ui' ], function() {
mw.util.addPortletLink( 'p-cactions', 'javascript:markAllAsPatrolled()', 'Smart patrol', 'ca-smartpatrol' );
//mw.util.addPortletLink( 'p-views', 'javascript:markAllAsPatrolled()', 'Smart patrol', 'ca-smartpatrol2', 'Tout marquer comme relue', '', 'ca-history' );
} );
}
function markAllAsPatrolled() {
new OO.ui.confirm('Êtes-vous sur de vouloir marquer comme relue toutes les modifications ?').then( function( response ) {
if ( response === true ) {
getRevisionsList();
}
} );
}
function getRevisionsList() {
var api = new mw.Api();
api.get( {
'action': 'query',
'format': 'json',
'prop': 'revisions',
'titles': mw.config.get( 'wgPageName' ),
'formatversion': '2',
'rvprop': 'ids|user',
'rvlimit': 'max'
} ).then( function ( data ) {
var revisions = data.query.pages[ 0 ].revisions;
//var user = revisions[ 0 ].user;
totalRevisions = revisions.length;
revisions.forEach( function ( revision ) {
treatedRevisions++;
//if ( user === revision.user ) {
markRevAsPatrolled( revision.revid );
//}
} );
} ).fail( function ( error ) {
mw.notification.notify( 'Something went wrong: ' + error, { title: 'Smart Patrol', type: 'error' } );
} );
}
function markRevAsPatrolled( revid ) {
var api = new mw.Api();
api.postWithToken( 'patrol', {
'action': 'patrol',
'revid': revid
} ).then( function ( info ) {
console.log( 'Success for ' + revid, { title: 'Smart Patrol', type: 'info' } );
if ( totalRevisions == treatedRevisions ) { window.location.reload(); }
} ).fail( function ( error ) {
console.log( 'Something went wrong: ' + error, { title: 'Smart Patrol', type: 'error' } );
} );
}
mw.util.addPortletLink( 'p-personal', '/wiki/Spécial:MyPage/Bac_à_sable', 'Mon bac à sable', null, null, null, '#pt-preferences' )
mw.loader.load('https://fr.vikidia.org/w/index.php?title=Utilisateur:Bulest85/lienWP.js&action=raw&ctype=text/javascript');
$('.mw-tag-marker-mobile_edit a').removeAttr('href').css('color', '#222');
$('.mw-tag-marker-visualeditor a').removeAttr('href').css('color', '#222');
$('.mw-tag-marker-visualeditor-switched a').removeAttr('href').css('color', '#222');
mw.util.addPortletLink('p-personal', '/wiki/Vikidia:Boîte_à_idées', 'Boîte à idées')
// [[MediaWiki:Gadget-UserinfoVikidia.js]]
window.UserinfoVikidia = window.UserinfoVikidia || {};
window.UserinfoVikidia.hasTouchScreen = true;
window.UserinfoVikidia.maxScreenWidth = 900;
// LASTCONTRIB
window.lastContribNiveau1 = 180;
window.lastContribNiveau2 = 600;
window.lastContribNiveau3 = 10800;
/** MassRollback
**/
mw.loader.load('//en.wikipedia.org/w/index.php?title=User:Writ_Keeper/Scripts/massRollback.js&action=raw&ctype=text/javascript');
mw.util.addPortletLink('p-Navigation', '/wiki/Vikidia:Coin des relecteurs', 'Coin des relecteurs') ;
mw.loader.load('https://fr.vikidia.org/w/index.php?title=Utilisateur:Vivi-1/js/SmartPatrol.js&action=raw&ctype=text/javascript');
importScript('Utilisateur:Linedwell/quickeditcounter.js'); //affiche sur la PU des utilisateurs leur nombre d'éditions
importScript('Utilisateur:Vivi-1/common.js');
/* common.js de Eliastik - possibilité de reprendre le code (http://www.pokepedia.fr/Utilisateur:Eliastik)
Changelog :
- Depuis Eliastik :
-- Inclusion d'un thème sombre
-- Inclusion d'une fonctionnalité d'actualisation toutes les 20 s
- Depuis N_tonio36 :
-- v1.2.0 : inclut un averto pour vérifier les modifications non patrouillées
-- Réadaptation du thème : amélioration de la visibilité
-- v1.3.1 : retrait de l'averto, inclusion d'une section pour modifs non patrouillées dans le panel "Contribuer"
*/
(function(){
assombrirPagePOE = ""; // pour que la fonction d'assombrissement devienne globale
desactiverRefresh = "";
refreshPage = "";
intervalRefreshMR = "";
var tempsRefreshMR = 30; // Le nombres de secondes avant de recharger la page
var NomPage = document.location.href.substring(document.location.href.lastIndexOf( "/" )+1 );
// Crée une liste d'outils personnels
var elAP = document.createElement("div");
elAP.setAttribute("class", "portal");
elAP.setAttribute("id", "panel-outils-personnels");
elAP.innerHTML = '<h3>Outils personnels</h3><div class="body"><ul id="outilsPersoList"></ul></div>';
document.getElementById("mw-panel").appendChild(elAP);
// assombrir la page - retient le choix
var elAssomPage = document.createElement("li");
elAssomPage.setAttribute("id", "panel-OP-assombrirPage");
elAssomPage.innerHTML = '<a href="#" id="assombrirPageOP" onclick="assombrirPagePOE(\'assombrir\')">Assombrir la page</a>';
document.getElementById("outilsPersoList").appendChild(elAssomPage);
// fonction de cookies pour faire fonctionner l'option "Assombrir la page"
function createCookie(name,value,days) {
if (days) {
var date = new Date();
date.setTime(date.getTime()+(days*24*60*60*1000));
var expires = "; expires="+date.toGMTString();
}
else var expires = "";
document.cookie = name+"="+value+expires+"; path=/";
}
function readCookie(name) {
var nameEQ = name + "=";
var ca = document.cookie.split(';');
for(var i=0;i < ca.length;i++) {
var c = ca[i];
while (c.charAt(0)==' ') c = c.substring(1,c.length);
if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
}
return null;
}
function eraseCookie(name) {
createCookie(name,"",-1);
}
// Rafraîchissement des Modifications récentes
elIndicRefresh = document.createElement("span");
elIndicRefresh.style.fontWeight = 'bold';
elIndicRefresh.setAttribute("id", "labelModRecR");
document.getElementById("contentSub").appendChild(elIndicRefresh);
refreshPage = function() {
if(NomPage.indexOf("Sp%C3%A9cial:Modifications_r%C3%A9centes") != -1) {
elIndicRefresh.innerHTML = 'Les modifications sont rechargées.<a href="#" onclick="desactiverRefresh()">Désactiver</a>.';
intervalRefreshMR = setInterval(function(){ location.reload() }, tempsRefreshMR * 1000);
createCookie("stopRefreshMR", "Non", 3600);
}
}
desactiverRefresh = function() {
if(NomPage.indexOf("Sp%C3%A9cial:Modifications_r%C3%A9centes") != -1) {
createCookie("stopRefreshMR", "Oui", 3600);
elIndicRefresh.innerHTML = 'Les modifications ne sont pas rechargées.<a href="#" onclick="refreshPage()">Réactiver</a>.';
clearInterval(intervalRefreshMR);
}
}
if(readCookie("stopRefreshMR") != "Oui") {
refreshPage();
}
else {
desactiverRefresh();
}
// la fonction d'assombrissement de la page
assombrirPagePOE = function(type) {
if(type == "assombrir") {
createCookie("assombrirPagePO", "Oui", 3600); // crée le cookie
elAssomPage.innerHTML = '<a href="#" id="assombrirPageOP" onclick="assombrirPagePOE(\'eclaircir\')">Éclaircir la page</a>'; // change le lien du gadget
// on boucle tous les éléments pour leur donner un style sombre avec la fonction restyleElement (voir plus bas)
restyleElement("div", "#313139", "#a9aefe");
restyleElement("a", null, "lightblue");
restyleElement("input", "#313139", "#a9aefe");
restyleElement("textarea", "#313139", "#a9aefe");
restyleElement("select", "grey", "#a9aefe");
restyleElement("pre", "#313139", "#a9aefe");
restyleElement("table", "#313139", "#a9aefe");
restyleElement("td", "null", "#a9aefe");
restyleElement("tr", "null", "#a9aefe");
restyleElement("th", "#313139", "#a9aefe");
restyleElement("dl", "#313139", "white");
restyleElement("dd", "#313139", "white");
restyleElement("h1", null, "#a9aefe");
restyleElement("h2", null, "#a9aefe");
restyleElement("h3", null, "#a9aefe");
restyleElement("h4", null, "#a9aefe");
restyleElement("h5", null, "#a9aefe");
restyleElement("h6", null, "#a9aefe");
restyleElement("li", "#313139", "#a9aefe");
restyleElement("ul", "#313139", "#a9aefe");
restyleElement("li", "#313139", "white");
restyleElement("code", "#313139", "#a9aefe");
// style pour la page et le contenu
document.body.style.cssText = "background-color: #313139; color: #a9aefe;";
document.getElementById("content").style.cssText = "background-color: #313139; color: #a9aefe;";
jQuery( function() { $( 'div.vectorTabs span, #p-cactions, div.menu a' ).css( 'background', '#313139' ); } );
jQuery( function() { $( 'div.vectorTabs li.selected span, div.menu li.selected a' ).css( 'background', 'grey' ); } )
var aNewPageNb = document.getElementsByClassName("new");
if(aNewPageNb !== null) {
for (i=0;i<aNewPageNb.length;i++)
{
aNewPageNb[i].style.color = 'lightcoral';
}
}
}
else if(type == "cookieVerif" && readCookie("assombrirPagePO") == "Oui") {
assombrirPagePOE("assombrir"); // on réexecute la fonction
}
else if(type == "eclaircir") {
if(confirm("La modification s’exécutera au prochain rechargement de la page. Continuer ?")) {
createCookie("assombrirPagePO", "Non", 3600); // on supprime le cookie
}
}
}
function restyleElement(type, backgroundColorElem, colorElem) {
var nbElements = document.getElementsByTagName(type);
if(nbElements !== null) {
for (i=0;i<nbElements.length;i++)
{
if(backgroundColorElem !== null) {
nbElements[i].style.backgroundColor = backgroundColorElem;
}
if(colorElem !== null) {
nbElements[i].style.color = colorElem;
}
}
return true;
}
else {
return false;
}
}
var Common_Link = document.createElement("a");
Common_Link.href = "https://fr.vikidia.org/wiki/Utilisateur:Rififi/common.js";
Common_Link.accesskey = "s";
Common_Link.title = "Votre script";
Common_Link.innerHTML = "Common.js";
var LI = document.createElement("LI");
LI.class = "active";
LI.id = "pt-userscript";
LI.appendChild(Common_Link);
$("div#p-personal ul").append(LI);
$("span[dir='auto']").prop("id","PageName");
var Common_Link = document.createElement("a");
Common_Link.href = "https://fr.vikidia.org/wiki/Utilisateur:Rififi/Bac à sable";
Common_Link.accesskey = "s";
Common_Link.title = "Mon bac à sable";
Common_Link.innerHTML = "Bac à Sable";
var LI = document.createElement("LI");
LI.class = "active";
LI.id = "pt-userscript";
LI.appendChild(Common_Link);
$("div#p-personal ul").append(LI);
$("span[dir='auto']").prop("id","PageName");
var Common_Link = document.createElement("a");
Common_Link.href = "https://fr.vikidia.org/wiki/Utilisateur:Rififi/Bac à sable 2";
Common_Link.accesskey = "s";
Common_Link.title = "Mon bac à sable de modèle";
Common_Link.innerHTML = "Bac à Sable 2";
var LI = document.createElement("LI");
LI.class = "active";
LI.id = "pt-userscript";
LI.appendChild(Common_Link);
$("div#p-personal ul").append(LI);
$("span[dir='auto']").prop("id","PageName");
var Unseen = document.createElement("a");
Unseen.href = "http://fr.vikidia.org/wiki/Projet:Maintenance";
Unseen.innerHTML = "Maintenance générale";
var UnseenLI = document.createElement("LI");
UnseenLI.appendChild(Unseen);
$("#p-Contribuer .body ul").append(UnseenLI);
$("#wpSummary").prop("autocomplete","off");
}());
assombrirPagePOE("cookieVerif"); // vérification du cookie
/**
* Outils pour réverter
*
* fournit des liens dans les pages de diff pour révoquer facilement une modification et avertir son auteur
*
* Auteurs : Lorian (en), Chphe (fr)
* Dernière révision : 27 décembre 2013 — séparation des annulations et révocations
* {{Projet:JavaScript/Script|RevertDiff}}
*/
//<nowiki>
var RevertDiffParams = new Object();
RevertDiffParams.Text = new Object();
RevertDiffParams.Text.Annul = "Restaurer";
RevertDiffParams.Text.AnnulResume = 'Restauration';
RevertDiffParams.Text.Message = "Message";
RevertDiffParams.Text.MessageAlert = 'Raison:';
RevertDiffParams.Text.Revert = "Révoquer";
RevertDiffParams.Text.RevertResume = 'Révocation des modifications de [[Special:Contributions/$2|$2]], retour à la version de [[Special:Contributions/$1|$1]]';
RevertDiffParams.Text.Warn = "Avertir";
RevertDiffParams.Warn = [
{urlparam:"warn=01", text:"Averto-0", template:'{{subst:Averto-0}}~~~~'},
{urlparam:"warn=10", text:"nouveau", template:'{{Bienvenue}}~~~~ {{SUBST:Averto-0}}~~~~'},
{urlparam:"warn=02", text:"Averto-1", template:'{{subst:Aveto-1}}~~~~'},
{urlparam:"warn=06", text:"Spam0", template:'{{subst:Averto-spam-0}}~~~~'},
{urlparam:"warn=10", text:"nouveau", template:'{{Bienvenue}}~~~~ {{SUBST:Averto-spam-0}}~~~~'},
{urlparam:"warn=07", text:"Spam1", template:'{{subst:Averto-spam-1}}~~~~'},
{urlparam:"warn=08", text:"Bienvenue", template:'{{Bienvenue}}~~~~'},
{urlparam:"warn=09", text:"BienvenueIP", template:'{{Bienvenue IP}}~~~~'},
{urlparam:"warn=10", text:"Bac à sable", template:'{{SUBST:Utilisateur:Rififi2}}~~~~'},
{urlparam:"warn=10", text:"nouveau", template:'{{Bienvenue}}~~~~ {{SUBST:Utilisateur:Rififi2}}~~~~'}
];
function getURLParameters(x) {
var questionMark = x.indexOf('?');
if (questionMark == -1) return {}
var fieldsArray = x.substr(questionMark + 1).split('&');
var fields = {}
for (var i = 0; i < fieldsArray.length; i++) {
var field = fieldsArray[i];
var equal = field.indexOf('=');
if (equal == -1) {
fields[decodeURIComponent(field)] = '';
} else {
fields[decodeURIComponent(field.substr(0, equal))] =
decodeURIComponent(field.substr(equal + 1));
}
}
return fields;
}
_GET = getURLParameters(location.href);
function getMessage (chemin, where, user1, user2) {
var message = prompt (RevertDiffParams.Text.MessageAlert, '');
if (message) {
window.location = chemin + '&'+where+'=2&user1='+user1+'&user2='+user2+'&message='+message;
}
}
$(document).ready(function (){
if (location.href.match(/diff=/)) {
// Get username of submitter
var user1TD = $('td.diff-otitle')[0];
var user2TD = $('td.diff-ntitle')[0];
if(!user1TD || !user2TD) return;
// Récupération du chemin vers la version à rétablir
var chemin = encodeURI(user1TD.getElementsByTagName('a')[1].href);
var user1 = $(user1TD).find('a.mw-userlink')[0].innerHTML;
var user2 = $(user2TD).find('a.mw-userlink')[0].innerHTML;
var Annul = '('
+ '<a href="'+chemin+'&annul=1&user1='+user1+'&user2='+user2+'">'+RevertDiffParams.Text.Annul+'</a>'
+ ' / '
+ '<a href="javascript:getMessage(\''+chemin+'\',\'annul\',\''+user1+'\',\''+user2+'\');">'+RevertDiffParams.Text.Message+'</a>'
+ ')';
var Revert = '('
+ '<a href="'+chemin+'&revert=1&user1='+user1+'&user2='+user2+'">'+RevertDiffParams.Text.Revert+'</a>'
+ ' / '
+ '<a href="javascript:getMessage(\''+chemin+'\',\'revert\',\''+user1+'\',\''+user2+'\');">'+RevertDiffParams.Text.Message+'</a>'
+ ')';
var Warn = '('+RevertDiffParams.Text.Warn+' : ';
var SiteURL = mw.config.get('wgServer') + mw.config.get('wgScript') + '?title=';
for(var a=0,l=RevertDiffParams.Warn.length;a<l;a++){
if(a!=0) Warn += ' / ';
Warn += '<a href="'+SiteURL+'User_talk:'+user2+'&action=edit§ion=new'
+ '&'+RevertDiffParams.Warn[a].urlparam+'" '
+ 'title="'+RevertDiffParams.Warn[a].template+'" '
+ '>'+RevertDiffParams.Warn[a].text+'</a>';
}
Warn += ')';
document.getElementById('contentSub').innerHTML = Annul + " " + Revert + " " + Warn;
}else if (location.href.match(/annul=1/)) {
document.getElementById('wpSummary').value = RevertDiffParams.Text.AnnulResume.split("$1").join(_GET['user1']).split("$2").join(_GET['user2']);
document.getElementById('editform').submit();
}else if (location.href.match(/annul=2/)) {
document.getElementById('wpSummary').value =
RevertDiffParams.Text.AnnulResume.split("$1").join(_GET['user1']).split("$2").join(_GET['user2']) + ' : '+_GET['message'];
document.getElementById('editform').submit();
}else if (location.href.match(/revert=1/)) {
document.getElementById('wpSummary').value = RevertDiffParams.Text.RevertResume.split("$1").join(_GET['user1']).split("$2").join(_GET['user2']);
document.getElementById('editform').submit();
}else if (location.href.match(/revert=2/)) {
document.getElementById('wpSummary').value =
RevertDiffParams.Text.RevertResume.split("$1").join(_GET['user1']).split("$2").join(_GET['user2']) + ' : '+_GET['message'];
document.getElementById('editform').submit();
}else{
for(var a=0,l=RevertDiffParams.Warn.length;a<l;a++){
var Warn = RevertDiffParams.Warn[a];
if (location.href.match(new RegExp(Warn.urlparam))) {
var Template = Warn.template;
Template = Template.split('$page').join(''); // mw.config.get('wgPageName').replace(/_/g, " "));
Template = Template.split('$user').join(mw.config.get('wgUserName'));
document.getElementById('wpTextbox1').value = Template;
document.getElementById('editform').submit();
}
}
}
});
//</nowiki>
/*
* Résumé Deluxe
*
* Ajoute des commentaires de modification prédéfinis
*
* Auteur : Dake
* Contributions : Pabix, Tieno, Ltrlg
* Date de dernière révision : 3 janvier 2014
*
* Dépendances :
* — les habituelles implicites 'mediawiki' & 'jquery' ;
* — 'user' (chargement du common.js).
*
* {{Projet:JavaScript/Script|ResumeDeluxe}}
*/
var
/*
* Vérifier la présence d’un titre de section _ou_ de la chaîne
* 'Introduction : ' ; cette dernière est ajoutée par
* [[MediaWiki:Gadget-EditZeroth.js]] (avec quelques variations possibles
* pour ceux qui le retaperaient à la main).
* Cela permet de n’ajouter un séparateur ' ; ' entre deux résumés que si
* nécessaire.
* Note : on ne vérifie que le fait que le motif est en fin de chaîne, pas
* en début.
*/
sansPointVirgule = /(\*\/\s*|Introduction\s?:\s?)$/,
/*
* La liste des liens qui seront affichés.
* Les éléments du tableau sont d’une des deux formes suivantes :
* — [ 'lien' , 'resume' ]
* — 'texte'
* où 'lien' représente l’intitulé du lien, 'resume' le résumé d’édition
* inséré par le lien et 'texte' les deux à la fois.
*/
listeLiens = [],
/*
* Liens affichés par défaut, même format que listeLiens.
*/
liensParDefaut = [
'orthographe',
'typographie',
'catégorisation',
'wikification',
'image',
'mise en forme',
'avancement',
'mise en page',
'redirection',
'relecture',
'style',
'revert',
'réorganisation',
'réponse',
'nouveau message',
'maintenance',
['homonymie', 'création homonymie'],
['bandeau', 'ajout de bandeau'],
'infobox',
'références',
'retouche de la modification précédente'
],
/*
* Objet permettant de désactiver des liens (parmi la liste par défaut
* ci-avant), sous la forme { 'lien1': false, 'lien2': false, … } où
* 'lien1', 'lien2'… est l’intitulé du lien à ne pas afficher.
*/
liensAffiches = window.ResumeDeluxe_affiches || {},
/*
* Objet jQuery contenant l’<input> ou le <textarea> constituant le résumé
*/
$resume,
/*
* Objet jQuery contenant la liste de liens
*/
$liste;
/*
* Fonction renvoyant l’intitulé d’un lien à partir de sa représentation sous
* forme de tableau ou de chaîne.
*/
function texteDuLien( definition ) {
if ( $.isArray( definition ) ) {
return definition[0];
} else {
// Soyons sûr d’avoir une chaîne de caractères
return definition.toString();
}
}
/*
* Fonction renvoyant le texte ajouté par un lien à partir de sa représentation
* sous forme de tableau ou de chaîne.
*/
function resumeAInserer( definition ) {
if ( $.isArray( definition ) ) {
return definition[1];
} else {
// Soyons sûr d’avoir une chaîne de caractères.
return definition.toString();
}
}
/*
* Procédure transformant l’ancien format de configuration pour la
* compatibilité.
*/
function transformerAncienneConfiguration() {
var i;
if (
// Appliqué seulement si le nouveau format n’existe pas
! $.isArray( window.ResumeDeluxe_liens ) &&
// Les deux tableaux doivent exister
$.isArray( window.resumedeluxeTitles ) &&
$.isArray( window.resumedeluxeInputs ) &&
// Les deux tableaux doivent avoir la même longueur
window.resumedeluxeTitles.length == window.resumedeluxeInputs.length
) {
window.ResumeDeluxe_liens = [];
for ( i = 0; i < window.resumedeluxeTitles.length; i++ ) {
window.ResumeDeluxe_liens.push( [
window.resumedeluxeTitles[i].replace( /^.\s+/, '' ),
window.resumedeluxeInputs[i]
] );
}
}
}
/*
* Procédure appliquant les préférences de l’utilisateur :
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&refix=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";
});
});
* — si l’utilisateur a défini window.ResumeDeluxe_liens, celui-ci est utilisé
* à la place de la liste par défaut liensParDefaut ;
* — sinon si l’utilisateur a défini window.ResumeDeluxe_affiches, les règles
* de désactivation sont appliquées ;
* — sinon liensAffiches est un objet vide, donc la liste par défaut est
* utilisée.
*/
function appliquerConfiguration() {
var i, cle;
if ( $.isArray( window.ResumeDeluxe_liens ) ) {
listeLiens = window.ResumeDeluxe_liens;
} else {
for ( i = 0; i < liensParDefaut.length; i++ ) {
cle = texteDuLien( liensParDefaut[i] );
if ( liensAffiches[cle] !== false ) {
listeLiens.push( liensParDefaut[i] );
}
}
}
}
/*
* Procedure effectuant l’ajout d’une chaîne au résumé d’édition, avec un
* séparateur si besoin
*/
function ajouterAuResume( chaine ) {
var resumeActuel = $resume.val();
if ( resumeActuel === '' ) {
$resume.val( chaine );
} else if ( sansPointVirgule.test( resumeActuel ) ) {
$resume.val( resumeActuel + chaine );
} else {
$resume.val( resumeActuel + ' ; ' + chaine );
}
// L’ÉditeurVisuel ne se base plus sur le contenu mais sur l’évènement
$resume.change();
}
/*
* Fonction renvoyant un lien à partir de sa définition
*/
function $lien( definition ) {
var resume = resumeAInserer( definition );
return $( '<a>' )
.text( texteDuLien( definition ) )
.attr( {
href: '#',
title: 'Ajouter «\xA0' + resume + '\xA0» au résumé de modification'
} )
.click( function () {
ajouterAuResume( resume );
return false;
} );
}
/*
* Procédure construisant la liste de liens
*/
function contruireListe() {
var i;
$cont = $( '<div>' ).attr( 'id', 'ResumeDeluxe' )
.text( 'Messages prédéfinis\xA0: ' )
.append( $lien( listeLiens[0] ) );
for( i = 1; i < listeLiens.length; i++ ) {
$cont
.append( document.createTextNode( '\xA0• ' ) )
.append( $lien( listeLiens[i] ) );
}
}
/*
* Procédure initialisant $resume et insérant la liste de liens dans le cas de
* l’éditeur de wikicode, quand les nœuds nécessaires sont en place.
*/
function demarrer_wikicode() {
$( document ).ready( function () {
$( '#wpSummaryLabel' ).before( $cont );
$resume = $( '#wpSummary' );
});
}
/*
* Procédure initialisant $resume et insérant la liste de liens dans le cas de
* l’ÉditeurVisuel, quand les nœuds nécessaires sont en place.
*/
function demarrer_EditeurVisuel() {
mw.hook( 've.saveDialog.stateChanged' ).add( function () {
/*
* Traitement : si le dialogue a été recréé, on y remet ce qu’il faut.
* TODO Vérifier si cette vérification est encore nécessaire.
*/
if ( $( '#ResumeDeluxe' ).size() < 1 ) {
$( '#MediaWiki-summary' ).after( $cont );
$resume = $( '.ve-ui-mwSaveDialog-summary textarea' );
}
});
}
/*
* Procédure qui détermine quel éditeur peut être utilisé et démarre le gadget
* selon le résultat.
*/
function demarrer() {
switch( mw.config.get( 'wgAction' ) ) {
case 'edit':
case 'submit':
// Désactivé pour la création de sections
if ( ! /(\?|&)section=new(&|$)/.test( document.location.search ) ) {
demarrer_wikicode();
}
break;
case 'view':
demarrer_EditeurVisuel();
break;
}
}
/*
* Démarrage du tout
*/
// Compatibilité avec l’ancien format de configuration
transformerAncienneConfiguration();
// Lecture des préférences
appliquerConfiguration();
// Construction de la liste des liens
contruireListe();
// Insère la liste dans l’arbre des nœuds et cherche le nœud contenant le résumé
demarrer();