MediaWiki:Gadget-LiveRC.js/Extensions/UserWarningsExtension.js

Dans cet article, nous allons aborder le sujet de MediaWiki:Gadget-LiveRC.js/Extensions/UserWarningsExtension.js dans le but d'explorer ses différentes facettes et d'approfondir sa signification et sa pertinence aujourd'hui. MediaWiki:Gadget-LiveRC.js/Extensions/UserWarningsExtension.js est un sujet qui a suscité l'intérêt des experts et du grand public, en raison de son impact sur différents aspects de la vie quotidienne. Tout au long de l’histoire, MediaWiki:Gadget-LiveRC.js/Extensions/UserWarningsExtension.js a joué un rôle crucial dans la société et son influence reste importante aujourd’hui. A travers cet article, nous chercherons à mettre en lumière les différents aspects de MediaWiki:Gadget-LiveRC.js/Extensions/UserWarningsExtension.js, en analysant son évolution dans le temps et sa pertinence dans le monde contemporain.
/* 
 --------------------------------------------------------------------------------------
 ---------LLLL---------III--------------------------RRRRRRRRRR--------CCCCC------------
 ---------LLLL---------III--------------------------RRRRRRRRRRRR----CCCCCCCCC----------
 ---------LLLL--------------------------------------RRR------RRR---CCC-----CCC---------
 ---------LLLL---------III--VV-----VV--EEEEEEEEE----RRR------RRR--CCC------------------
 ---------LLLL---------III---VV---VV---EEE----------RRRRRRRRRRR---CCC------------------
 ---------LLLL---------III---VV---VV---EEEEEE-------RRRRRRRRRR----CCC------------------
 ---------LLLL---------III----VV-VV----EEEEEE-------RRR-----RRR----CCC-----CCC---------
 ---------LLLLLLLLLLL--III----VVVVV----EEE----------RRR------RRR----CCCCCCCCC----------
 ---------LLLLLLLLLLL--III-----VVV-----EEEEEEEEE----RRR-------RRR-----CCCCC------------
 --------------------------------------------------------------------------------------
 
'''Extension de LiveRC'''
 
Permet de marquer les utilisateurs ayant reçu un avertissement sur leur page de discussion.
 
* Licence : CC0
* Documentation :
* Auteur : ]
* Développement et maintenance :
 ** ]
 
{{Catégorisation JS|LiveRC}}
 
<source lang=javascript> */
if (typeof(LiveRC_AddHook)==="function") { // DÉBUT IF
LiveRC_Config.push("UserWarningsExtension");
/* ************************************************************************************************************************************************ */

// Paramètres

try{
lrcParams = true;
lrcParams = true;
lrcParams = 24;
lrcParams = 24;
lrcParams = "";
lrcParams = "";
lrcParams = "";
}catch(e){ }


// Icônes
try{
lrcIcons = {"type":0,
                            "src":"thumb/1/1b/Emblem-person-red.svg/16px-Emblem-person-red.svg.png",
                            "width":14,
                            "height":14
}
lrcIcons = {"type":0,
                            "src":"thumb/2/23/Emblem-person-orange.svg/16px-Emblem-person-orange.svg.png",
                            "width":14,
                            "height":14
}
lrcIcons = {"type":0,
                            "src":"thumb/f/f4/Emblem-person-yellow.svg/16px-Emblem-person-yellow.svg.png",
                            "width":14,
                            "height":14
}
lrcIcons = {"type":0,
                            "src":"thumb/0/06/Emblem-person-green.svg/16px-Emblem-person-green.svg.png",
                            "width":14,
                            "height":14
}
lrcIcons = {"type":0,
                            "src":"9/92/LiveRC_Spam.png",
                            "width":14,
                            "height":14
}
lrcIcons = {"type":0,
                            "src":"3/3b/LiveRC_Test0.png",
                            "width":14,
                            "height":14
}
lrcIcons = {"type":0,
                            "src":"5/5d/LiveRC_Test1.png",
                            "width":14,
                            "height":14
}
lrcIcons = {"type":0,
                            "src":"7/78/LiveRC_Test2.png",
                            "width":14,
                            "height":14
}
lrcIcons = {"type":0,
                            "src":"7/7b/LiveRC_Test3.png",
                            "width":14,
                            "height":14
}
lrcIcons = {"type":0,
                            "src":"3/31/Salebot_small_icon.png",
                            "width":14,
                            "height":14
}
}catch(e){ }


// Textes

try{
lrcTexts  = "Editcount : $1";
lrcTexts  = "Editcount : $1";
lrcTexts  = "Editcount : $1";
lrcTexts  = "Editcount : $1";
lrcTexts    = "Averti : spam";
lrcTexts   = "Averti : test 0";
lrcTexts   = "Averti : test 1";
lrcTexts   = "Averti : test 2";
lrcTexts   = "Averti : test 3";
lrcTexts = "Révoqué par Salebot";
lrcTexts   = 'Remettre le compteur d’avertissements à zéro';
lrcTexts    = 'raz';

}catch(e){ }


// Descriptions

try{
lrcParamDesc       = 'Paramètres de l’extension UserWarnings';
lrcParamDesc = 'UserWarnings';
lrcParamDesc           = " Afficher le compteur d’éditions (couteux)";
lrcParamDesc            = " Afficher les avertissements (couteux)";
lrcParamDesc             = ' Couleur du nom des utilisateurs sans page de discussion';
lrcParamDesc         = ' Couleur du nom des utilisateurs avec message récent mais pas d’avertissement';
lrcParamDesc      = ' Couleur du nom des utilisateurs avertis';
lrcParamDesc                 = ' Délai en heures avant que les avertissements ne soient caducs (IP)';
lrcParamDesc                   = ' Délai en heures avant que les avertissements ne soient caducs (utilisateur enregistré)';
lrcParamDesc               = ' Infobulle du lien de mise à zéro du compteur du nombre d’avertissements';
lrcParamDesc                = ' Texte du lien de mise à zéro du compteur du nombre d’avertissements';
lrcParamDesc                    = ' Compteur d’éditions, niveau 0';
lrcParamDesc                    = ' Compteur d’éditions, niveau 1';
lrcParamDesc                    = ' Compteur d’éditions, niveau 2';
lrcParamDesc                    = ' Compteur d’éditions, niveau 3';
lrcParamDesc                      = ' Averti : spam';
lrcParamDesc                     = ' Averti : test 0';
lrcParamDesc                     = ' Averti : test 1';
lrcParamDesc                     = ' Averti : test 2';
lrcParamDesc                     = ' Averti : test 3';
lrcParamDesc                   = ' Révoqué par Salebot';
lrcParamDesc              = ' Tooltip de l’icône Compteur d’éditions, niveau 0';
lrcParamDesc              = ' Tooltip de l’icône Compteur d’éditions, niveau 1';
lrcParamDesc              = ' Tooltip de l’icône Compteur d’éditions, niveau 2';
lrcParamDesc              = ' Tooltip de l’icône Compteur d’éditions, niveau 3';
lrcParamDesc                = ' Infobulle de l’icône d’avertissement : spam';
lrcParamDesc               = ' Infobulle de l’icône d’avertissement : test 0';
lrcParamDesc               = ' Infobulle de l’icône d’avertissement : test 1';
lrcParamDesc               = ' Infobulle de l’icône d’avertissement : test 2';
lrcParamDesc               = ' Infobulle de l’icône d’avertissement : test 3';
lrcParamDesc             = ' Infobulle de l’icône d’avertissement : Salebot';
}catch(e){ }


// Tests de commentaire
window.lrcUserWarningsMessages = [
    { image: "SpamIcon"    , class: "RcUWSpam"    , regex: /(S|s)pammeur/                 },
    { image: "Test0Icon"   , class: "RcUWTest0"   , regex: /(T|t)est ?0/                  },
    { image: "Test1Icon"   , class: "RcUWTest1"   , regex: /(T|t)est ?1/                  },
    { image: "Test2Icon"   , class: "RcUWTest2"   , regex: /(T|t)est ?2/                  },
    { image: "Test3Icon"   , class: "RcUWTest3"   , regex: /(T|t)est ?3/                  },
    { image: "SalebotIcon" , class: "RcUWSalebot" , regex: /^bot : annonce de révocation/ }
];
window.lrcUserWarningsMessages_Custom = ;
window.Custom_lrcUserWarningsMessages = ;


// ============================ FIN DE LA PARTIE PERSONNALISABLE

LiveRC_Config = {};


window.lrcXUWTwoDigits = function(i) {
  return (i < 10 ? '0' : '') + i;
}

window.lrcXUWGetWikiDate = function(localDate) {
  var d = new Date(localDate.getTime() + localDate.getTimezoneOffset() * 60 * 1000);
  return '' + d.getFullYear() + lrcXUWTwoDigits(d.getMonth() + 1)
            + lrcXUWTwoDigits(d.getDate()) + lrcXUWTwoDigits(d.getHours())
            + lrcXUWTwoDigits(d.getMinutes()) + lrcXUWTwoDigits(d.getSeconds());
}

window.lrcXUWGetUserLink = function(tr1) {
  var links = tr1.getElementsByTagName("td").getElementsByTagName("a");
  for (var i = links.length - 1; i >= 0; i--) {
    if(lrcHasClass(links, "lrc_EditorLink")) return links;
  }
  return null;
}

window.lrcXUWHook = function(Args) {
  var id = Args.id;
  var tr1 = document.getElementById(id);
  if (!tr1) return;
  var rc = Args.rc;
  var user = rc.user;

// talkpage comments request
  if(lrcMakeParam("lrcXUWShowWarnings")){
    var talkPage = lrcGetNamespaceName(3) + ':' + user;
    lrcDisplayDebug("Get user talk page infos : " + talkPage);
    var Delay = (UserIsIP(user) ? lrcMakeParam("lrcXUWDelayIP") : lrcMakeParam("lrcXUWDelay") );
    var rvend = (LiveRC_Config ? LiveRC_Config : lrcXUWGetWikiDate(new Date(new Date() - (Delay * 3600000))));
    var requestTalkPage = lrcGetAPIURL({format:'xml',action:'query',prop:'revisions',rvlimit:LiveRC_Config.APIlimit,rvend:rvend,rvprop:'comment|timestamp',titles:talkPage,continue:''});
    wpajax.http({url: requestTalkPage, 
                 onSuccess: lrcTalkPageCallback,
                 user: user, 
                 tr1id: id
    });
  }

// user infos request
  if(lrcMakeParam("lrcXUWShowEditcount")){
    lrcDisplayDebug("Get user groups & editcount : " + user);
    if(UserIsIP(user)){
      var requestIPContribs = lrcGetAPIURL({format:'xml',action:'query',list:'usercontribs',ucuserprefix:user,uclimit:LiveRC_Config.APIlimit,continue:''});
      wpajax.http({url: requestIPContribs, 
                   onSuccess: lrcIPContribsCallback,
                   user: user, 
                   tr1id: id, 
                   contribs: 0
      });
    }else{
      var requestUserInfos = lrcGetAPIURL({format:'xml',action:'query',list:'allusers',auprefix:user,aulimit:'1',auprop:'editcount|registration|groups',continue:''});
      wpajax.http({url: requestUserInfos, 
                   onSuccess: lrcUserInfosCallback,
                   user: user, 
                   tr1id: id
      });
    }
  }
}

window.lrcTalkPageCallback = function(xmlreq, data) {
  var tr1 = document.getElementById(data.tr1id);
  if (!tr1) return;
  var lastLink = lrcXUWGetUserLink(tr1);
  if(!lastLink) return;
  var page = xmlreq.responseXML.getElementsByTagName('page');
  if (!page.getAttribute('pageid')) {
    if (lrcMakeParam("lrcXUWColorNoTalk")) lastLink.style.color = lrcMakeParam("lrcXUWColorNoTalk");
    return;
  }
  var revisions = xmlreq.responseXML.getElementsByTagName('rev');
  if (revisions.length == 0) return;
  var firstrevtimestamp = revisions.getAttribute("timestamp");
  var warning = ;
  var classes = ;  
  var XUWMessages = lrcUserWarningsMessages_Custom;
  if(XUWMessages.length===0) XUWMessages = Custom_lrcUserWarningsMessages;
  if(XUWMessages.length===0) XUWMessages = lrcUserWarningsMessages;
  for(var i = 0, l=revisions.length; i < l; i++) {
    var comment = revisions.getAttribute('comment');
    if (!comment) continue;
    for (var j = 0; j < XUWMessages.length; j++) {
      if((XUWMessages.regex).test(comment.unhtmlize())){
        warning.push(lrcMakeIcon(XUWMessages.image, {before:'&nbsp;'}));
        classes.push(XUWMessages.class);
      }
    }
  }
  if(warning.length>0) {
    var iconcontainer = document.createElement('span');
    iconcontainer.className = "UserWarningsIcons";
    lastLink.parentNode.insertBefore(iconcontainer, lastLink.nextSibling);
    for(var a=0,l=warning.length;a<l;a++){
      var icon = document.createElement('span');
      icon.innerHTML = warning;
      if(classes) lrcAddClass(tr1, classes);
      iconcontainer.appendChild(icon);
    }
    iconcontainer.appendChild(lrcXUWrazwarningslink(data.user, firstrevtimestamp, iconcontainer));
    if(lrcMakeParam("lrcXUWColorRecentWarning")) {
      lastLink.style.color = lrcMakeParam("lrcXUWColorRecentWarning");
    }
  } else if(revisions.length > 0 && lrcMakeParam("lrcXUWColorRecentTalk")) {
    lastLink.style.color = lrcMakeParam("lrcXUWColorRecentTalk");
  }
}

window.lrcXUWrazwarningslink = function(user, firstrevtimestamp, iconcontainer){
  var linksup = document.createElement('sup');
  var link = document.createElement('a');
  link.innerHTML = lrcMakeText('lrcXUWRAZ_Text');
  link.title = lrcMakeText('lrcXUWRAZ_Title').split("$1").join(firstrevtimestamp);
  link.href = "javascript:;";
  link.onclick = function(){ lrcXUWrazwarnings(user, firstrevtimestamp, iconcontainer); }
  linksup.appendChild(document.createTextNode(" "));
  linksup.appendChild(link);
  return linksup;
}

window.lrcXUWrazwarnings = function(user, firstrevtimestamp, iconcontainer){
  LiveRC_Config = (parseInt(firstrevtimestamp.replace(/\D/g, ""))+1);
  iconcontainer.parentNode.removeChild(iconcontainer);  
}

window.lrcUserInfosCallback = function(xmlreq, data){
  var tr1 = document.getElementById(data.tr1id);
  if (!tr1) return;
  var td2 = tr1.getElementsByTagName("td");
  if(!td2) return;
  var U = xmlreq.responseXML.getElementsByTagName('u');
  if(!U) return;
  var username = U.getAttribute("name");
  if(username != data.user) return;
  var usereditcount = U.getAttribute("editcount");
  var userregistration = U.getAttribute("registration");
  var G = U.getElementsByTagName("g");
  var usergroups = ;
  for(var a=0,l=G.length;a<l;a++){
    usergroups.push(G.firstChild.nodeValue);
  }
  var editcounticon = lrcMakeIcon("EditCount3", {after:' – '});
  var usereditcount = parseInt(usereditcount, {after:' – '});
  if(usereditcount<10){
    editcounticon = lrcMakeIcon("EditCount0", {after:' – '});
  }else if(usereditcount<50){
    editcounticon = lrcMakeIcon("EditCount1", {after:' – '});
  }else if(usereditcount<500){
    editcounticon = lrcMakeIcon("EditCount2", {after:' – '});
  }
  editcounticon = editcounticon.split("$1").join(usereditcount);
  var SpanEditcount = document.createElement('span');
  SpanEditcount.innerHTML = editcounticon;
  td2.insertBefore(SpanEditcount, td2.firstChild);
  UpdateGroups(usergroups, tr1, username);
}

window.UpdateGroups = function(usergroups, tr1, username){
  for(var group in LiveRC_Config){
    if(usergroups.indexOf(group)!=-1 && typeof(LiveRC_Config)==="object" && typeof(LiveRC_Config.list)==="object" && LiveRC_Config.list.indexOf(username) == -1){
      LiveRC_Config.list.push(username);
      lrcAddClass(tr1, lrcGetGroupClass(tr1, lrcGetGroupState(username, )));
    }
  }
}

window.lrcIPContribsCallback = function(xmlreq, data){
  var tr1 = document.getElementById(data.tr1id);
  if (!tr1) return;
  var lastLink = lrcXUWGetUserLink(tr1);
  var td2 = tr1.getElementsByTagName("td");
  if(!lastLink || !td2) return; 
  var UContribs = xmlreq.responseXML.getElementsByTagName('usercontribs');
  if(!UContribs) return;
  var Items = UContribs.getElementsByTagName('item');
  var contribs = data.contribs + Items.length;
  var othercontribs = UContribs.getElementsByTagName('continue');
  if(othercontribs){
    var continueparam = othercontribs.getAttribute('uccontinue');
    var requestIPContribs = lrcGetAPIURL({format:'xml',action:'query',list:'usercontribs',ucuserprefix:data.user,uclimit:LiveRC_Config.APIlimit,uccontinue:continueparam,continue:''});
    wpajax.http({url: requestIPContribs, 
                 onSuccess: lrcIPContribsCallback,
                 user: data.user, 
                 tr1id: data.id, 
                 contribs: contribs
    });    
  }else{
    var editcounticon = lrcMakeIcon("EditCount3", {after:' – '});
    if(contribs<10){
      editcounticon = lrcMakeIcon("EditCount0", {after:' – '});
    }else if(contribs<50){
      editcounticon = lrcMakeIcon("EditCount1", {after:' – '});
    }else if(contribs<500){
      editcounticon = lrcMakeIcon("EditCount2", {after:' – '});
    }
    editcounticon = editcounticon.split("$1").join(contribs);
    var SpanEditcount = document.createElement('span');
    SpanEditcount.innerHTML = editcounticon;
    td2.insertBefore(SpanEditcount, td2.firstChild);
  }
}

LiveRC_AddHook("AfterRC", lrcXUWHook);

// Personnalisation auto

window.defineCustomUserWarningsMessages = function(UserWarningsMessages){
  Custom_lrcUserWarningsMessages = UserWarningsMessages;
}

LiveRC_AddHook("AfterFillParamPanel", function(){
  LiveRC_ManageParams_Fill(lrcUserWarningsMessages, "lrcUserWarningsMessages", "defineCustomUserWarningsMessages", true);
});


/* ************************************************************************************************************************************************ */
} // FIN IF
//</source>