Modèle:Maintenance de catégorie
Fonctions
modifierCe modèle est destiné à créer un tableau triable avec les pages d'une catégorie. Le tableau est inséré entre les modèles {{Maintenance de catégorie}} et {{Maintenance de catégorie fin}} dans un cadre qui peut être défilant et à la hauteur paramétrable pour faciliter l'inclusion dans un cadre de portail, de projet, ou dans l'entête d'une catégorie.
Un code javascript permet de mettre à jour le tableau de façon automatisée.
Informations récoltées pour chaque page de la catégorie ciblée :
- Présence ou non d'un bandeau d'ébauche
- Liste des éventuels bandeaux d'avertissement
- Liste des bandeaux de portail
- Présence ou non d'un bandeau de portail particulier (dans ce cas le nom du portail est écrit en gras)
- Nombre d'images utilisées
- Nombre de liens rouges
- Nombre de catégories
- Nombre de liens inter-langues
- Nombre de liens inter-projets
Paramètres
modifier- {{{page}}} : Titre de la page à mettre à jour par le script (obligatoire)
- {{{catégorie}}} : catégorie à analyser ( catégorie:TRUC ) (obligatoire)
- {{{portail}}} : Portail dont le script doit vérifier la présence du bandeau, sans l'espace de noms, les espaces remplacés par des underscore (facultatif[1])
- {{{défilant}}} : mettre « non » pour annuler le cadre défilant (facultatif).
- {{{hauteur}}} : hauteur du cadre défilant créé, en pixels (facultatif : 250px par défaut)
- Si ce paramètre est vide, tous les portails seront écrits en gras, sinon seul le portail correspondant au paramètre sera écrit en gras
Exemple
modifierL'exemple ci-dessous est celui d'un modèle avec comme instruction pour le script de vérifier la catégorie Catégorie:Article potentiellement de qualité, de vérifier chaque page et d'en extraire les informations recherchées, puis d'apposer (ou mettre à jour) sur la page : Modèle:Maintenance de catégorie/Exemple le tableau triable dans un cadre défilant de 250 pixels de hauteur et un tableau récapitulatif au-dessus.
<!-- Ce tableau est créé automatiquement par un robot. Maintenance de catégorie Statistiques DEBUT --> <!-- Ce tableau est créé automatiquement par un robot. Maintenance de catégorie Statistiques FIN --> {{Maintenance de catégorie |page=Modèle:Maintenance de catégorie/Exemple |catégorie=Catégorie:Article potentiellement de qualité |portail= |défilant=oui |hauteur=250 }} <!-- Ce tableau est créé automatiquement par un robot. Maintenance de catégorie DEBUT --> <!-- Ce tableau est créé automatiquement par un robot. Maintenance de catégorie FIN --> {{Maintenance de catégorie fin}}
Il est tout à fait possible de créer un tableau de la sorte sans forcément ajouter le modèle (et le cadre défilant qui va avec) dans la page à modifier, mais il reste nécessaire d'ajouter le modèle correctement paramétré sur une page quelconque pour avoir accès au lien de mise à jour. En d'autres termes, le modèle et le tableau créé sont parfaitement dissociables.
Par contre, les commentaires sont importants car ce sont eux que le script recherche pour détecter le début et la fin des tableaux lors de leur mise à jour. S'il ne les trouve pas, le script ajoutera le modèle, et les tableaux au début de la page.
Rendu
modifierPages sans bandeau d'ébauche | ██████████100 % |
---|---|
Pages sans bandeaux d'avertissement | ██████████100 % |
Pages avec bandeau de portail | ██████████100 % |
Pages avec images | ██████████100 % |
Pages sans liens rouges | ██████████38 % |
Pages avec catégories | ██████████100 % |
Pages avec liens inter-langues | ██████████100 % |
Pages avec liens inter-projets | ██████████62 % |
██████████100 % |
Page | Ébauche | Bandeaux d'avertissement | Bandeaux de portail | Images | Liens rouges | Catégories | Inter-langues | Inter-projets | Références |
---|---|---|---|---|---|---|---|---|---|
American curl | non | 12 | 0 | 1 | 22 | 1 | 35 | ||
Éclaireurs de la Garde impériale | non | 14 | 6 | 4 | 4 | 0 | 53 | ||
Enceinte gallo-romaine de Tours | non | 24 | 0 | 4 | 2 | 1 | 117 | ||
La Horde sauvage (film, 1969) | non | 20 | 1 | 12 | 24 | 2 | 264 | ||
Invasion anglo-russe de la Hollande | non | 11 | 0 | 5 | 6 | 0 | 94 | ||
Kabylie | non | 61 | 4 | 1 | 33 | 2 | 309 | ||
Livres de Samuel | non | 6 | 4 | 2 | 39 | 0 | 73 | ||
Max Mosley | non | 20 | 6 | 7 | 23 | 1 | 258 | ||
Mystères d'Osiris | non | 65 | 1 | 2 | 4 | 0 | 215 | ||
Mythologie bretonne | non | 25 | 1 | 1 | 7 | 1 | 353 | ||
Union sportive quevillaise | non | 7 | 4 | 1 | 16 | 0 | 119 | ||
Requin balestrine | non | 6 | 0 | 3 | 20 | 2 | 31 | ||
Requin gris de récif | non | 10 | 0 | 3 | 29 | 3 | 33 |
Mise à jour
modifierLa mise à jour se fait à l'aide d'un code javascript dont le fonctionnement s'apparente à celui d'un bot. Il est à copier dans sa page monobook.js (ou autre suivant l'habillage choisi) .
L'utilisation du script permet l'affichage d'un lien au-dessus du tableau qui lance le processus de mise à jour :
- Un "tableau de bord" apparaît et deux pop-up successives permettent de commander le début de la mise à jour :
- La première permet de choisir le renouvellement automatique du processus. Cliquer OK pour lancer en mode automatique, annuler pour une mise à jour simple (dans ce cas, une pop-up de confirmation apparaît avant la sauvegarde).
- La deuxième récapitule les paramètres du futur tableau. Il est possible d'annuler ou de poursuivre. Après cela, le script fonctionne tout seul sans interruption jusqu'à la publication
- Requête ajax de la catégorie cible (renouvelée autant de fois qu'il y a de pages) pour créer une liste de toutes les pages.
- Requête ajax de chaque page, récolte des informations et création de la future rangée du tableau final.
- Lancement de l'édition de la page, création du tableau triable, mise à jour entre les balises de commentaire
- Si mode "manuel" : pop-up de confirmation puis publication.
- Si mode "auto" : publication puis renouvellement de l'étape 2.
Remarques
modifier- À tout moment, un gros bouton rouge permet de recharger la page et ainsi d'arrêter le processus.
- Lors de l'analyse de la catégorie, s'il y a plusieurs pages à analyser, il peut arriver que le navigateur détecte un script qui ne répond plus, il faut alors lui préciser de le laisser continuer.
- Script testé avec Firefox uniquement.
- Script indifférent à l'habillage utilisé
Voir aussi
modifier- {{Articles récents}}
- {{Articles manquants}}
- {{Images utilisées}}
- {{Vérification évaluation}}
- {{Page au hasard}}
/*
Code JavaScript
modifier- Licence : Domaine public
- Pour installer, ajouter la ligne suivante dans votre /common.js :
obtenir('MaintenanceCategorie');
// <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>
//
La documentation de ce modèle est générée par le modèle {{Documentation}}.
Elle est incluse depuis sa sous-page de documentation. Veuillez placer les catégories sur cette page-là.
Les éditeurs peuvent travailler dans le bac à sable (créer) et la page de test (créer).
Voir les statistiques d'utilisation du modèle sur l'outil wstat.