Utilisateur:Dr Brains/LiveRC/MostModifiedPagesExtension.js

Aujourd'hui, nous voulons parler de Utilisateur:Dr Brains/LiveRC/MostModifiedPagesExtension.js. Ce sujet/personne/date revêt une grande importance dans la société actuelle et a suscité un grand intérêt dans divers domaines. Tout au long de cet article, nous explorerons différents aspects liés à Utilisateur:Dr Brains/LiveRC/MostModifiedPagesExtension.js, de son histoire à son influence sur le monde d'aujourd'hui. Nous examinerons sa pertinence dans la culture populaire, son impact sur la société et son évolution au fil du temps. De plus, nous analyserons son rôle aujourd’hui et sa projection dans le futur. Nous espérons que cet article sera une source d’informations utile et enrichissante pour tous ceux qui s’intéressent à Utilisateur:Dr Brains/LiveRC/MostModifiedPagesExtension.js.
/* 
 --------------------------------------------------------------------------------------
 ---------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'''
 
Ajoute une icône à côté des articles modifiés par plus de 5 personnes différentes durant la dernière heure
 
* Licence : ...?
* Documentation :
* Auteur : ]
* Développement et maintenance :
 
 
{{Catégorisation JS|LiveRC}}
 
<source lang=javascript> */
if (typeof(lrcHooks)!="undefined") { // DÉBUT IF

// Paramètres 
try{
  lrcParams = true;
  lrcParams = 1;
  lrcParams = 4;
  lrcParams = 2;
}catch(e){ }

// Textes
try{
lrcTexts = "$1 éditeurs $2 : $3";
lrcTexts = "$1 reverts $2 : $3";
lrcTexts = "durant les $1 dernières heures";
lrcTexts = "durant la dernière heure";
}catch(e){ }

// Icônes 
try{
  lrcIcons = {"type":0,
                       "src":"thumb/1/16/Co-op_activism4.svg/12px-Co-op_activism4.svg.png",
                       "width":12,
                       "height":12
  }

  lrcIcons = {"type":0,
                       "src":"thumb/9/98/Tango-grenade.svg/12px-Tango-grenade.svg.png",
                       "width":12,
                       "height":12
  }
}catch(e){ }

// Descriptions
try{
  lrcParamDesc = " Charger l’historique des pages (coûteux)";
  lrcParamDesc = " Nombre d’heures d’historique à charger";
  lrcParamDesc = " Limite d’utilisateurs pour les pages très modifiées";
  lrcParamDesc = " Limite de reverts pour les pages très revertées";
  lrcParamDesc = " Page très modifiée";
  lrcParamDesc = " Possible guerre d’édition";
  lrcParamDesc = " Infobulle de l’icône pour pages très modifiées";
  lrcParamDesc = " Infobulle de l’icône pour pages en guerre d’édition";
  lrcParamDesc = ' Texte "durant les X dernières heures" (pluriel)';
  lrcParamDesc = ' Texte "durant la dernière heure" (singulier)';
}catch(e){ }


function MostModifiedPagesExtension_GetTimestamp(TS){
  var Year = parseInt(TS.substring(0, 4));
  var Month = parseInt(TS.substring(5, 7).replace(/^0/, ""));
  var Day = parseInt(TS.substring(8, 10).replace(/^0/, ""));
  var Hour = parseInt(TS.substring(11, 13).replace(/^0/, ""));
  var Minut = parseInt(TS.substring(14, 16).replace(/^0/, ""));
  var DaysinMonth = {"1" :31,
                     "2" :28,
                     "3" :31,
                     "4" :30,
                     "5" :31,
                     "6" :30,
                     "7" :31,
                     "8" :31,
                     "9" :30,
                     "10":31,
                     "11":30,
                     "12":31
                    }
  if(Year%4==0 && (Year%100!=0 || Year%400==0) ) DaysinMonth=29;
  Hour = Hour-lrcMakeParam("MostModifiedPagesDelay");
  if(Hour==-1){
    Hour = Hour + 24;
    Day = Day-1;
    if(Day == 0){
        Month = Month-1;
        if(Month==0){
          Month = 12;
          Year = Year-1;
        }
        Day = DaysinMonth;
    }
  }
  var ThisTimestamp = "" + Year 
                    + (Month<10 ? "0"+Month : Month)
                    + (Day  <10 ? "0"+Day   : Day  )
                    + (Hour <10 ? "0"+Hour  : Hour )
                    + (Minut<10 ? "0"+Minut : Minut)
                    + "00"; 
  return ThisTimestamp;
}

function MostModifiedPagesExtension_GetInfos(Args){
  if(!lrcMakeParam("MostModifiedPagesRun")) return;
  var tr1 = document.getElementById(Args.id);
  if (!tr1) return;
  var rc = Args.rc;
  var article = rc.title;
  var continuevalue = Args.mustcontinue;
  if(!continuevalue) continuevalue = '';
  var TS = MostModifiedPagesExtension_GetTimestamp(rc.timestamp);
  var URL = mw.config.get('wgServer') + mw.config.get('wgScriptPath') + '/api.php?format=xml&action=query'
          + '&prop=revisions&titles='+encodeURIComponent(article)
          + '&rvlimit='+LiveRC_Config.APIlimit
          + '&rvend='+TS
          + '&rvprop=user|comment'
          + continuevalue;
  if(!Args.users) Args.users = new Array();
  if(!Args.reverts) Args.reverts = new Array();
  lrcDisplayDebug("Get page revisions : " + article + " " + continuevalue);
  wpajax.http({ url: URL,
                onSuccess: MostModifiedPagesExtension_AddIcon, 
                page: article, 
                Args: Args
  });
}
LiveRC_AddHook("AfterRC", MostModifiedPagesExtension_GetInfos);

function MostModifiedPagesExtension_AddIcon(Req, data){
  var Args = data.Args
  var rc = Args.rc;
  var TR = document.getElementById(Args.id);
  if (!TR) return;
  var ObjetXML = Req.responseXML;
  if(!ObjetXML) return;
  var Modifs = ObjetXML.getElementsByTagName('rev');
  for(var a=0,l=Modifs.length;a<l;a++){
    var User = Modifs.getAttribute('user');
    if(Args.users.indexOf(User)==-1) Args.users.push(User);
    var Comment = Modifs.getAttribute("comment");
    var rc = new Object();
    rc.state = new Array();
    if (typeof(Comment) != "undefined") { 
      var CommentTests = Custom_commenttests;
      if(CommentTests.length===0) CommentTests = commenttests;
      for(var j=0,lenj = CommentTests.length; j<lenj; j++)
        if(new RegExp(CommentTests.regex).test(Comment))
          rc.state = lrcAddState(rc.state, CommentTests.state);
    }
    if(lrcHasState(rc.state, "REVERT")) Args.reverts.push(User);
  }
  var ContinueTag = ObjetXML.getElementsByTagName('query-continue');
  if(ContinueTag){
    Args.mustcontinue = "&rvcontinue=" + encodeURIComponent(ContinueTag.firstChild.getAttribute('rvcontinue'));
    MostModifiedPagesExtension_GetInfos(Args);
  }else{
    MostModifiedPagesExtension_AddIcons(Args);
  }
}

function MostModifiedPagesExtension_AddIcons(Args){
  var Users = Args.users;
  var Reverts = Args.reverts;
  var IconsToAdd = new Array();
  var HourParam = lrcMakeParam("MostModifiedPagesDelay");
  var HourParamText = lrcMakeText("MostModifiedHour"+(HourParam>1 ? "s" : "")).split("$1").join(HourParam);
  if(Users.length>lrcMakeParam("MostModifiedPagesUserLimit")){
    var UbuttonIcon = lrcMakeIcon("MostModifiedIcon");
    UbuttonIcon = UbuttonIcon.split("$1").join(Users.length);
    UbuttonIcon = UbuttonIcon.split("$2").join(HourParamText);
    UbuttonIcon = UbuttonIcon.split("$3").join(Users.join(" - "));
    IconsToAdd.push(UbuttonIcon);
  }
  if(Reverts.length>lrcMakeParam("MostModifiedPagesRevertLimit")){
    var RbuttonIcon = lrcMakeIcon("MostRevertedIcon");
    RbuttonIcon = RbuttonIcon.split("$1").join(Reverts.length);
    RbuttonIcon = RbuttonIcon.split("$2").join(HourParamText);
    RbuttonIcon = RbuttonIcon.split("$3").join(Reverts.join(" - "));
    IconsToAdd.push(RbuttonIcon);
  }
  if(IconsToAdd.length>0) LiveRC_AddIconBeforeArticleLink(Args, IconsToAdd);
}

function LiveRC_AddIconBeforeArticleLink(Args, IconsToAdd){
  var TR = document.getElementById(Args.id);
  if (!TR || typeof(IconsToAdd)!= "object") return;
  var ArticleLink = TR.querySelector('a.lrc_ArticleLink');
  if(!ArticleLink) return;
  var Icons = document.createElement('span');  
  Icons.innerHTML = IconsToAdd.join(" ") + " ";
  ArticleLink.parentNode.insertBefore(Icons, ArticleLink);  
}


function MostModifiedPagesExtension_TransformOptions(){
  var InputsToTransform = new Array();
  var Options = new Array();
  for(var a=1,l=25;a<l;a++) Options.push({value:a,text:a});
  InputsToTransform = Options;
  LiveRC_ManageParams_CheckInputsToTransform(InputsToTransform);
}
LiveRC_AddHook("AfterCreateParamPanel", MostModifiedPagesExtension_TransformOptions);


} // FIN IF

//</source>