Utilisateur:Dr Brains/LiveNewUsers.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.
if(mw.config.get('wgTitle').indexOf('LiveNewUsers')!=-1 && mw.config.get('wgTitle').indexOf('.')==-1){

     var LiveNewUsers_APILimit = 499;
     if(mw.config.get('wgUserGroups').indexOf("sysop")!=-1 || mw.config.get('wgUserGroups').indexOf("bot")!=-1) LiveNewUsers_APILimit = 4999;

     var LiveNewUsers_DefaultUserNumber = 100;
     var LiveNewUsers_PreviewIndex = 0;
     var LiveNewUsers_PreviewZIndex = 1000;
     var LiveNewUsers_Timout;
     if(typeof(MoveResizeFixed_AddMoveArea)!="function") obtenir("MoveResizeFixed");
     importStylesheet("Utilisateur:Dr Brains/LiveNewUsers.css");
     addOnloadHook(LiveNewUsers_Init);
}

function LiveNewUsers_Init(){
     LiveNewUsers_ListUsers();
}

function LiveNewUsers_ListUsers(UserList, UserContinue){
     if(!UserList) UserList = new Array();
     if(!UserContinue) UserContinue = "";

     var UserLeft = (LiveNewUsers_DefaultUserNumber - UserList.length);
     if(UserLeft<LiveNewUsers_APILimit){
          var APILimit = UserLeft;
     }else{
          var APILimit = UserLeft;
     }
     var AdresseRequete = mw.config.get('wgServer') + mw.config.get('wgScriptPath') + '/api.php?format=xml&action=query&list=logevents&lelimit='+APILimit+'&letype=newusers' + UserContinue;
     var NouvelleRequete = new XMLHttpRequest();
     NouvelleRequete.open("GET", AdresseRequete, true);
     NouvelleRequete.onreadystatechange = function() {
          if(NouvelleRequete.readyState != 4) return;
          var ObjetXML = NouvelleRequete.responseXML;
          if(ObjetXML){
               var Items = ObjetXML.getElementsByTagName('item');
               for(var a=0;a<Items.length;a++){
                    var UserName = Items[a].getAttribute('user');
                    UserList.push(UserName);
               }
               if(UserList.length<LiveNewUsers_DefaultUserNumber){
                    var LogContinue = "&lestart=" + ObjetXML.getElementsByTagName('query-continue')[0].getElementsByTagName('logevents')[0].getAttribute('lestart');
                    LiveNewUsers_ListUsers(UserList, LogContinue);
               }else{
                    LiveNewUsers_DisplayUsers(UserList);
               }
          }else{
               alert('Erreur lors de la requête : \n\n'+AdresseRequete);
          }
     }
     NouvelleRequete.send(null);
}

function LiveNewUsers_DisplayUsers(UserList){
     var UserListContainer = document.getElementById('LiveNewUsers_UserList');
     if(!UserListContainer) return;
     while(UserListContainer.firstChild){ UserListContainer.removeChild(UserListContainer.firstChild); }
     for(var a=0;a<UserList.length;a++){
          var Li = document.createElement('li');
          Li.id = "UserList_"+a;
          var LienUser = document.createElement('a');
          LienUser.className = encodeURIComponent(UserList[a]);
          LienUser.id = "UserLink_"+a;
          LienUser.appendChild(document.createTextNode(UserList[a]));
          LienUser.href= mw.config.get('wgServer') + mw.config.get('wgScript') + "?title=" + mw.config.get('wgFormattedNamespaces')[2]+":"+encodeURIComponent(UserList[a]) + "&edit&redlink=1";
          var LienTalk = document.createElement('a');
          LienTalk.appendChild(document.createTextNode("d"));
          LienTalk.href = mw.config.get('wgServer') + mw.config.get('wgScript') + "?title=" + mw.config.get('wgFormattedNamespaces')[3]+":"+encodeURIComponent(UserList[a]) + "&edit&redlink=1";
          var LienContribs = document.createElement('a');
          LienContribs.appendChild(document.createTextNode("c"));
          LienContribs.href= "javascript:LiveNewUsers_DisplayUserContribs("+a+")";
/*
          var LienContribsBis = document.createElement('a');
          LienContribsBis.appendChild(document.createTextNode("Cbis"));
          LienContribsBis.href= mw.config.get('wgServer') + mw.config.get('wgArticlePath').split("$1").join("Spécial:Contributions/"+UserList[a]);
*/
          var Ul = document.createElement('ul');
          Ul.id = "UserContribs_"+a;
          Ul.className = "UserContribs_Empty UserContribs_Hidden";
          Li.appendChild(LienUser);
          Li.appendChild(document.createTextNode(" ("));
          Li.appendChild(LienTalk);
          Li.appendChild(document.createTextNode("|"));
          Li.appendChild(LienContribs);
/*
          Li.appendChild(document.createTextNode("|"));
          Li.appendChild(LienContribsBis);
*/
          Li.appendChild(document.createTextNode(")"));
          Li.appendChild(Ul);
          UserListContainer.appendChild(Li);  
          LiveNewUsers_DisplayUserContribs(a);
     }
}

function LiveNewUsers_DisplayUserContribs(Position){
     var UserLink = document.getElementById("UserLink_"+Position);
     var UserContribContainer = document.getElementById("UserContribs_"+Position);
     if(!UserContribContainer || !UserLink) return;
     if($(UserContribContainer).hasClass("UserContribs_Hidden")){
          $(UserContribContainer).removeClass("UserContribs_Hidden");
          $(UserContribContainer).addClass("UserContribs_Shown");
     }else if($(UserContribContainer).hasClass("UserContribs_Shown")){
          $(UserContribContainer).removeClass("UserContribs_Shown");
          $(UserContribContainer).addClass("UserContribs_Hidden");
     }
     if(!$(UserContribContainer).hasClass("UserContribs_Empty")){
          return;
     }else{
          $(UserContribContainer).removeClass("UserContribs_Empty");
     }

     User = decodeURIComponent(UserLink.className);
     var EncodeUser = User.replace(/&/g, "%26");
     var AdresseRequete = mw.config.get('wgServer') + mw.config.get('wgScriptPath') + '/api.php?format=xml&action=query&list=usercontribs&ucuser='+EncodeUser+'&ucnamespace=0|1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|100|101|102|103|104|105&uclimit='+LiveNewUsers_APILimit+'&ucprop=ids|title|timestamp|comment|parsedcomment|size|flags|patrolled|tags';
     var NouvelleRequete = new XMLHttpRequest();
     NouvelleRequete.open("GET", AdresseRequete, true);
     NouvelleRequete.onreadystatechange = function() {
          if(NouvelleRequete.readyState != 4) return;
          var ObjetXML = NouvelleRequete.responseXML;
          if(ObjetXML){
               var Result = new Array();
               var Items = ObjetXML.getElementsByTagName('item');
               for(var a=0;a<Items.length;a++){
                    var PageTitle = Items[a].getAttribute('title');
                    var EncodedPageTitle = Items[a].getAttribute('title').replace(/'/g, "ZAPPORTROPHE").replace(/&/g, "%26");
                    var TimeStamp = Items[a].getAttribute('timestamp');
                    var Revid = Items[a].getAttribute('revid');
                    var Comment = Items[a].getAttribute('parsedcomment');
                    Comment = Comment.replace(/&amp;/g, "&");
                    Comment = Comment.replace(/&lt;/g, "<");
                    Comment = Comment.replace(/&gt;/g, ">");
                    var New = (Items[a].getAttribute('new') ? true : false);
                    var Minor = (Items[a].getAttribute('minor') ? document.createTextNode("m") : document.createTextNode(""));
                    var Li = document.createElement('li');
                    var LienPage = document.createElement('a');
                    LienPage.appendChild(document.createTextNode(PageTitle)); 
                    LienPage.href = mw.config.get('wgServer') + mw.config.get('wgScript') + "?title=" + encodeURIComponent(PageTitle); 
                    if(!New){
                         var LienDiff = document.createElement('a');
                         LienDiff.appendChild(document.createTextNode("diff")); 
                         LienDiff.href = "javascript:LiveNewUsers_Preview('" + mw.config.get('wgServer') + mw.config.get('wgScript') + "?title=" + EncodedPageTitle + "&diff=prev&oldid=" + Revid + "');"; 
                    }else{
                         var LienDiff = document.createTextNode("diff");
                    }
                    var LienHist = document.createElement('a');
                    LienHist.appendChild(document.createTextNode("hist")); 
                    LienHist.href = mw.config.get('wgServer') + mw.config.get('wgScript') + "?title=" + encodeURIComponent(PageTitle) + "&action=history"; 
                    var LienEdit = document.createElement('a');
                    LienEdit.appendChild(document.createTextNode("edit")); 
                    LienEdit.href = mw.config.get('wgServer') + mw.config.get('wgScript') + "?title=" + encodeURIComponent(PageTitle) + "&action=edit"; 
                    var LienWatch = document.createElement('a');
                    LienWatch.appendChild(document.createTextNode("suivre")); 
                    LienWatch.href = mw.config.get('wgServer') + mw.config.get('wgScript') + "?title=" + encodeURIComponent(PageTitle) + "&action=watch"; 
                    var CommentLine = document.createElement('span');
                    CommentLine.innerHTML = Comment;
                    var LienHist = document.createElement('a');
                    Li.appendChild(LienPage);
                    Li.appendChild(document.createTextNode(" ("));
                    Li.appendChild(LienDiff);
                    Li.appendChild(document.createTextNode("|"));
                    Li.appendChild(LienHist);
                    Li.appendChild(document.createTextNode("|"));
                    Li.appendChild(LienEdit);
                    Li.appendChild(document.createTextNode("|"));
                    Li.appendChild(LienWatch);
                    Li.appendChild(document.createTextNode(") "));
                    Li.appendChild(Minor);
                    Li.appendChild(document.createTextNode(" - "));
                    Li.appendChild(CommentLine);
                    Result.push(Li);
               }
               var UserContribContainer = document.getElementById("UserContribs_"+Position);
               if(!UserContribContainer) return;
               for(var a=0;a<Result.length;a++){
                    UserContribContainer.appendChild(Result[a]);
               }
          }else{
               alert('Erreur lors de la requête : \n\n'+AdresseRequete);
          }
     }
     NouvelleRequete.send(null);
}

function LiveNewUsers_Preview(URL){
     URL = decodeURIComponent(URL).replace(/ZAPPOSTROPHE/g, "'");
     var NouvelleRequete = new XMLHttpRequest();
     NouvelleRequete.open("GET", URL, true);
     NouvelleRequete.onreadystatechange = function() {
          if(NouvelleRequete.readyState != 4) return;
          var Reponse = NouvelleRequete.responseText;
          var Traitement = document.getElementById("LiveNewUsers_PreviewTemp");
          if(!Traitement){
               Traitement = document.createElement('div');
               Traitement.id = "LiveNewUsers_PreviewTemp";
               document.body.appendChild(Traitement);
          }
          Traitement.innerHTML = Reponse;
          var BodyCId = "bodyContent";
          if(skin=="modern") BodyCId = "mw_contentholder";
          if(skin=="cologneblue"||skin=="standard"||skin=="nostalgia") BodyCId = "article";
          var BodyC = LiveNewUsers_GetElementWithId(BodyCId, Traitement, "div");
          var PreviewContainer = document.createElement('div');
          var is_ie = ((navigator.userAgent.toLowerCase().indexOf("msie") != -1) && (navigator.userAgent.toLowerCase().indexOf("opera") == -1));
          if(is_ie){
               LargeurEcran = parseInt(screen.width);
               HauteurEcran = parseInt(screen.height);
          }else{
               LargeurEcran = parseInt(window.innerWidth);
               HauteurEcran = parseInt(window.innerHeight);
          }
          PreviewContainer.id = "LiveNewUsers_PreviewContainer_" + LiveNewUsers_PreviewIndex;
          PreviewContainer.className = "LiveNewUsers_PreviewContainer";
          PreviewContainer.style.position='fixed';
          PreviewContainer.style.zIndex= LiveNewUsers_PreviewZIndex;
          PreviewContainer.style.width= '75%';
          PreviewContainer.style.height = parseInt(HauteurEcran/1.5) + "px";
          PreviewContainer.onclick = function(){
               this.style.zIndex = LiveNewUsers_PreviewZIndex;
               LiveNewUsers_PreviewZIndex++
          }

          var PreviewTopBar = document.createElement('div');
          PreviewTopBar.className = "LiveNewUsers_PreviewTopBar";
          PreviewTopBar.style.height = "50px";
          var Links = document.createElement('span');
          Links.className = "LiveNewUsers_PreviewTopBarLinks";
          var CloseLink = document.createElement('a');
          CloseLink.appendChild(document.createTextNode("Fermer"));
          CloseLink.href = "javascript:LiveNewUsers_ClosePreview("+LiveNewUsers_PreviewIndex+");";
          Links.appendChild(CloseLink);
          PreviewTopBar.appendChild(Links);

          var PreviewWindow = document.createElement('div');
          PreviewWindow.className = "LiveNewUsers_PreviewWindow";
          PreviewWindow.innerHTML = BodyC.innerHTML;
          PreviewWindow.style.top = '50px';
          PreviewWindow.style.height = parseInt((HauteurEcran/1.5)-100) + "px";

          var PreviewBottomBar = document.createElement('div');
          PreviewBottomBar.className = "LiveNewUsers_PreviewBottomBar";
          PreviewBottomBar.style.height = "50px";
          PreviewBottomBar.style.bottom = '0px';

          PreviewContainer.appendChild(PreviewTopBar);
          PreviewContainer.appendChild(PreviewWindow);
          PreviewContainer.appendChild(PreviewBottomBar);
          document.body.appendChild(PreviewContainer);

          PositionGauche = parseInt((LargeurEcran-PreviewContainer.clientWidth)/2) ;
          PositionHaut = parseInt((HauteurEcran-PreviewContainer.clientHeight)/4) ;
          PreviewContainer.style.left=PositionGauche + 'px';
          PreviewContainer.style.top=PositionHaut + 'px';

          var ElementsToMove = new Array(PreviewContainer);  
          var ElementsToResize = new Array(PreviewContainer, PreviewWindow);
          var ElementsMinWidth = new Array(150, 150);
          var ElementsMinHeights = new Array(200, 100);

          MoveResizeFixed_AddMoveArea(PreviewTopBar, ElementsToMove);
          MoveResizeFixed_AddResizeArea(PreviewBottomBar, ElementsToResize, ElementsMinWidth, ElementsMinHeights);

          while(Traitement.firstChild){ Traitement.removeChild(Traitement.firstChild); }
          LiveNewUsers_PreviewZIndex++
          LiveNewUsers_PreviewIndex++
     }
     NouvelleRequete.send(null);
}
 
function LiveNewUsers_ClosePreview(Index){
     var PreviewWindow = document.getElementById("LiveNewUsers_PreviewContainer_" + Index);
     if(PreviewWindow) PreviewWindow.parentNode.removeChild(PreviewWindow);
}

function LiveNewUsers_GetElementWithId(elementId, elementParentNode, elementTagName){
     if(!elementParentNode) elementParentNode = document;
     if(!elementTagName) elementTagName = "*";
     if(!elementId) return false;

     var TheElement = null;
     var Elements = elementParentNode.getElementsByTagName(elementTagName);
     var elementcount = 0;
     while(elementcount<Elements.length){
          var Id = Elements[elementcount].id;
          if(Id){
               if(Id.indexOf(elementId)!=-1){
                    TheElement = Elements[elementcount];
                    break;
               }
          }
          elementcount++
     }
     return TheElement;

}