Utilisateur:Hulk/vector-2022.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 :
* — 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();