_ _    _ _____  ___   __                       
 __      _(_) | _(_)___ / ( _ ) / /_   ___ ___  _ __ ___  
 \ \ /\ / / | |/ / | |_ \ / _ \| '_ \ / __/ _ \| '_ ` _ \ 
  \ V  V /| |   <| |___) | (_) | (_) | (_| (_) | | | | | |
   \_/\_/ |_|_|\_\_|____/ \___/ \___(_)___\___/|_| |_| |_|

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

Dans le monde d'aujourd'hui, MediaWiki:Gadget-LiveRC.js/Extensions/UserWarningsExtension.js a acquis une pertinence sans précédent. Que ce soit dans le domaine de la technologie, de la politique, du divertissement ou dans tout autre domaine, MediaWiki:Gadget-LiveRC.js/Extensions/UserWarningsExtension.js est devenu un sujet de conversation constant et une source inépuisable d'intérêt et de débat. Son impact va des décisions que nous prenons dans notre vie quotidienne aux grandes transformations dont nous sommes témoins à l’échelle mondiale. Dans cet article, nous explorerons en détail toutes les facettes de MediaWiki:Gadget-LiveRC.js/Extensions/UserWarningsExtension.js, dévoilant à la fois ses implications pratiques et sa signification symbolique. A travers une analyse exhaustive, nous chercherons à mettre en lumière les différents aspects qui font de MediaWiki:Gadget-LiveRC.js/Extensions/UserWarningsExtension.js un phénomène digne d'analyse et d'investigation.
/* 
 --------------------------------------------------------------------------------------
 ---------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>