MediaWiki:Gadget-RevertDiff.js

Attention : Depuis MediaWiki 1.18 les pages se terminant avec l'extension .js ou .css sont interprétées comme des pages wiki ! En particulier les modèles (subst ou non) et les liens. Vous devez donc migrer le code source et effectuer vos changements en évitant ces éléments de syntaxe wiki (peu importe leurs emplacements dans le code source : commentaire, chaine) :

  • Double accolades ouvrantes (en particulier avec subst:) : séparer les deux accolades "{"+"{" du reste de la chaine
  • Double crochets ouvrants : même technique de séparation.
  • Signature (tildes ~ multiples) : même technique de séparation.

Note : après avoir enregistré vos préférences, vous devrez attendre que le serveur mette à jour la feuille de style globale avant de 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 ;
  • Konqueror : Cliquez sur Actualiser ou pressez F5 ;
  • Opera : Videz le cache dans Outils → Préférences.
wgfrwikibooks_Gadget_RevertDiffJsVersion = "20131102001";
/**
 * 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 : 13 septembre 2012 pour le projet Aide et accueil
 * {{w:Projet:JavaScript/Script|RevertDiff}}
 */
//<nowiki>

var RevertDiffParams = new Object();

RevertDiffParams.Text = new Object();
RevertDiffParams.Text.Revert = "Annuler";
RevertDiffParams.Text.RevertResume = 'Révocation des modifications de [[Special:Contributions/$2|$2]] (retour à la précédente version de [[Special:Contributions/$1|$1]])';
RevertDiffParams.Text.Message = "Message";
RevertDiffParams.Text.MessageAlert = 'Quel message faut-il laisser ?';
RevertDiffParams.Text.Warn = "Avertir";


RevertDiffParams.Warn = [ 
  {urlparam:"warn=01", text:"Maladresse",   template:'{{subst:Test 0}}~~'+'~~'},
  {urlparam:"warn=02", text:"Vandalisme",   template:'{{subst:Test 1}}~~'+'~~'},
  {urlparam:"warn=03", text:"Test2",        template:'{{subst:Test 2}}~~'+'~~'},
  {urlparam:"warn=04", text:"Test3",        template:'{{subst:Test 3}}~~'+'~~'},
  {urlparam:"warn=05", text:"Copieur",      template:'{{subst:Copieur}}~~'+'~~'},
  {urlparam:"warn=06", text:"Lien externe", template:'{{subst:Bienvenue spammeur}}~~'+'~~'},
  {urlparam:"warn=07", text:"Faut sourcer", template:'{{subst:Faut sourcer}}~~'+'~~'},
  {urlparam:"warn=08", text:"Bienvenue",    template:'{{subst:Bienvenue nouveau}}~~'+'~~'},
  {urlparam:"warn=09", text:"BienvenueIP",  template:'{{subst:Bienvenue IP}}~~'+'~~'}
];


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;
  }
}

$(function (){
  if (location.href.match(/diff=/)) {
    // Get username of submitter
    var user1TD = getElementsByClass('diff-otitle',null,'td')[0];
    var user2TD = getElementsByClass('diff-ntitle',null,'td')[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').first().text();
    var user2 = $(user2TD).find('a.mw-userlink').first().text();

    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&section=new'
              + '&'+RevertDiffParams.Warn[a].urlparam+'" '
              + 'title="'+RevertDiffParams.Warn[a].template+'" '
              + '>'+RevertDiffParams.Warn[a].text+'</a>';
    }
    Warn += ')';
    document.getElementById('contentSub').innerHTML = Revert + " " + Warn;

  }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))) {
        document.getElementById('wpTextbox1').value = Warn.template;
        document.getElementById('editform').submit();
      }
    }
  }
});
//</nowiki>