Utilisateur:Dr Brains/LiveRC/UserWarningsExtension.js
Apparence
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) ;
Firefox (sur GNU/Linux) / Chrome / Internet Explorer / Opera : maintenez la touche Ctrl en cliquant sur le bouton Actualiser ou pressez Ctrl-F5./*
--------------------------------------------------------------------------------------
---------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 : [[:fr:User:Orlodrim]]
* Développement et maintenance :
** [[:fr:User:Dr Brains]]
{{Catégorisation JS|LiveRC}}
<source lang=javascript> */
if (typeof(LiveRC_AddHook)==="function") { // DÉBUT IF
LiveRC_Config["InstalledLiveRCExtensions"].push("UserWarningsExtension");
/* ************************************************************************************************************************************************ */
// Paramètres
try{
lrcParams["lrcXUWShowEditcount"] = true;
lrcParams["lrcXUWShowWarnings"] = true;
lrcParams["lrcXUWDelayIP"] = 24;
lrcParams["lrcXUWDelay"] = 24;
lrcParams["lrcXUWColorNoTalk"] = "";
lrcParams["lrcXUWColorRecentTalk"] = "";
lrcParams["lrcXUWColorRecentWarning"] = "";
}catch(e){ }
// Icônes
try{
lrcIcons["EditCount0"] = {"type":0,
"src":"thumb/1/1b/Emblem-person-red.svg/16px-Emblem-person-red.svg.png",
"width":14,
"height":14
}
lrcIcons["EditCount1"] = {"type":0,
"src":"thumb/2/23/Emblem-person-orange.svg/16px-Emblem-person-orange.svg.png",
"width":14,
"height":14
}
lrcIcons["EditCount2"] = {"type":0,
"src":"thumb/f/f4/Emblem-person-yellow.svg/16px-Emblem-person-yellow.svg.png",
"width":14,
"height":14
}
lrcIcons["EditCount3"] = {"type":0,
"src":"thumb/0/06/Emblem-person-green.svg/16px-Emblem-person-green.svg.png",
"width":14,
"height":14
}
lrcIcons["SpamIcon"] = {"type":0,
"src":"9/92/LiveRC_Spam.png",
"width":14,
"height":14
}
lrcIcons["Test0Icon"] = {"type":0,
"src":"3/3b/LiveRC_Test0.png",
"width":14,
"height":14
}
lrcIcons["Test1Icon"] = {"type":0,
"src":"5/5d/LiveRC_Test1.png",
"width":14,
"height":14
}
lrcIcons["Test2Icon"] = {"type":0,
"src":"7/78/LiveRC_Test2.png",
"width":14,
"height":14
}
lrcIcons["Test3Icon"] = {"type":0,
"src":"7/7b/LiveRC_Test3.png",
"width":14,
"height":14
}
lrcIcons["SalebotIcon"] = {"type":0,
"src":"3/31/Salebot_small_icon.png",
"width":14,
"height":14
}
}catch(e){ }
// Textes
try{
lrcTexts["EditCount0_Title"] = "Editcount : $1";
lrcTexts["EditCount1_Title"] = "Editcount : $1";
lrcTexts["EditCount2_Title"] = "Editcount : $1";
lrcTexts["EditCount3_Title"] = "Editcount : $1";
lrcTexts["SpamIcon_Title"] = "Averti : spam";
lrcTexts["Test0Icon_Title"] = "Averti : test 0";
lrcTexts["Test1Icon_Title"] = "Averti : test 1";
lrcTexts["Test2Icon_Title"] = "Averti : test 2";
lrcTexts["Test3Icon_Title"] = "Averti : test 3";
lrcTexts["SalebotIcon_Title"] = "Révoqué par Salebot";
lrcTexts['lrcXUWRAZ_Title'] = 'Remettre le compteur d’avertissements à zéro';
lrcTexts['lrcXUWRAZ_Text'] = 'raz';
}catch(e){ }
// Descriptions
try{
lrcParamDesc['DesclrcUserWarningsMessages'] = 'Paramètres de l’extension UserWarnings';
lrcParamDesc['DesclrcUserWarningsMessages_short'] = 'UserWarnings';
lrcParamDesc["DesclrcXUWShowEditcount"] = "[UserWarnings] Afficher le compteur d’éditions (couteux)";
lrcParamDesc["DesclrcXUWShowWarnings"] = "[UserWarnings] Afficher les avertissements (couteux)";
lrcParamDesc['DesclrcXUWColorNoTalk'] = '[UserWarnings] Couleur du nom des utilisateurs sans page de discussion';
lrcParamDesc['DesclrcXUWColorRecentTalk'] = '[UserWarnings] Couleur du nom des utilisateurs avec message récent mais pas d’avertissement';
lrcParamDesc['DesclrcXUWColorRecentWarning'] = '[UserWarnings] Couleur du nom des utilisateurs avertis';
lrcParamDesc['DesclrcXUWDelayIP'] = '[UserWarnings] Délai en heures avant que les avertissements ne soient caducs (IP)';
lrcParamDesc['DesclrcXUWDelay'] = '[UserWarnings] Délai en heures avant que les avertissements ne soient caducs (utilisateur enregistré)';
lrcParamDesc['DesclrcXUWRAZ_Title'] = '[UserWarnings] Infobulle du lien de mise à zéro du compteur du nombre d’avertissements';
lrcParamDesc['DesclrcXUWRAZ_Text'] = '[UserWarnings] Texte du lien de mise à zéro du compteur du nombre d’avertissements';
lrcParamDesc['DescEditCount0'] = '[UserWarnings] Compteur d’éditions, niveau 0';
lrcParamDesc['DescEditCount1'] = '[UserWarnings] Compteur d’éditions, niveau 1';
lrcParamDesc['DescEditCount2'] = '[UserWarnings] Compteur d’éditions, niveau 2';
lrcParamDesc['DescEditCount3'] = '[UserWarnings] Compteur d’éditions, niveau 3';
lrcParamDesc['DescSpamIcon'] = '[UserWarnings] Averti : spam';
lrcParamDesc['DescTest0Icon'] = '[UserWarnings] Averti : test 0';
lrcParamDesc['DescTest1Icon'] = '[UserWarnings] Averti : test 1';
lrcParamDesc['DescTest2Icon'] = '[UserWarnings] Averti : test 2';
lrcParamDesc['DescTest3Icon'] = '[UserWarnings] Averti : test 3';
lrcParamDesc['DescSalebotIcon'] = '[UserWarnings] Révoqué par Salebot';
lrcParamDesc['DescEditCount0_Title'] = '[UserWarnings] Tooltip de l’icône Compteur d’éditions, niveau 0';
lrcParamDesc['DescEditCount1_Title'] = '[UserWarnings] Tooltip de l’icône Compteur d’éditions, niveau 1';
lrcParamDesc['DescEditCount2_Title'] = '[UserWarnings] Tooltip de l’icône Compteur d’éditions, niveau 2';
lrcParamDesc['DescEditCount3_Title'] = '[UserWarnings] Tooltip de l’icône Compteur d’éditions, niveau 3';
lrcParamDesc['DescSpamIcon_Title'] = '[UserWarnings] Infobulle de l’icône d’avertissement : spam';
lrcParamDesc['DescTest0Icon_Title'] = '[UserWarnings] Infobulle de l’icône d’avertissement : test 0';
lrcParamDesc['DescTest1Icon_Title'] = '[UserWarnings] Infobulle de l’icône d’avertissement : test 1';
lrcParamDesc['DescTest2Icon_Title'] = '[UserWarnings] Infobulle de l’icône d’avertissement : test 2';
lrcParamDesc['DescTest3Icon_Title'] = '[UserWarnings] Infobulle de l’icône d’avertissement : test 3';
lrcParamDesc['DescSalebotIcon_Title'] = '[UserWarnings] Infobulle de l’icône d’avertissement : Salebot';
}catch(e){ }
// Tests de commentaire
var 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/ }
];
lrcUserWarningsMessages_Custom = [];
Custom_lrcUserWarningsMessages = [];
// ============================ FIN DE LA PARTIE PERSONNALISABLE
LiveRC_Config["UserWarnings_icons"] = {};
LiveRC_Config["UserWarnings_TS"] = {};
LiveRC_Config["UserWarnings_RecentTalk"] = {};
LiveRC_Config["UserWarnings_NoTalk"] = {};
LiveRC_Config["UserWarnings_rvend"] = {};
function lrcXUWTwoDigits(i) {
return (i < 10 ? '0' : '') + i;
}
function lrcXUWGetWikiDate(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());
}
function lrcXUWGetUserLink(tr1) {
var links = tr1.getElementsByTagName("td")[0].getElementsByTagName("a");
for (var i = links.length - 1; i >= 0; i--) {
if(lrcHasClass(links[i], "lrc_EditorLink")) return links[i];
}
return null;
}
function lrcXUWHook(Args) {
var id = Args.id;
var tr1 = document.getElementById(id);
if (!tr1) return;
var rc = Args.rc;
var user = rc.user;
// 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["UserInfos"].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
});
}
}
var Warnings = LiveRC_Config["UserWarnings_icons"][user];
if(typeof(Warnings)==="undefined"){
lrcXUWGetWarnings(Args);
}else{
lrcXUWAddWarnings({user:user,tr1id:id});
}
var title = rc.title;
var state = rc.state;
if( !lrcHasState(state, "LOG") && !lrcHasState(state, "EXTERNAL") && !lrcHasState(state, "FLOW") && rc.ns == 3){
var newwarnings = lrcXUWTestComment(rc.comment);
if(newwarnings.length>0){
var thisuser = title;
// TODO : nouveaux messages
}
}
}
function lrcXUWTestComment(comment){
if(!comment) return [];
var warnings = [];
var XUWMessages = lrcUserWarningsMessages_Custom;
if(XUWMessages.length===0) XUWMessages = Custom_lrcUserWarningsMessages;
if(XUWMessages.length===0) XUWMessages = lrcUserWarningsMessages;
for (var j = 0; j < XUWMessages.length; j++) {
if((XUWMessages[j].regex).test(comment.unhtmlize())){
warnings.push(j);
}
}
return warnings;
}
function lrcXUWGetWarnings(Args) {
var id = Args.id;
var tr1 = document.getElementById(id);
if (!tr1) return;
var rc = Args.rc;
var user = rc.user;
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["UserWarnings_rvend"][user] ? LiveRC_Config["UserWarnings_rvend"][user] : lrcXUWGetWikiDate(new Date(new Date() - (Delay * 3600000))));
var APILimit = LiveRC_Config["UserInfos"].APIlimit;
var requestTalkPage = lrcGetAPIURL({format:'xml',action:'query',prop:'revisions',rvlimit:APILimit,rvend:rvend,rvprop:'comment|timestamp',titles:talkPage,continue:''});
wpajax.http({url: requestTalkPage,
onSuccess: lrcTalkPageCallback,
user: user,
tr1id: id
});
}
}
function lrcTalkPageCallback(xmlreq, data) {
LiveRC_Config["UserWarnings_icons"][data.user] = [];
var tr1 = document.getElementById(data.tr1id);
if (!tr1) return;
var userLink = lrcXUWGetUserLink(tr1);
if(!userLink) return;
var page = xmlreq.responseXML.getElementsByTagName('page')[0];
if (!page.getAttribute('pageid')) {
LiveRC_Config["UserWarnings_NoTalk"][data.user] = true;
return;
}
var revisions = xmlreq.responseXML.getElementsByTagName('rev');
if (revisions.length == 0) return;
LiveRC_Config["UserWarnings_TS"][data.user] = revisions[0].getAttribute("timestamp");
var warning = [];
for(var i = 0, l=revisions.length; i < l; i++) {
var comment = revisions[i].getAttribute('comment');
if (!comment) continue;
var thiscommentwarnings = lrcXUWTestComment(comment);
if(thiscommentwarnings.length == 0) continue;
for (var j=0,jlen=thiscommentwarnings.length;j<jlen;j++) {
warning.push(thiscommentwarnings[j]);
}
}
LiveRC_Config["UserWarnings_icons"][data.user] = warning;
lrcXUWAddWarnings({user:data.user,tr1id:data.tr1id});
if(revisions.length > 0) {
LiveRC_Config["UserWarnings_RecentTalk"][data.user] = true;
}
}
function lrcXUWAddWarnings(Args) {
var tr1 = document.getElementById(Args.tr1id);
if (!tr1) return;
var userLink = lrcXUWGetUserLink(tr1);
if(!userLink) return;
var user = Args.user;
var Warnings = LiveRC_Config["UserWarnings_icons"][user];
if(Warnings.length !== 0){
var iconcontainer = document.createElement('span');
iconcontainer.className = "UserWarningsIcons";
userLink.parentNode.insertBefore(iconcontainer, userLink.nextSibling);
var XUWMessages = lrcUserWarningsMessages_Custom;
if(XUWMessages.length===0) XUWMessages = Custom_lrcUserWarningsMessages;
if(XUWMessages.length===0) XUWMessages = lrcUserWarningsMessages;
for(var a=0,l=Warnings.length;a<l;a++){
var icon = document.createElement('span');
ThisWarning = XUWMessages[Warnings[a]];
icon.innerHTML = lrcMakeIcon(ThisWarning.image, {before:' '});
if(ThisWarning.class) lrcAddClass(tr1, ThisWarning.class);
iconcontainer.appendChild(icon);
}
iconcontainer.appendChild(lrcXUWrazwarningslink(user, LiveRC_Config["UserWarnings_TS"][user], iconcontainer));
if(lrcMakeParam("lrcXUWColorRecentWarning")) {
lastLink.style.color = lrcMakeParam("lrcXUWColorRecentWarning");
}
}else if(LiveRC_Config["UserWarnings_RecentTalk"][user] == true && lrcMakeParam("lrcXUWColorRecentTalk")){
lastLink.style.color = lrcMakeParam("lrcXUWColorRecentTalk");
}else if(LiveRC_Config["UserWarnings_NoTalk"][data.user] == true && lrcMakeParam("lrcXUWColorNoTalk"))
userLink.style.color = lrcMakeParam("lrcXUWColorNoTalk");
}
}
function lrcXUWrazwarningslink(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;
}
function lrcXUWrazwarnings(user, firstrevtimestamp, iconcontainer){
LiveRC_Config["UserWarnings_rvend"][user] = (parseInt(firstrevtimestamp.replace(/\D/g, ""))+1);
iconcontainer.parentNode.removeChild(iconcontainer);
}
function lrcUserInfosCallback(xmlreq, data){
var tr1 = document.getElementById(data.tr1id);
if (!tr1) return;
var td2 = tr1.getElementsByTagName("td")[0];
if(!td2) return;
var U = xmlreq.responseXML.getElementsByTagName('u')[0];
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[a].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);
}
function UpdateGroups(usergroups, tr1, username){
for(var group in LiveRC_Config["UserGroupList"]){
if(usergroups.indexOf(group)!=-1 && typeof(LiveRC_Config["UserGroupList"][group])==="object" && typeof(LiveRC_Config["UserGroupList"][group].list)==="object" && LiveRC_Config["UserGroupList"][group].list.indexOf(username) == -1){
LiveRC_Config["UserGroupList"][group].list.push(username);
lrcAddClass(tr1, lrcGetGroupClass(tr1, lrcGetGroupState(username, [])));
}
}
}
function lrcIPContribsCallback(xmlreq, data){
var tr1 = document.getElementById(data.tr1id);
if (!tr1) return;
var lastLink = lrcXUWGetUserLink(tr1);
var td2 = tr1.getElementsByTagName("td")[0];
if(!lastLink || !td2) return;
var UContribs = xmlreq.responseXML.getElementsByTagName('usercontribs')[0];
if(!UContribs) return;
var Items = UContribs.getElementsByTagName('item');
var contribs = data.contribs + Items.length;
var othercontribs = UContribs.getElementsByTagName('continue')[0];
if(othercontribs){
var continueparam = othercontribs.getAttribute('uccontinue');
var requestIPContribs = lrcGetAPIURL({format:'xml',action:'query',list:'usercontribs',ucuserprefix:data.user,uclimit:LiveRC_Config["UserInfos"].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
function defineCustomUserWarningsMessages(UserWarningsMessages){
Custom_lrcUserWarningsMessages = UserWarningsMessages;
}
LiveRC_AddHook("AfterFillParamPanel", function(){
LiveRC_ManageParams_Fill(lrcUserWarningsMessages, "lrcUserWarningsMessages", "defineCustomUserWarningsMessages", true);
});
/* ************************************************************************************************************************************************ */
} // FIN IF
//</source>