Utilisateur:Dr Brains/RevertDiff.js

Une page de Wikipédia, l'encyclopédie libre.
Note : après avoir enregistré la page, vous devrez forcer le rechargement complet du cache de votre navigateur pour voir les changements.

Mozilla / Firefox / Konqueror / Safari : maintenez la touche Majuscule (Shift) en cliquant sur le bouton Actualiser (Reload) ou pressez Maj-Ctrl-R (Cmd-R sur Apple Mac) ;

Chrome / Internet Explorer / Opera : maintenez la touche Ctrl en cliquant sur le bouton Actualiser ou pressez Ctrl-F5.
/**
 * 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
 * {{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.RevertPerso = "Résumé personnalisé";
RevertDiffParams.Text.WarnResume = "Message";
RevertDiffParams.Text.WarnPerso = "Message personnalisé";
RevertDiffParams.Text.MessageAlert = 'Quel message faut-il laisser ?';

RevertDiffParams.Text.Warn = "Message à $2";

RevertDiffParams.Split = true;

RevertDiffParams.Revert = [
    { urlparam:"revert=01", text:"Bac à sable" , resume:"[[Wikipédia:Bac à sable|Bac à sable]]" },
    { urlparam:"revert=02", text:"Vandalisme"  , resume:"[[Wikipédia:Vandalisme|Vandalisme]]"   },
    { urlparam:"revert=03", text:"Non-sourcé"  , resume:"Retrait d’information non sourcée"     },
    { urlparam:"revert=04", text:"Trad auto"   , resume:"Traduction automatique"                }
];


RevertDiffParams.Warn = [ 
  {urlparam:"warn=01", text:"Maladresse",   resume:"test 0",             template:'{{subst:Test 0}} ~~~~'},
  {urlparam:"warn=02", text:"Vandalisme",   resume:"test 1",             template:'{{subst:Test 1}} ~~~~'},
  {urlparam:"warn=03", text:"Test2",        resume:'test 2',             template:'{{subst:Test 2}} ~~~~'},
  {urlparam:"warn=04", text:"Test3",        resume:'test 3',             template:'{{subst:Test 3}} ~~~~'},
  {urlparam:"warn=05", text:"Test4",        resume:'seul avertissement', template:'{{subst:Seul avertissement}} ~~~~'},
  {urlparam:"warn=06", text:"Lien externe", resume:"spammeur",           template:'{{subst:Bienvenue spammeur}} ~~~~'},
  {urlparam:"warn=07", text:"Faut sourcer", resume:"sources",            template:'{{subst:Faut sourcer}} ~~~~'},
  {urlparam:"warn=08", text:"Bienvenue",    resume:"bienvenue nouveau",  template:'{{Bienvenue nouveau|sign=~~~~}}'},
  {urlparam:"warn=09", text:"BienvenueIP",  resume:"bienvenue IP",       template:'{{Bienvenue IP|sign=~~~~}}'},
  {urlparam:"warn=10", text:"MerciIP",      resume:"IP méritante",       template:'{{Bienvenue IP méritante|sign=~~~~}}'}
];


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(URL, where) {
  var message = prompt(RevertDiffParams.Text.MessageAlert, '');
  if(message){
    window.location = URL + '&'+where+'&message='+encodeURIComponent(message);
  }
}

mw.loader.load('//fr.wikipedia.org/w/index.php?title=MediaWiki:Gadget-RevertDiff.css&action=raw&ctype=text/css', 'text/css');

$(function (){
  if (location.href.match(/diff=/)) {
    // Get username of submitter
    var username1TD = $('td.diff-otitle')[0];
    var username2TD = $('td.diff-ntitle')[0];
    if(!username1TD || !username2TD) return;

    var username1 = encodeURIComponent($(username1TD).find("a.mw-userlink").first().text());
    var username2 = encodeURIComponent($(username2TD).find("a.mw-userlink").first().text());

    var Revert = '<span class="RevertDiffMenuAnchor">('+RevertDiffParams.Text.Revert + '<span class="RevertDiffMenu"> : ';
    var RevertURL = encodeURI(username1TD.getElementsByTagName('a')[1].href)
                  + '&username1='+username1+'&username2='+username2;
    for(var a=0,l=RevertDiffParams.Revert.length;a<l;a++){
        if(a!=0) Revert += ' / ';
        Revert += '<a href="'+RevertURL+'&'+RevertDiffParams.Revert[a].urlparam+'" '
                + '>'+RevertDiffParams.Revert[a].text+'</a>'
    }
    Revert += ' / '
            + '<a id="RevertDiff_RevertPerso" href="javascript:getMessage(\''+RevertURL+'\',\'revert=perso\');" '
            + '>'+RevertDiffParams.Text.RevertPerso+'</a>';
    Revert += '</span>)</span>';

    var WarnUser1 = '<span class="RevertDiffMenuAnchor">('+RevertDiffParams.Text.Warn.split("$2").join(decodeURIComponent(username1))+'<span class="RevertDiffMenu"> : ';
    var WarnUser1URL = mw.config.get('wgServer') + mw.config.get('wgScript') + '?title=User_talk:'+username1+'&action=edit&section=new'
                + '&username1='+username1+'&username2='+username2;
    for(var a=0,l=RevertDiffParams.Warn.length;a<l;a++){
        if(a!=0) WarnUser1 += ' / ';
        WarnUser1 += '<a href="'+WarnUser1URL + '&'+RevertDiffParams.Warn[a].urlparam+'" '
                   + 'title="'+RevertDiffParams.Warn[a].template+'" '
                   + '>'+RevertDiffParams.Warn[a].text+'</a>';
    }
    WarnUser1 += ' / '
          + '<a id="RevertDiff_WarnPerso" href="javascript:getMessage(\''+WarnUser1URL+'\',\'warn=perso\');" '
          + '>'+RevertDiffParams.Text.WarnPerso+'</a>';
    WarnUser1 += '</span>)</span>';

    var WarnUser2 = '<span class="RevertDiffMenuAnchor">('+RevertDiffParams.Text.Warn.split("$2").join(decodeURIComponent(username2))+'<span class="RevertDiffMenu"> : ';
    var WarnUser2URL = mw.config.get('wgServer') + mw.config.get('wgScript') + '?title=User_talk:'+username2+'&action=edit&section=new'
                + '&username1='+username1+'&username2='+username2;
    for(var a=0,l=RevertDiffParams.Warn.length;a<l;a++){
        if(a!=0) WarnUser2 += ' / ';
        WarnUser2 += '<a href="'+WarnUser2URL + '&'+RevertDiffParams.Warn[a].urlparam+'" '
                   + 'title="'+RevertDiffParams.Warn[a].template+'" '
                   + '>'+RevertDiffParams.Warn[a].text+'</a>';
    }
    WarnUser2 += ' / '
          + '<a id="RevertDiff_WarnPerso" href="javascript:getMessage(\''+WarnUser2URL+'\',\'warn=perso\');" '
          + '>'+RevertDiffParams.Text.WarnPerso+'</a>';
    WarnUser2 += '</span>)</span>';

    document.getElementById('contentSub').innerHTML = Revert + (RevertDiffParams.Split ? "<br />" : " ") + WarnUser1 + (RevertDiffParams.Split ? "<br />" : " ") + WarnUser2;

  }else if (location.href.match(/revert=/)){   

    var Resume = RevertDiffParams.Text.RevertResume.split("$1").join(_GET['username1']).split("$2").join(_GET['username2']);
    if (location.href.match(/revert=perso/)){
        document.getElementById('wpSummary').value = Resume + ' : '+ _GET['message'];
        document.getElementById('editform').submit();
        return;
    }
    for(var a=0,l=RevertDiffParams.Revert.length;a<l;a++){
      var Revert = RevertDiffParams.Revert[a];
      if (location.href.match(new RegExp(Revert.urlparam))) {
        document.getElementById('wpSummary').value = Resume + ' : '+ Revert.resume;
        document.getElementById('editform').submit();
        return;
      }
    }

  }else if (location.href.match(/warn=/)){  

    var Resume = RevertDiffParams.Text.WarnResume;
    if (location.href.match(/warn=perso/)){
        document.getElementById('wpSummary').value = Resume + ' : '+ _GET['message'];
        document.getElementById('wpTextbox1').value = _GET['message'];
        document.getElementById('editform').submit();
        return;
    }
    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('wpSummary').value = Resume + ' : '+ Warn.resume;
        document.getElementById('wpTextbox1').value = Warn.template;
        document.getElementById('editform').submit();
        return;
      }
    }

  }
});
//</nowiki>