MediaWiki:Gadget-MaintenanceCategorie.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.
/*
== Code JavaScript ==
 
* Licence : Domaine public

* Pour installer, ajouter la ligne suivante dans votre [[Special:Mypage/common.js|/common.js]] :
<source lang=javascript>
obtenir('MaintenanceCategorie');
</source>

{{Catégorisation JS|MaintenanceCategorie}}
{{Boîte déroulante début|titre=[[MediaWiki:Gadget-MaintenanceCategorie.js|Code JS Maintenance catégorie]]}}<!--
*/
// --><source lang=javascript>
// <nowiki>

//////////////////////////////////////////////////////////////////////// VARIABLES ////////////////////////////////////////////////////

/* Tableau de statistiques */

var CatMaintenance_DebutModeleStats = '<!-- Ce tableau est créé automatiquement par un robot. Maintenance de catégorie Statistiques DEBUT -->\n';

var CatMaintenance_TableauStats = '{| class="wikitable centre"\n'
                                 +'|-\n'
                                 +'! Pages sans bandeau d\'ébauche || {{Avancement|{{#expr:($1)/(TOTAL)*100 round 0}}|||||||1}}\n'
                                 +'|-\n'
                                 +'! Pages sans bandeaux d\'avertissement || {{Avancement|{{#expr:($2)/(TOTAL)*100 round 0}}|||||||1}}\n'
                                 +'|-\n'
                                 +'! Pages avec bandeau de portail || {{Avancement|{{#expr:($3)/(TOTAL)*100 round 0}}|||||||1}}\n'
                                 +'|-\n'
                                 +'! Pages avec images || {{Avancement|{{#expr:($4)/(TOTAL)*100 round 0}}|||||||1}}\n'
                                 +'|-\n'
                                 +'! Pages sans liens rouges || {{Avancement|{{#expr:($5)/(TOTAL)*100 round 0}}|||||||1}}\n'
                                 +'|-\n'
                                 +'! Pages avec catégories || {{Avancement|{{#expr:($6)/(TOTAL)*100 round 0}}|||||||1}}\n'
                                 +'|-\n'
                                 +'! Pages avec liens inter-langues || {{Avancement|{{#expr:($7)/(TOTAL)*100 round 0}}|||||||1}}\n'
                                 +'|-\n'
                                 +'! Pages avec liens inter-projets || {{Avancement|{{#expr:($8)/(TOTAL)*100 round 0}}|||||||1}}\n'
                                 +'|-\n'
                                 +'! Pages avec références || {{Avancement|{{#expr:($9)/(TOTAL)*100 round 0}}|||||||1}}\n'
                                 +'|}\n'

var CatMaintenance_FinModeleStats = '<!-- Ce tableau est créé automatiquement par un robot. Maintenance de catégorie Statistiques FIN -->\n';

/* Modèle ajouté par défaut : début et fin de cadre défilant */

var CatMaintenance_ModeleDefautDebut = '{{Maintenance de catégorie\n'
                  + '|portail=$1\n'
                  + '|page=$2\n'
                  + '|catégorie=$3\n'
                  + '|défilant=oui\n'
                  + '|hauteur=250\n'
                  + '}}\n'

var CatMaintenance_ModeleDefautFin = '{{Maintenance de catégorie fin}}\n';


/* Tableau de statistiques détaillées */

var  CatMaintenance_DebutModele = '<!-- Ce tableau est créé automatiquement par un robot. Maintenance de catégorie DEBUT -->\n';

var CatMaintenance_DebutTableauTriable = '<templatestyles src="Maintenance de catégorie/styles.css" />\n'
                                       + '{| class="wikitable centre sortable tableau-maintenance-categorie" width="100%"\n'
                                       + '|+ \'\'Catégorie : \'\'\'[[:$1|$2]]\'\'\' - $3 pages - Tableau [[Modèle:Maintenance de catégorie/Documentation|mis à jour]] le $4/$5/$6 à $7:$8\'\'\n'
                                       + '|-\n'
                                       + '! Page<br/>\n'
                                       + '! Ébauche<br/>\n'
                                       + '! Bandeaux d\'avertissement<br/>\n'
                                       + '! Bandeaux de portail<br/>\n'
                                       + '! Images<br/>\n'
                                       + '! Liens rouges<br/>\n'
                                       + '! Catégories<br/>\n'
                                       + '! Inter-langues<br/>\n'
                                       + '! Inter-projets<br/>\n'
                                       + '! Références<br/>\n'

var CatMaintenance_FinModele = '<!-- Ce tableau est créé automatiquement par un robot. Maintenance de catégorie FIN -->\n';

/* Résumé de modification */

var CatMaintenance_ResumeModif = 'Mise à jour du modèle {{Maintenance de catégorie}} - Catégorie : [[:$1]]';


var CatMaintenance_StartButton = '<img height="50" width="50" src="https://upload.wikimedia.org/wikipedia/commons/thumb/4/4a/Crystal_Clear_action_exit.svg/50px-Crystal_Clear_action_exit.svg.png" alt="Lancer la mise à jour">';
 
var CatMaintenance_WorkingButton = '<img height="50" width="50" src="https://upload.wikimedia.org/wikipedia/commons/d/de/Ajax-loader.gif" alt="Mise à jour en cours">';


//////////////////////////////////////////////////////////////////////// FIN DES VARIABLES ////////////////////////////////////////////////////


/* ************************************************************************************************************************************ 
1- recherche des modèles {{Maintenance de catégorie}} de la page courante
2- ajout des liens de mise à jour
*/

function CatMaintenance_makeUpdateLinks(){
     var count=-1;
     var Cadres = document.getElementsByClassName('categoryMaintenance');
     for(var s=0,l=Cadres.length;s<l;s++){
          count++
          Cadres[s].id = 'categoryMaintenance_'+count;
          var ParamCategorie = Cadres[s].firstChild.innerHTML;
          var ParamPage = Cadres[s].firstChild.title;
          var NewButton = '<a id="categoryMaintenanceLink_'+count+'" href="javascript:CatMaintenance_GetParams('+count+');" title="Cliquer pour  mettre à jour l\'analyse de la catégorie ' + ParamCategorie + ' sur la page '+ParamPage+'" >'+CatMaintenance_StartButton+'</a>' ;
          Cadres[s].innerHTML += NewButton ;
     }
}

function CatMaintenance_GetParams(index){
     var Modele = document.getElementById('categoryMaintenance_'+index);
     if(!Modele) return;
     var Cadre = Modele.firstChild;
     if(!Cadre) return;
     var ParamCategorie = Cadre.innerHTML;
     var ParamPage = Cadre.title;
     var ParamPortail = Cadre.className;
     if(ParamPortail!='') ParamPortail = "Portail:" + ParamPortail.replace(/_/g, " ");
     var Pop = 'Catégorie à vérifier :\n'
             + '* '+ParamCategorie+'\n\n'
             + 'Page à mettre à jour :\n'
             + '* '+ParamPage+'\n\n'
             + 'Projet de référence :\n'
             + '* '+ParamPortail+'\n\n'
             + 'Continuer ?';
     var SurEtCertain = confirm(Pop);
     if(SurEtCertain){
          Modele.innerHTML += '<br /><span id="WorkingFunction" ></span><br /><span id="WorkingPage" ></span>';
          var Lien = document.getElementById('categoryMaintenanceLink_'+index)
          if(Lien){
               Lien.innerHTML = CatMaintenance_WorkingButton ;
               Lien.title = "Arrêter la mise à jour" ;
               Lien.href = "javascript:window.location.reload();";
               Lien.blur();
          }
          mw.loader.using(['mediawiki.util', 'mediawiki.api'], function () {
               CatMaintenance_CheckCategory(ParamPage, ParamCategorie, ParamPortail);
          });
     }
}

// ///////////////////////////////////////////////////// REQUÊTE PAGES DE LA CATÉGORIE /////////////////////////
 
function CatMaintenance_CheckCategory(ParamPage, ParamCategorie, ParamPortail, ParamContinue, PageList){
    if (!PageList) {
        PageList = [];
    }
    if (mw.config.get('wgUserGroups').indexOf('sysop') !== -1 || mw.config.get('wgUserGroups').indexOf('bot') !== -1) {
        var APILimit = 5000;
    } else {
        var APILimit = 500;
    }
    document.getElementById('WorkingFunction').innerHTML = 'Listage des pages';
    document.getElementById('WorkingPage').innerHTML = mw.html.escape(ParamCategorie);
    var params = {
        'format'      : 'json',
        'action'      : 'query',
        'list'        : 'categorymembers',
        'cmtitle'     : ParamCategorie,
        'cmprop'      : 'title',
        'cmnamespace' : '0|1',
        'cmlimit'     : APILimit,
    };
    if (ParamContinue) {
        Object.assign(params, ParamContinue);
    }
    new mw.Api().get(params).done(function (data) {
        var prefixeDiscussion = mw.config.get('wgFormattedNamespaces')[1] + ':';
        $.each(data.query.categorymembers, function (_, member) {
            var ns = member.ns;
            var title = member.title;
            if (ns === 1) {
                title = title.split(prefixeDiscussion).join('');
            }
            if (PageList.indexOf(title) === -1) {
                PageList.push(title);
            }
        });
        if (data.continue) {
            CatMaintenance_CheckCategory(ParamPage, ParamCategorie, ParamPortail, data.continue, PageList);
        } else {
            CatMaintenance_CheckPage(0, ParamPage, ParamCategorie, ParamPortail, PageList);
        }
    });
}


/* ************************************************************************************************************************************ 
Analyse de la page : 
1- requête ajax, 
2- recopie les infos recherchées dans le tableau de bord sous chaque lien
3- lancement de l'analyse de la page suivante
4- si la page n'existe pas, lancement de la fonction d'édition
*/

var CatMaintenance_checkedPage = -1;
var CatMaintenance_Result = new Array();

var CatMaintenance_NBPageEbauche = 0;
var CatMaintenance_NBPageAvert = 0;
var CatMaintenance_NBPagePortail = 0;
var CatMaintenance_NBPageImage = 0;
var CatMaintenance_NBPageLiensRouges = 0;
var CatMaintenance_NBPageCat = 0;
var CatMaintenance_NBPageInterwiki = 0;
var CatMaintenance_NBPageInterProjets = 0;
var CatMaintenance_NBPageReferences = 0;

function CatMaintenance_CheckPage(Position, ParamPage, ParamCategorie, ParamPortail, PageList){
      var TitrePage = PageList[Position];
      if(!TitrePage){
            CatMaintenance_EditPage(ParamPage, ParamCategorie, ParamPortail, PageList);
            return;
      }
      document.getElementById('WorkingFunction').innerHTML = "Analyse des pages";
      document.getElementById('WorkingPage').innerHTML = mw.html.escape(TitrePage);

      $.get(mw.util.getUrl(TitrePage), function (response) {
            CatMaintenance_CheckPageDone(response, {
                  Position: Position,
                  ParamPage: ParamPage,
                  ParamCategorie: ParamCategorie,
                  ParamPortail: ParamPortail,
                  PageList: PageList,
                  TitrePage: TitrePage
            });
      });
}

function CatMaintenance_CheckPageDone(response, data){
      var Position = data.Position;
      var ParamPage = data.ParamPage;
      var ParamCategorie = data.ParamCategorie; 
      var ParamPortail = data.ParamPortail; 
      var PageList = data.PageList; 
      var TitrePage = data.TitrePage;

      var CatMaintenance_PageRequete = new DOMParser().parseFromString(response, 'text/html');
      CatMaintenance_checkedPage++
      CatMaintenance_Result[CatMaintenance_checkedPage] = '|----\n'
                                                        + '| [['+TitrePage+']]';
      var Content = CatMaintenance_PageRequete.getElementById('mw-content-text');

// Recherche de bandeaux d'avertissement ------------------------------------------------------------------------------------------------------------

      var Listebandeaux = '';
      var Ebauche = '\n| non\n';
      var Bandeaux = Content.getElementsByTagName('div'); 
      for(var b=0;b<Bandeaux.length;b++){
            if( Bandeaux[b].classList.contains("bandeau-niveau-grave") ){ 
                  var BandeauLinkTitle = $(Bandeaux[b]).find('strong, b').first().text();
                  Listebandeaux += '\n* \'\'\'{{Citation|{{Coloré|red|'+BandeauLinkTitle+'}}}}\'\'\'';
            }
            else if( Bandeaux[b].classList.contains("bandeau-niveau-modere") ){
                  var BandeauLinkTitle = $(Bandeaux[b]).find('strong, b').first().text();
                  Listebandeaux += '\n* \'\'\'{{Citation|{{Coloré|#cb8500|'+BandeauLinkTitle+'}}}}\'\'\'';
            }
            else if( Bandeaux[b].classList.contains("bandeau-niveau-ebauche") ){
                  var BandeauLinkTitle = $(Bandeaux[b]).find('strong, b').first().text();
                  Ebauche = '\n| [[File:Panneau travaux.svg|15px|'+BandeauLinkTitle+']]\n';
            }
      }
      CatMaintenance_Result[CatMaintenance_checkedPage] += Ebauche+'| align="left" | '+Listebandeaux+'\n\n';

      if(Ebauche=='\n| non\n') CatMaintenance_NBPageEbauche++
      if(Listebandeaux == '') CatMaintenance_NBPageAvert++

// Recherche du bandeau de portail ------------------------------------------------------------------------------------------------------------

      var Listebandeaux = "";
      var NbBandeaux = 0;
      var Bandeaux = Content.getElementsByTagName('span'); 
      for(var b=0;b<Bandeaux.length;b++){
            if( Bandeaux[b].classList.contains("bandeau-portail-texte") ){ 
                  NbBandeaux++
                  var BandeauLinkTitle = Bandeaux[b].firstChild.title; 
                  if( BandeauLinkTitle.indexOf(ParamPortail) != -1  ){
                        Listebandeaux += '\n* \'\'\'⇨ [['+BandeauLinkTitle+']]\'\'\'';
                  }else{
                        Listebandeaux += '\n* <small>[['+BandeauLinkTitle+']]</small>';
                  }
            }
      }
      CatMaintenance_Result[CatMaintenance_checkedPage] += '| align="left" | '+Listebandeaux+'\n';
      if(NbBandeaux!=0) CatMaintenance_NBPagePortail++

// Recherche des images ------------------------------------------------------------------------------------------------------------

      var image = "red";
      var NbImages = 0;
      var TousImages = Content.getElementsByTagName('img');
      for(var a=0;a<TousImages.length;a++){                                       
            if( TousImages[a].parentNode.classList.contains("image") || TousImages[a].parentNode.classList.contains("mw-file-description") ){
                  var ImageWidth = parseInt(TousImages[a].width);
                  if(ImageWidth>101){
                        image = "green";
                        NbImages++
                  }
            }
      }
      CatMaintenance_Result[CatMaintenance_checkedPage] += '| class="eval-'+image+'" | '+NbImages+'\n'
      if(NbImages!=0) CatMaintenance_NBPageImage++

// Recherche des liens rouges ------------------------------------------------------------------------------------------------------------

      var RedLink="green";
      var NbRedLink = 0;
      var TousLiens = Content.getElementsByTagName('a');
      for(var a=0;a<TousLiens.length;a++){
            if( TousLiens[a].classList.contains("new") || (TousLiens[a].title.indexOf("(page inexistante)")!=-1) || (TousLiens[a].href.indexOf("&redlink=1")!=-1) ){
                  var WantedPageLink = TousLiens[a];
                  var WantedPageLinkTitle = WantedPageLink.title.split(' (page inexistante)').join(''); 
                  if( (WantedPageLinkTitle.indexOf(mw.config.get('wgFormattedNamespaces')[11])==-1) ){
                        NbRedLink++
                        RedLink="red";
                        if( (WantedPageLinkTitle.indexOf(mw.config.get('wgFormattedNamespaces')[6])!=-1)||(WantedPageLinkTitle.indexOf(mw.config.get('wgFormattedNamespaces')[14])!=-1)){
                              WantedPageLinkTitle = ':' + WantedPageLinkTitle;
                        }
                  }
            }
      }
      CatMaintenance_Result[CatMaintenance_checkedPage] += '| class="eval-'+RedLink+'" | '+NbRedLink+'\n'
      if(NbRedLink == 0) CatMaintenance_NBPageLiensRouges++

// Recherche des catégories ------------------------------------------------------------------------------------------------------------

      var Cat="red";
      var NbCat = 0;
      var CategorieNonCachees = CatMaintenance_PageRequete.getElementById('mw-normal-catlinks'); // Catégories non-cachées seulement
      if(CategorieNonCachees){
            var TousLiensCat = CategorieNonCachees.getElementsByTagName('a'); 
            for(var a=1;a<TousLiensCat.length;a++){
                  var LienHTML = TousLiensCat[a].innerHTML;
                  var LienTitle = TousLiensCat[a].title;
                  if( (LienHTML!='[+]') && (LienHTML!='(–)') && (LienHTML!='(±)') && (LienHTML!='(+)') ){   // Evitons les liens "catégories cachées" et "HotCats.js"
                        Cat="green";
                        NbCat++
                  }
            }
      }
      CatMaintenance_Result[CatMaintenance_checkedPage] += '| class="eval-'+Cat+'" | '+NbCat+'\n'
      if(NbCat!=0) CatMaintenance_NBPageCat++

// Recherche des liens interlangues ------------------------------------------------------------------------------------------------------------

      var Interwiki ="red";
      var NbInterwiki = 0;
      var PanneauInterwiki = CatMaintenance_PageRequete.getElementById('p-lang');
      if(PanneauInterwiki){
            var TousLiensInterwiki = PanneauInterwiki.getElementsByTagName('a'); 
            for(var a=0;a<TousLiensInterwiki.length;a++){
                  var LienHTML = TousLiensInterwiki[a].innerHTML;
                  var LienHref = decodeURIComponent(TousLiensInterwiki[a].href);
                  Interwiki="green";
                  NbInterwiki++
            }
      }
      CatMaintenance_Result[CatMaintenance_checkedPage] += '| class="eval-'+Interwiki+'" | '+NbInterwiki+'\n'
      if(NbInterwiki!=0) CatMaintenance_NBPageInterwiki++

// Recherche des liens inter-projet ------------------------------------------------------------------------------------------------------------

      var Interprojet ="red";
      var NbInterprojet = 0;
      var LiensCommons = Content.getElementsByClassName('wikilien_alternatif');
      var NbLiensCommons = LiensCommons.length;
      if (NbLiensCommons > 0) {
            Interprojet="orange";
            NbInterprojet += NbLiensCommons;
      }
      var PanneauAutresProjets = Content.getElementsByClassName('autres-projets');
      for(var ip=0,il=PanneauAutresProjets.length;ip<il;ip++){
            var TousLiensInterprojet = PanneauAutresProjets[ip].getElementsByTagName('li');
            var NbTousLiensInterprojet = TousLiensInterprojet.length;
            if (NbTousLiensInterprojet > 0) {
                  Interprojet="green";
                  NbInterprojet += NbTousLiensInterprojet;
            }
      }
      CatMaintenance_Result[CatMaintenance_checkedPage] += '| class="eval-'+Interprojet+'" | '+NbInterprojet+'\n'
      if(Interprojet=="green") CatMaintenance_NBPageInterProjets++


// Recherche références ------------------------------------------------------------------------------------------------------------
 
      var NBReference = 0;
      var ColorReference = "red";
                                
      var Ols = Content.getElementsByTagName('ol');
      if(Ols){
            for(var b=0;b<Ols.length;b++){
                  if(Ols[b].classList.contains('references') ){ 
                        var ReferenceOl = Ols[b];
                        var NewReferences = ReferenceOl.getElementsByTagName('li');
                        if(NewReferences){
                              NBReference = (NBReference + NewReferences.length);
                              if(NBReference>0) ColorReference = "green";
                        }
                  }
            }
      }
      CatMaintenance_Result[CatMaintenance_checkedPage] += '| class="eval-'+ColorReference+'" | '+NBReference+'\n'
      if(ColorReference=="green") CatMaintenance_NBPageReferences++

// Fin de l'analyse de la page ------------------------------------------------------------------------------------------------------------

      CatMaintenance_CheckPage((Position+1), ParamPage, ParamCategorie, ParamPortail, PageList);
}

/*******************************************************************************************************************
Édition de la page : 
1- crée les tableaux
1- cherche la présence des tableau précédents
3- remplacement ou ajout des tableaux existants
*/

function CatMaintenance_EditPage(ParamPage, ParamCategorie, ParamPortail, PageList){
      document.getElementById('WorkingFunction').innerHTML = "Édition de la page";
      document.getElementById('WorkingPage').innerHTML = mw.html.escape(ParamPage);

      $.get(mw.util.getUrl(ParamPage, {action: 'edit'}), function (response) {
            CatMaintenance_EditPageDone(response, {
                  ParamPage: ParamPage,
                  ParamCategorie: ParamCategorie,
                  ParamPortail: ParamPortail,
                  PageList: PageList
            });
      });
}

function CatMaintenance_EditPageDone(response, data){
      var ParamPage = data.ParamPage; 
      var ParamCategorie = data.ParamCategorie; 
      var ParamPortail = data.ParamPortail;
      var PageList = data.PageList;
      while(document.body.firstChild){document.body.removeChild(document.body.firstChild);} 
      document.body.innerHTML = response;
      var ContenuPage = document.getElementById("wpTextbox1").value;

      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.getFullYear();

/* Création du tableau de statistiques */

      var TableauStats = CatMaintenance_DebutModeleStats + CatMaintenance_TableauStats + CatMaintenance_FinModeleStats;
      if (PageList.length === 0) {
            // rustine dans le cas où la catégorie ne contiendrait aucune page,
            // car sinon cela effectue des divisions par 0 dans les #expr
            TableauStats = TableauStats.replace(/\{\{#expr:[^\}]+\}\}/g, '0');
      } else {
            TableauStats = TableauStats.split('$1').join(CatMaintenance_NBPageEbauche);
            TableauStats = TableauStats.split('$2').join(CatMaintenance_NBPageAvert);
            TableauStats = TableauStats.split('$3').join(CatMaintenance_NBPagePortail);
            TableauStats = TableauStats.split('$4').join(CatMaintenance_NBPageImage);
            TableauStats = TableauStats.split('$5').join(CatMaintenance_NBPageLiensRouges);
            TableauStats = TableauStats.split('$6').join(CatMaintenance_NBPageCat);
            TableauStats = TableauStats.split('$7').join(CatMaintenance_NBPageInterwiki);
            TableauStats = TableauStats.split('$8').join(CatMaintenance_NBPageInterProjets);
            TableauStats = TableauStats.split('$9').join(CatMaintenance_NBPageReferences);
            TableauStats = TableauStats.replace(/TOTAL/g, PageList.length);
      }

/* Création du tableau de statistiques détaillées */

      var TableauTriable = CatMaintenance_DebutModele + CatMaintenance_DebutTableauTriable;
      TableauTriable = TableauTriable.split('$1').join(ParamCategorie);
      TableauTriable = TableauTriable.split('$2').join(ParamCategorie.split('Catégorie:').join(''));
      TableauTriable = TableauTriable.split('$3').join(PageList.length);
      TableauTriable = TableauTriable.split('$4').join(ZeroJour + Jour);
      TableauTriable = TableauTriable.split('$5').join(ZeroMois + Mois);
      TableauTriable = TableauTriable.split('$6').join(Annee);
      TableauTriable = TableauTriable.split('$7').join(ZeroHeures + Heures);
      TableauTriable = TableauTriable.split('$8').join(ZeroMinutes + Minutes);
      for(var a=0;a<CatMaintenance_Result.length;a++){
            TableauTriable += CatMaintenance_Result[a];
      }
      TableauTriable += '|}\n' + CatMaintenance_FinModele;

/* Insertion tableau Triable */

      if( (ContenuPage.indexOf(CatMaintenance_DebutModele)!=-1)&&(ContenuPage.indexOf(CatMaintenance_FinModele)!=-1) ){
// Déja le tableau : remplacement
            var debutTexte = ContenuPage.substring(0, ContenuPage.indexOf(CatMaintenance_DebutModele));
            var AncienModele = ContenuPage.substring(0, ContenuPage.indexOf(CatMaintenance_FinModele)) + CatMaintenance_FinModele;
            AncienModele = AncienModele.replace(debutTexte, "");       
            var finTexte = ContenuPage.split(debutTexte).join('').split(AncienModele).join('');
            var TexteFinal = debutTexte + TableauTriable + finTexte;
      }else{         
// Pas de tableau : ajout modèle + tableau
            ParamPortail = ParamPortail.replace(/ /g, "_").split("Portail:").join('');
            CatMaintenance_ModeleDefautDebut = CatMaintenance_ModeleDefautDebut.split('$1').join(ParamPortail);
            CatMaintenance_ModeleDefautDebut = CatMaintenance_ModeleDefautDebut.split('$2').join(ParamPage);
            CatMaintenance_ModeleDefautDebut = CatMaintenance_ModeleDefautDebut.split('$3').join(ParamCategorie);
            var TexteFinal = CatMaintenance_ModeleDefautDebut + TableauTriable + CatMaintenance_ModeleDefautFin + ContenuPage;
      }

/* Insertion tableau Statistiques */

      if( (TexteFinal.indexOf(CatMaintenance_DebutModeleStats)!=-1)&&(TexteFinal.indexOf(CatMaintenance_FinModeleStats)!=-1) ){ 
// Déja le tableau : remplacement
            debutTexte = TexteFinal.substring(0, TexteFinal.indexOf(CatMaintenance_DebutModeleStats));
            AncienModele = TexteFinal.substring(0, TexteFinal.indexOf(CatMaintenance_FinModeleStats)) + CatMaintenance_FinModeleStats;
            AncienModele = AncienModele.replace(debutTexte, "");       
            finTexte = TexteFinal.split(debutTexte).join('').split(AncienModele).join('');
            TexteFinal = debutTexte + TableauStats + finTexte;
      }else{         
// Pas de tableau : ajout
            TexteFinal = TableauStats + TexteFinal;
      }

/* Publication */

      document.getElementById ("wpTextbox1").value = TexteFinal ;
      document.editform.wpSummary.value = CatMaintenance_ResumeModif.split('$1').join(ParamCategorie);
      document.editform.submit();
}

/* ************************************************************************************************************************************ 
Lancement 
*/

if( ["edit","submit"].indexOf(mw.config.get('wgAction')) === -1 ){
    $(CatMaintenance_makeUpdateLinks);
}

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