Utilisateur:Dr Brains/LumiereSur.js

Aujourd'hui, nous souhaitons aborder un sujet qui nous concerne tous : Utilisateur:Dr Brains/LumiereSur.js. Qu'il s'agisse d'un phénomène social, d'une personne pertinente, d'un événement historique ou de toute autre situation, il est important de s'arrêter et de réfléchir sur ce sujet et d'explorer ses implications dans notre vie quotidienne. Dans cet article, nous approfondirons différents aspects liés à Utilisateur:Dr Brains/LumiereSur.js pour comprendre son impact sur notre société, sa pertinence aujourd'hui et comment il peut influencer notre avenir. Poursuivez votre lecture pour en savoir plus sur Utilisateur:Dr Brains/LumiereSur.js et son importance dans le monde d'aujourd'hui.
/*
== Code JavaScript ==
 
* Durée de la mise à jour : 

{{Projet:JavaScript/Script}} 
{{Boîte déroulante début|titre=Lumière sur...}}<!--
*/
// --><source lang=javascript>
// <nowiki>

var LumiereSur_Adresse = mw.config.get('wgServer') + mw.config.get('wgScript') + "?title=";

var LumiereSur_ModeleDefaut = '<noinclude>\n'
                              + '{{Lumière sur...\n'
                              + '|page=$1\n'
                              + '|catégorie=$2\n'
                              + '|miseAjour=$3\n'
                              + '|nbArticles=$4\n'
                              + '}}</noinclude>\n'

var LumiereSur_DebutModele = '<!-- Ce modèle est créé automatiquement par un robot. Lumière sur DEBUT -->\n';

var LumiereSur_FinModele = '<!-- Ce modèle est créé automatiquement par un robot. Lumière sur FIN -->\n';

var LumiereSur_ResumeModif = 'Mise à jour du modèle {{Lumière sur}}';

// Boîtes déroulantes fenêtre de rendu

var LumiereSur_Enrouler = '';
var LumiereSur_Derouler = '';
var LumiereSur_indexBoitesDeroulantes = 0;


// Lancement 

if( (mw.config.get('wgAction')!="edit")&&(mw.config.get('wgAction')!="submit") ){
     addOnloadHook(LumiereSur_makeUpdateLinks);
}

// recherche des modèles de la page et ajout des liens de mise à jour

var LumiereSur_AnalysisDivCount = 0;
function LumiereSur_makeUpdateLinks(){
     var Cadres = document.getElementsByTagName('span');
     for(s=0;s<Cadres.length;s++){
            if( $(Cadres).hasClass('categoryLumiereSur') ){          
                  LumiereSur_AnalysisDivCount++
                  Cadres.id = 'categoryLumiereSur_'+LumiereSur_AnalysisDivCount;
                  var ParamCategorie = Cadres.firstChild.innerHTML;
                  var ParamPage = Cadres.firstChild.title;
                  var NewButton = '<a href="javascript:LumiereSur_makeControlPanel(\'categoryLumiereSur_'
                  +LumiereSur_AnalysisDivCount+ '\');" title="Cliquer pour  mettre à jour l\'analyse de la catégorie ' + ParamCategorie + ' sur la page '+ParamPage+'" >Mettre à jour le modèles {{Lumière sur}}</a><br/>' ;
                  Cadres.innerHTML += NewButton ;
            }
     }
}

// vérifie les paramètres du modèle cliqué et crée le tableau de bord 

var LumiereSur_Categorie;            // Catégorie à analyser
var LumiereSur_PagePortail;          // Page à éditer
var LumiereSur_Informations;         // Tableau de bord : cadre informations
var LumiereSur_BoutonCancel;         // Tableau de bord : cadre bouton pour annuler
var LumiereSur_PageCible;            // Tableau de bord : cadre affichage de la page ciblée
var LumiereSur_PageRequete;          // Tableau de bord : cadre affichage des requêtes
var LumiereSur_ListeArticles;        // Tableau de bord : liste des articles de la catégorie

var LumiereSur_PagesCategorieCible = 1;   // Compte des pages de catégorie
var LumiereSur_TotalArticles = 0;         // Compte des pages incluses dans la catégorie 
var LumiereSur_Result = new Array();      // "Rangées" du futur modèle
 
function LumiereSur_makeControlPanel(id){
        if(!id) return;
        var Cadre = document.getElementById(id);
        var Bouton = Cadre.firstChild;           
        LumiereSur_Categorie = Bouton.innerHTML;
        LumiereSur_PagePortail = Bouton.title;
        
        if( (LumiereSur_Categorie=='')||(LumiereSur_PagePortail=='') ) return;
        window.scrollTo(0,0); void 0;
        var TableauDeBord = document.createElement('div');
        TableauDeBord.id = 'Tableau_de_bord';
        TableauDeBord.innerHTML = ''
+ '<div style="position:absolute;top:0px;left:0px;width:800px;height:40px;padding:5px;font-weight:bold;background-color:white;border:3px double black;" ><ul id="Informations" ></ul></div>'
+ '<div id="Bouton_Cancel" style="position:absolute;top:0px;left:820px;width:600px;height:40px;padding:5px;font-weight:bold;background-color:white;border:3px double black;text-align:center;" ></div>'
+ '<div id="Page_cible" style="position:absolute;top:60px;left:0px;width:800px;height:800px;overflow:scroll;padding: 0.5em;background-color:white;border:3px double black;" ></div>'
+ '<div id="Page_requete" style="position:absolute;top:880px;left:0px;width:800px;height:800px;overflow:scroll;padding: 0.5em;background-color:white;border:3px double black;" ></div>'
+ '<div style="position:absolute;top:60px;left:820px;height:1620px;overflow-y: auto;width:600px; padding: 0.5em;background-color:white;border:3px double black;" >'
+ '<center>Pages de la catégorie <b>'+LumiereSur_Categorie.replace(/Catégorie:/g,'')+'</b></center><hr size="1" style="margin:0.5em;" /><ul id="Liste_Articles"></ul></div>';
        document.body.appendChild(TableauDeBord);
        TableauDeBord.style.position = 'absolute';
        TableauDeBord.style.zIndex = '150';
        TableauDeBord.style.top = '20px';
        TableauDeBord.style.left = '20px';
        LumiereSur_Informations = document.getElementById("Informations");
        LumiereSur_BoutonCancel = document.getElementById("Bouton_Cancel");
        LumiereSur_PageRequete = document.getElementById("Page_requete");
        LumiereSur_PageCible = document.getElementById("Page_cible");
        LumiereSur_ListeArticles = document.getElementById("Liste_Articles");
        if( (!LumiereSur_PageCible)||(!LumiereSur_BoutonCancel)||(!LumiereSur_ListeArticles)||(!LumiereSur_PageRequete) ){
                return;
        }else{
                LumiereSur_BoutonCancel.innerHTML = '<a href="'+LumiereSur_Adresse + encodeURIComponent(mw.config.get('wgPageName'))+'"title="Arrêter la mise à jour" >'
                                        +'<img src="http://upload.wikimedia.org/wikipedia/commons/0/0c/Crystal_Clear_action_exit.png" height="40" width="40" alt="Arrêter la mise à jour"/></a>';

                var ajaxRequest = new XMLHttpRequest();
                if (!ajaxRequest){
                        alert('Méthode ajax non supportée : new XMLHttpRequest()');
                        return;
                }else{
                        var url = LumiereSur_Adresse + decodeURIComponent(LumiereSur_PagePortail).replace(/ /g, "_").replace(/%3A/g, ":").replace(/%2F/g, "/").replace(/%27/g, "\'")+ '&action=render' ;
                        LumiereSur_Informations.innerHTML = '<li>Requête ajax de la page à éditer : '+LumiereSur_PagePortail+'</li><li>' + url + '</li>';
                        ajaxRequest.open("GET", url, true);
                        ajaxRequest.send(null);
                        ajaxRequest.onreadystatechange = function() {
                                if(ajaxRequest.readyState == 4 && ajaxRequest.status == 200) {
                                        var ajaxResponse;    
                                        ajaxResponse = ajaxRequest.responseText;
                                        LumiereSur_PageCible.innerHTML = ajaxResponse;
                                        LumiereSur_cleanContent(LumiereSur_PageCible);

                                        var Suretcertain = confirm('Paramètres :'
                                                               + '\n* Page à mettre à jour : - ' + LumiereSur_PagePortail + ' - '
                                                               + '\n* Catégorie : - ' + LumiereSur_Categorie + ' - '
                                                               + '\n\n Lancer la mise à jour ?' );
                                        if(!Suretcertain) return;
                                        LumiereSur_checkCategory(LumiereSur_Adresse + encodeURIComponent(LumiereSur_Categorie) + '&action=render');
                                }
                        }
                }
        }
}

// analyse la catégorie : requête ajax, recopie des liens dans une colonne du tableau de bord, renouvellement si il y a d'autres pages puis lancement de la fonction analyse d'historique

function LumiereSur_checkCategory(Cible){
        var AutrePage=false;
        var AutrePageAdresse ='';
        LumiereSur_PageRequete.innerHTML = '';
        var ajaxRequest = new XMLHttpRequest();
        if (!ajaxRequest){
                alert('Méthode ajax non supportée : new XMLHttpRequest()');
                return;
        }else{
                var url = decodeURIComponent(Cible).replace(/ /g, "_").replace(/%3A/g, ":").replace(/%2F/g, "/").replace(/%27/g, "\'") ;
                LumiereSur_Informations.innerHTML = '<li>Requête ajax de la catégorie : page '+LumiereSur_PagesCategorieCible+'</li><li>' + url + '</li>';
                ajaxRequest.open("GET", url, true);
                ajaxRequest.send(null);
                ajaxRequest.onreadystatechange = function() {
                        if(ajaxRequest.readyState == 4 && ajaxRequest.status == 200) {
                                var ajaxResponse;    
                                ajaxResponse = ajaxRequest.responseText;
                                LumiereSur_PageRequete.innerHTML = ajaxResponse; 
                                var ContenuCategorie = getElementWithId(LumiereSur_PageRequete, 'div', 'mw-pages');
                                var LiensCategorie = ContenuCategorie.getElementsByTagName('li');
                                for(a=0;a<LiensCategorie.length;a++){
                                        PageCibleCategory = LiensCategorie.innerHTML;
                                        if(PageCibleCategory.indexOf(mw.config.get('wgFormattedNamespaces'))==-1){
                                                LumiereSur_ListeArticles.innerHTML += '<li>' + PageCibleCategory + '</li>';
                                                LumiereSur_TotalArticles++
                                        }
                                }
                                LumiereSur_Informations.innerHTML = 'Recherche de page supplémentaires';
                                var TousLiens = LumiereSur_PageRequete.getElementsByTagName('a');
                                var length = TousLiens.length;
                                var dernierLien = TousLiens.href;
                                if(dernierLien.indexOf("&from=")!=-1){
                                        LumiereSur_PagesCategorieCible++
                                        AutrePageAdresse = dernierLien + '&action=render';
                                        LumiereSur_checkCategory(AutrePageAdresse);
                                }else{
                                        LumiereSur_checkPage( 0, LumiereSur_TotalArticles)
                                }
                        }
                }
        } 
}

// analyse la page : requête ajax, recopie les infos recherchées dans le tableau de bord sous chaque lien puis lancement de la fonction d'édition

var LumiereSur_checkedPages=0;
function LumiereSur_checkPage(Position, LumiereSur_TotalArticles){



        var Lien = LumiereSur_ListeArticles.getElementsByTagName('a');
        if(!Lien) {
                LumiereSur_editPage();
        }
        LiParent = Lien.parentNode;
        TitrePage = Lien.innerHTML.replace(/&amp;/, "&"); 
        TitrePage = TitrePage.split(mw.config.get('wgFormattedNamespaces')+":").join(""); 
        LumiereSur_PageRequete.innerHTML = '';

        var ajaxRequest = new XMLHttpRequest();
        if (!ajaxRequest){
                alert('Méthode ajax non supportée : new XMLHttpRequest()');
                return;
        }else{
                var url = LumiereSur_Adresse + decodeURIComponent(TitrePage).replace(/ /g, "_").replace(/%3A/g, ":").replace(/%2F/g, "/").replace(/%27/g, "\'").replace(/&/g, "%26") + '&action=edit' ;
                LumiereSur_Informations.innerHTML = '<li>Requête ajax de la page ' + Position + ' sur ' + LumiereSur_TotalArticles + '</li><li>'  + url + '</li>';
                ajaxRequest.open("GET", url, true);
                ajaxRequest.send(null);
                ajaxRequest.onreadystatechange = function() {
                        if(ajaxRequest.readyState == 4 && ajaxRequest.status == 200) { 
                                var ajaxResponse;    
                                ajaxResponse = ajaxRequest.responseText;
                                LumiereSur_PageRequete.innerHTML = ajaxResponse;

                                var ContenuPage = document.getElementById("wpTextbox1").value;

                                var Introduction = ContenuPage;
                                if(Introduction.indexOf("==")!=-1){
                                        while((Introduction.indexOf("==")!=-1)){
                                                Introduction = Introduction .substring(0, Introduction.indexOf("=="));
                                        }
                                        if(Introduction.indexOf("<ref>")!=-1) Introduction += '\n<references />\n';


                                        //alert(Introduction);
                                        LumiereSur_Result = '<noinclude>\n'
                                                                            + '== ] ==\n'
                                                                            + '</noinclude>\n'
                                                                            + '| '+(LumiereSur_checkedPages+1)+' = <!-- ------------------------------------------------------------------------- DÉBUT -->\n'
                                                                            + Introduction + '\n'
                                                                            + '\'\']\'\'<br clear="all" />'
                                                                            + '<!-- -------------------------------------------------------------------------- FIN -->\n';
                                        LiParent.innerHTML =  LiParent.innerHTML + '<li style="color:green;" >OK</li>';
                                        LumiereSur_checkedPages++

                                }
                                LumiereSur_checkPage((Position+1), LumiereSur_TotalArticles);
                        }
                }
        } 
}

// édition de la page : cherche la présence d'un tableau précédent, crée un tableau et remplace le tableau existant

function  LumiereSur_editPage(){
        LumiereSur_PageRequete.innerHTML = '';
        var ajaxRequest = new XMLHttpRequest();
        if (!ajaxRequest){
                alert('Méthode ajax non supportée : new XMLHttpRequest()');
                return;
        }else{
                url = LumiereSur_Adresse + decodeURIComponent(LumiereSur_PagePortail).replace(/ /g, "_").replace(/%3A/g, ":").replace(/%2F/g, "/").replace(/%27/g, "\'").replace(/&/g, "%26") + '&action=edit';
                LumiereSur_Informations.innerHTML = '<li>Édition de la page : ' + LumiereSur_PagePortail + '</li><li>' + url + '</li>';
                ajaxRequest.open("GET", url, true);
                ajaxRequest.send(null);
                ajaxRequest.onreadystatechange = function() {
                        if(ajaxRequest.readyState == 4 && ajaxRequest.status == 200) {
                                var ajaxResponse;    
                                ajaxResponse = ajaxRequest.responseText;
                                LumiereSur_PageCible.innerHTML = ajaxResponse;

// -----------------------------------------------------------------------------------------------------------------------

/*
var LumiereSur_ModeleDefaut = '<noinclude>\n'
                              + '{{Lumière sur\n'
                              + '|page=$1\n'
                              + '|catégorie=$2\n'
                              + '|miseAjour=$3\n'
                              + '|nbArticles=$4\n'
                              + '}}</noinclude>\n'
*/

                                var NouveauModele = LumiereSur_ModeleDefaut;

                                var Aujourdhui = new Date();
                                var Minutes   = Aujourdhui.getMinutes()
                                if(Minutes<10){ var ZeroMinutes = "0" ; }else{ var ZeroMinutes = "";}
                                var Heures   = Aujourdhui.getHours()
                                if(Heures<10){ var ZeroHeures = "0" ; }else{ var ZeroHeures = "";}
                                var Jour   = Aujourdhui.getDate();
                                if(Jour<10){ var ZeroJour = "0" ; }else{ var ZeroJour = "";}
                                var Mois = Aujourdhui.getMonth() + 1;
                                if(Mois<10){ var ZeroMois = "0" ; }else{ var ZeroMois = "";}
                                var Annee  = Aujourdhui.getYear();
                                if (Annee < 2000){
                                        Annee = Annee + 1900;
                                }
                                var LumiereSur_miseAjour = 'le '+ZeroJour+Jour+'/'+ZeroMois+Mois+'/'+Annee+' à '+ZeroHeures+Heures+':'+ZeroMinutes+Minutes;


                                NouveauModele = NouveauModele.split('$1').join(LumiereSur_PagePortail);
                                NouveauModele = NouveauModele.split('$2').join(LumiereSur_Categorie);
                                NouveauModele = NouveauModele.split('$3').join(LumiereSur_miseAjour);
                                NouveauModele = NouveauModele.split('$4').join(LumiereSur_checkedPages);

                                NouveauModele += '<includeonly>{{#switch: {{{1}}} </includeonly><noinclude>' + LumiereSur_DebutModele + '<noinclude>';



                                for(a=0;a<LumiereSur_Result.length;a++){
                                        NouveauModele += LumiereSur_Result;
                                }

                                NouveauModele += '<includeonly>}}</includeonly>' + LumiereSur_FinModele + '\n';

                                var ContenuPage = document.getElementById("wpTextbox1").value;
                                var AncienResumeModif = document.editform.wpSummary.value;

// -----------------------------------------------------------------------------------------------------------------------

                                document.getElementById ("wpTextbox1").value = NouveauModele ;
                                document.editform.wpSummary.value = AncienResumeModif + LumiereSur_ResumeModif ;

                                LumiereSur_Informations.innerHTML = '<li>Sauvegarde de la page : ' + LumiereSur_PagePortail + '</li>';
                                var SurEtCertain = confirm('Sauvegarder la modification ?');
                                if(SurEtCertain) document.editform.submit();
                                LumiereSur_Informations.innerHTML += '<li>' + decodeURIComponent(action) +'</li>';
                        }
                }
        }
}

// * Recherche d'un élement dont on connait l'Id mais non unique, donc sans utiliser document.getElementById() 
 
function getElementWithId( elementParentNode , elementTagName , elementId ){
      if(!elementParentNode) elementParentNode = document; 
      var TheElement = false;
      var Elements = elementParentNode.getElementsByTagName(elementTagName);
      var elementcount = 0;
      while(elementcount<Elements.length){
            var Id = Elements.id;
            if(Id){
                  if(Id.indexOf(elementId)!=-1){
                        TheElement = Elements;
                  }
            }
            elementcount++
      }
      return TheElement;
}

function LumiereSur_cleanContent(element){
        if(!element) element = document;
 
        var newContentWrapper = element.getElementsByTagName("div");
        var div=0;
        while(div<newContentWrapper.length){
                if( ($(newContentWrapper).hasClass("portlet")) || ($(newContentWrapper).hasClass("printfooter"))){
                        newContentWrapper.style.display="none";
                }
                if (
                ($(newContentWrapper).hasClass("NavFrame"))  // ************************************* Boîtes déroulantes
                ){          
                    LumiereSur_indexBoitesDeroulantes++;
                    var NavFrame = newContentWrapper;
                    NavFrame.title= LumiereSur_Enrouler;
                    NavFrame.id =  'LumiereSur_NavFrame_' + LumiereSur_indexBoitesDeroulantes;
                    NavHead =  NavFrame.firstChild;
                    var NavToggle = document.createElement("a");
                    NavToggle.className = 'NavToggle';
                    NavToggle.id = 'LumiereSur_NavToggle_' + LumiereSur_indexBoitesDeroulantes;
                    NavToggle.href = 'javascript:LumiereSur_toggleCollapsibleTables(' + LumiereSur_indexBoitesDeroulantes + ');'; 
                    NavToggle.innerHTML = LumiereSur_Enrouler;
                    newContentWrapper.insertBefore( NavToggle, NavHead );  
                    var Content = newContentWrapper.getElementsByTagName("div");
                    for( var c=0;c<Content.length; c++ ) {
                        if ($(Content).hasClass("NavContent")) { 
                           Content.id = 'LumiereSur_NavContent_' + LumiereSur_indexBoitesDeroulantes;
                        }
                    }
                    LumiereSur_toggleCollapsibleTables(LumiereSur_indexBoitesDeroulantes);
               }

                Div_Id = newContentWrapper.id;
                if(Div_Id){
                        if((Div_Id=="globalWrapper")||(Div_Id=="column-content")||(Div_Id=="content")||(Div_Id=="bodyContent")||(Div_Id=="article")||(Div_Id=="mw_main")||(Div_Id=="mw_contentwrapper")||(Div_Id=="mmw_content")||(Div_Id=="mmw_contentholder")){
                                newContentWrapper.id = newContentWrapper.id + '_' + div; 
                        }
                        if((Div_Id=="siteNotice")||(Div_Id=="p-personal")||(Div_Id=="topbar")||(Div_Id=="quickbar")||(Div_Id=="column-one")||(Div_Id=="mw_portlets")||(Div_Id=="page-base")||(Div_Id=="head-base")||(Div_Id=="head")||(Div_Id=="panel")||(Div_Id=="footer")||(Div_Id=="previewnote")){
                                newContentWrapper.style.display= "none";
                        }   
                }
                div++        
        }
}

function LumiereSur_toggleCollapsibleTables(index) {
    var NavToggle = document.getElementById("LumiereSur_NavToggle_" + index);
    var NavContent = document.getElementById("LumiereSur_NavContent_" + index);
    var NavFrame = document.getElementById("LumiereSur_NavFrame_" + index);
 
    if( (!NavToggle) || (!NavContent) ) return; 
 
    var Caption = NavToggle.innerHTML;  
    if (Caption == LumiereSur_Enrouler) {
        NavContent.style.display = 'none';
        NavToggle.innerHTML = LumiereSur_Derouler; 
        NavFrame.title = LumiereSur_Derouler; 
    } else if (Caption == LumiereSur_Derouler) {
        NavContent.style.display = 'block';
        NavToggle.innerHTML = LumiereSur_Enrouler;
        NavFrame.title = LumiereSur_Enrouler;
    }
}

// </nowiki>
//</source>{{Boîte déroulante fin}}