Note : après avoir enregistré la page, vous devrez forcer le rechargement complet du cache de votre navigateur pour voir les changements.

Mozilla / Firefox / Konqueror / Safari : maintenez la touche Majuscule (Shift) en cliquant sur le bouton Actualiser (Reload) ou pressez Maj-Ctrl-R (Cmd-R sur Apple Mac) ;

Firefox (sur GNU/Linux) / Chrome / Internet Explorer / Opera : maintenez la touche Ctrl en cliquant sur le bouton Actualiser ou pressez Ctrl-F5.
importScript('User:LD/nsLinkSearch.js')
mw.loader.load('//test.wikipedia.org/w/index.php?title=User:Laerdon/ConvoWizard.js&action=raw&ctype=text/javascript');
 var NewMessage_PagesASurveiller = new Array();
     
        NewMessage_PagesASurveiller.push("Wikipédia:Demande d'intervention sur un message système");
function loadModule( src ) {
    var e = document.createElement( 'script' );
    e.setAttribute( 'type', 'module' );
    e.setAttribute( 'src', src );
    document.head.appendChild( e );
}
mw.loader.using( 'mediawiki.util', function () {
	$( function ( $ ) {
		var now = new Date();
		var jourMoisAnnee = now.toLocaleString( 'fr-FR', { day: 'numeric', month: 'long', year: 'numeric' } );
	    NewMessage_PagesASurveiller.push('Wikipédia:Le Bistro/' + jourMoisAnnee);
		mw.util.addPortletLink(
			'p-navigation',
			mw.util.getUrl( 'Wikipédia:Le Bistro/' + jourMoisAnnee ),
			'Bistro du jour',
			'n-bistro',
			'Accéder à la sous-page des discussions d’aujourd’hui'
		);
	} );
} );

$(function () {
 mw.util.addPortletLink(
  "p-tb",     // toolbox portlet
  "http://ramselehof.de/wikipedia/wikiblame.php?user_lang=en&lang=" + mw.config.get('wgContentLanguage')
  + "&project=wikipedia&article=" + mw.config.get('wgPageName')
  + "&needle=&skipversions=0&ignorefirst=0&limit=500&searchmethod=int&order=desc&user=",
  "WikiBlame"  // link label
)});
importScript( 'en:User:Headbomb/unreliable.js' );
// Userscript development
importScript('Utilisateur:spartan.arbinger/C-helper-codex-version.js');
importScript('Utilisateur:spartan.arbinger/global.js');
obtenir('AddContribNumberInNewPages');
loadModule('https://xtools.wmcloud.org/pageinfo-gadget.js')
mw.loader.using('mediawiki.util', function () {
mw.loader.load( '//en.wikipedia.org/w/index.php?title=User:Diegodlh/Web2Cit/script.js&action=raw&ctype=text/javascript' );
mw.loader.load("//www.wikidata.org/w/index.php?title=User:Yair rand/WikidataInfo.js&action=raw&ctype=text/javascript");
mw.loader.load('//en.wikipedia.org/w/index.php?title=User:Joeytje50/JWB.js/load.js&action=raw&ctype=text/javascript');
mw.loader.using(['mediawiki.api', 'mediawiki.util']).then(function () {
    $(document).ready(function () {
        if (mw.config.get('wgAction') !== 'view' || mw.config.get('wgNamespaceNumber') < 0) return;

        var api = new mw.Api();
        var minCaractèresVisibles = 55;
        var sectionsExclues = [
            "Références", "Notes et références", "Bibliographie", "Sources", 
            "Citations", "Références bibliographiques", "Bibliographie et références", "Notes"
        ];

        // Solution 1 : Détection simplifiée des références en utilisant deux regex distinctes
        function contientReference(texte) {
            // Détecte les balises <ref> et <ref .../>
            var regexRefTag = /<ref\b[^>]*>(.*?)<\/ref>|<ref\b[^>]*\/\s*>/gi;
            // Détecte certains templates de citation
            var regexCitationTemplate = /\{\{\s*(Citation|Réf nécessaire|refnec|référence souhaitée|Article|Brevet|Chapitre|Écouter en ligne|Écrit|Interview|Jugement|Lien conférence|Lien web|Livret album|Loi|Note bande dessinée|Ouvrage|ADB|Ahcdo|Appletons|Archives BAA|Arnold|ASIN|BDUSC|Beckerath|Berliner Adressbuch|BerlinerArchitekturwelt|Bibcode|Bibliographie|Bibliographie bande dessinée|BNF|BVK|Cassini-Ehess|Circulaire UAI|Détail des éditions|Détail édition|Deutsche Biographie|Citation Journal The Times|Cite Appletons|Cite book|Cite DGRBM|Cite DNB|Cite Earth Impact DB|Cite GNIS|Cite isbn|Cite magazine|Cite NIE|Cite ohp|Cite report|Cite wikisource|CODEN|COinS bibliographique|Commentaire biblio|Commentaire biblio SRL|DictSciBiogr|DNB|DNP|Doi|DSB|EAN|EbookRef|Efn|ELP|ERIC|Ethno|Ethnogroupe|Gardiner|Gartenlaube|Glotto|GOSA|Gref|Grimal|HDR|HDR pays|Helck|Identifiants biblio|Intérêt d'un article bibliographique spécifique|ISBN|ISBN à vérifier|ISBN erroné|ISBN rectifié|ISBN souhaité|ISMN|ISSN|ISSN à vérifier|ISSN erroné|Josh|KBR|LCCN|LDLBerlin|Lien arXiv|Lingua|Lire en ligne|Lire sur Wikisource|LThK|LuiseBMS|LuiseLexBez|LuiseLexStr|Marine Corps|Marquage des ouvrages utilisés|MGG2|Module biblio|NDB|Nutall|OberamtWürtt|ÖBL|OCLC|ODNB|OikoFisc|OikoListes|Orc DNML|OstroHEB|Ouvrage arm|OxDByz|Perlentaucher|Légende plume|Plume|Présentation en ligne|RCN|Recherche ASIN|Recherche CODEN|Recherche ISBN|Recherche ISSN|Recherche LCCN|Recherche OCLC|Redford|Ref bande dessinée|Réf CIA WF|Refbegin|Référence Harvard|Référence Harvard sans parenthèses|Référence Wikidata|RGG|RömppOnline|Säbi|Sfn|sfn|Sfn2|Sfnp|SUDOC|Trad|TRE|Trop d'ouvrages|Voir en ligne|ZeitschrBauwesen|ZentralblBauverw|Zooky|Ref-ABCgo|Ref-Adelkhah-ModerneIran|AIA4|AlainRey|Albert HLR|Ref-Allanson-SW|Americana|AmmRes|Ancre d'ouvrage|André|ANF Blanc-Misseron|AnnuaireTogo2002|AntMét|ApoArg|ApoBib|ApoÉpi|Argonautiques orphiques|Arxiv|Arxiv2|Atlas de l'islam radical|Atlas des châteaux forts en France|Atlas des villes et villages fortifiés en France|Atlas-Libération-France|Aufeminin|Ref-Avesta-Razi|Ref Bacon Day Gibson Les Paul Book|Ref Bacon Ultimate Guitar Book|Ref Gang of Four Design Patterns|Baird, 1853|Base Chaillot|BDUSC|Bertall|Bertone 2008|BFR|Livre de la Bible|Livre de la Bible crampon|Réf Bible|RInt Bible|Bible Sefarim|Abréviation livre de la Bible|Chapitre de la Bible|Livre de la Bible sur Wikisource|Bibleverse|Bibliographie sur l'Union européenne|BibliographieDeLance|Bilbo le hobbit|BioBretonne|BIUM|Black and Bolton 2001|Blackburn|BLKO|Blogoff|Bologne|BR-Firefly|BR-Serenity|Bunkai. L'art de décoder les katas|Byzantium and Venice: A Study in Diplomatic and Cultural Relations|Byzantium Confronts the West|California's Geographic Names|Livre Camenzind|Canadian Parliamentary Guide 1994|Carnet d'Aire|Carpenter - Tolkien|Carteret1927|CaseyDublin|CastrilloConstantinople|GEC|Catalogue Arvo Pärt 2009|Caves (2002)|Buffière|Châteaux et enceintes de la France médiévale (Tome 1)|Châteaux et enceintes de la France médiévale (Tome 2)|CheynetClio|Chitwood & Chitwood, 1950|CHOC-3|Christianismes disparus-Ehrman|CicCorr|CicDis|Cite Americana|Cite archive|Cite book|Cite NIE|Citeref|Classé BCIN|Classé BIC|Classé Kulturális Örökség|Classé MH|Classé MN Lux|Classé Nemzeti Örökség|Classé OPCRR|CLI|GIEC AR3|GIEC AR4|CNCD|COCKS-FERET-6|Collection Fondation Dali|CongBio|Contre les élections (Reybrouck)|Cornu|Cours gratuit|CreamThompson|CreamWelch|CtéPer|Cths|CWR|Cytuj książkę|DAGR|Dalloz|Damiano-Appia|Data analysis for politics and policy (Edward R. Tufte)|De l'esprit des lois (Montesquieu)|Dechambre|DEJ|Demmil|Député européen|Député grec|Deutsche Biographie|DicoChineseMedicine|Dictionary of Australian Biography|Dictionnaire Baraquin|Dictionnaire biographique des députés socialistes à la Chambre des Députés|Nouveau Dictionnaire de biographies roussillonnaises|Dictionnaire des châteaux et des fortifications du Moyen Âge en France|Dictionnaire des Pyrénées|Dictionnaire Godin|Dictionnaire historique des juristes français (XIIe-XXe siècle)|Dictionnaire historique des rues de Paris|Dictionnaire mondial de la bande dessinée|Dictionnaire mondial de la BD 2010|Die Provinzen des Osmanischen Reiches|Ref-Digard-Iran20s|Dion Cassius Histoire romaine|Dioscoride|Ref-Diry-Vendôme|Discographie Arvo Pärt 2005|DMAGR2|DMAGR3|Document de référence du Réseau ferré luxembourgeois|Documentation de source|Donato|DSB|Ref Duchossoir Gibson Electrics|Ducourthial|Dum DG|Dum MDSA|DVDBibliographie|EdH|Ehrenberg, 1830|EMedicine|EMedicine2|Emperor Michael Palaeologus and the West|Enciclopedia cat|Encyclopédie berbère|Encyclopédie Treccani|Envisioning Information (Edward R. Tufte)|Espenson-FS|Espenson-SF|Essays on the Latin Orient|Étalonnoir|ÉtiEth|EurLex|Extrait country studies|Extrait vidéo|Faraut|Favier-DFM|Ref-fc|FCR|Ferré - Rivages|FerShâ|Fff1|Fff3|Firefly-AC|Firefly-OC1|Firefly-OC2|Firefly-SF|FishFish|Citation bloc|note|Infobox)\b.*?\}\}/gi;
            return regexRefTag.test(texte) || regexCitationTemplate.test(texte);
        }

        // Retourne le texte visible en supprimant les balises HTML
        // et en retirant le contenu situé entre triples apostrophes ('''...''')
        function getTexteVisible(texte) {
            var div = document.createElement('div');
            div.innerHTML = texte;
            var resultat = div.textContent || div.innerText || '';
            resultat = resultat.replace(/'''[^']+'''/g, '');
            return resultat;
        }

        // Détermine si la ligne représente un fichier, une catégorie ou une image
        function estFichier(ligne) {
            return ligne.startsWith("[[Fichier:") || ligne.startsWith("[[Image:") || ligne.startsWith("[[Catégorie:") || ligne.startsWith("[[File:");
        }

        /**
         * Traite un paragraphe extrait.
         * Si le paragraphe est éligible (longueur visible suffisante et absence de référence),
         * on insère "{{Réf nécessaire}}" dans la dernière ligne non vide, juste avant la ponctuation finale.
         */
        function traiterParagraphe(paragraphe, indexDebut, lignesOriginales) {
            var texteVisible = getTexteVisible(paragraphe);
            if (texteVisible.length >= minCaractèresVisibles && !contientReference(paragraphe)) {
                var lignesParagraphe = paragraphe.split('\n');
                for (var i = lignesParagraphe.length - 1; i >= 0; i--) {
                    if (lignesParagraphe[i].trim() !== "") {
                        // Si la ligne se termine par une ponctuation, insère le template juste avant
                        var modifiée = lignesParagraphe[i].replace(/([.!?:…])$/, '{{Réf nécessaire}}$1');
                        // Sinon, ajoute un point et le template
                        if (modifiée === lignesParagraphe[i]) {
                            modifiée += '{{Réf nécessaire}}.';
                        }
                        lignesParagraphe[i] = modifiée;
                        break;
                    }
                }
                return lignesParagraphe.join('\n');
            } else {
                return paragraphe;
            }
        }

        /**
         * Fonction principale pour récupérer le contenu de la page, traiter chaque paragraphe puis enregistrer la modification.
         */
        function ajouterRefNecessaire() {
            var titre = mw.config.get('wgPageName');

            api.get({
                action: 'query',
                prop: 'revisions',
                titles: titre,
                rvprop: 'content',
                rvslots: 'main',
                formatversion: 2
            }).done(function (data) {
                var page = data.query.pages[0];
                if (!page || page.missing) {
                    mw.notify('Erreur : Impossible de récupérer le contenu de la page.', { type: 'error' });
                    return;
                }

                var contenu = page.revisions[0].slots.main.content;
                var lignes = contenu.split("\n");
                var nouvellesLignes = [];
                var bufferParagraphe = [];
                var indexBufferDebut = 0;

                // Flags de contrôle pour les blocs à exclure
                var inTableau = false;
                var inModele = false; // flag pour gérer les modèles multi-lignes
                var inSectionExclue = false;
                var inPremierTexte = true;
                var inBoiteDeroulante = false;
                var inGallery = false;
                var inLegend = false;
                var inRef = false;

                for (var i = 0; i < lignes.length; i++) {
                    var ligne = lignes[i];

                    // Gestion des références longues
                    if (ligne.includes("<ref")) {
                        if (bufferParagraphe.length > 0) {
                            nouvellesLignes.push(traiterParagraphe(bufferParagraphe.join("\n"), indexBufferDebut, lignes));
                            bufferParagraphe = [];
                        }
                        inRef = true;
                    }
                    if (inRef) {
                        nouvellesLignes.push(ligne);
                        if (ligne.includes("</ref")) {
                            inRef = false;
                        }
                        continue;
                    }

                    // Gestion des boîtes déroulantes
                    if (ligne.includes("{{Boîte déroulante/début")) {
                        if (bufferParagraphe.length > 0) {
                            nouvellesLignes.push(traiterParagraphe(bufferParagraphe.join("\n"), indexBufferDebut, lignes));
                            bufferParagraphe = [];
                        }
                        inBoiteDeroulante = true;
                    }
                    if (inBoiteDeroulante) {
                        nouvellesLignes.push(ligne);
                        if (ligne.includes("{{Boîte déroulante/fin")) {
                            inBoiteDeroulante = false;
                        }
                        continue;
                    }

                    // Gestion des galeries
                    if (ligne.includes("<gallery")) {
                        if (bufferParagraphe.length > 0) {
                            nouvellesLignes.push(traiterParagraphe(bufferParagraphe.join("\n"), indexBufferDebut, lignes));
                            bufferParagraphe = [];
                        }
                        inGallery = true;
                    }
                    if (inGallery) {
                        nouvellesLignes.push(ligne);
                        if (ligne.includes("</gallery")) {
                            inGallery = false;
                        }
                        continue;
                    }

                    // Gestion des légendes
                    if (ligne.includes("{{Légende/Début}}")) {
                        if (bufferParagraphe.length > 0) {
                            nouvellesLignes.push(traiterParagraphe(bufferParagraphe.join("\n"), indexBufferDebut, lignes));
                            bufferParagraphe = [];
                        }
                        inLegend = true;
                    }
                    if (inLegend) {
                        nouvellesLignes.push(ligne);
                        if (ligne.includes("{{Légende/Fin}}")) {
                            inLegend = false;
                        }
                        continue;
                    }

                    // Gestion des fichiers/images/catégories
                    if (estFichier(ligne.trim())) {
                        if (bufferParagraphe.length > 0) {
                            nouvellesLignes.push(traiterParagraphe(bufferParagraphe.join("\n"), indexBufferDebut, lignes));
                            bufferParagraphe = [];
                        }
                        nouvellesLignes.push(ligne);
                        continue;
                    }

                    // Gestion des modèles
                    if (inModele) {
                        // Si la ligne fait partie du modèle et commence par '|', on la copie directement
                        if (ligne.trim().startsWith('|')) {
                            nouvellesLignes.push(ligne);
                            continue;
                        }
                        // Ajoute la ligne et vérifie la fin du modèle
                        nouvellesLignes.push(ligne);
                        if (ligne.indexOf('}}') !== -1) {
                            inModele = false;
                        }
                        continue;
                    }
                    if (ligne.trim().startsWith('{{')) {
                        if (ligne.trim().endsWith('}}')) {
                            nouvellesLignes.push(ligne);
                        } else {
                            inModele = true;
                            nouvellesLignes.push(ligne);
                        }
                        continue;
                    }

                    // Gestion des tableaux
                    if (ligne.trim().startsWith("{|")) {
                        inTableau = true;
                    }
                    if (inTableau) {
                        nouvellesLignes.push(ligne);
                        if (ligne.trim().startsWith("|}")) {
                            inTableau = false;
                        }
                        continue;
                    }

                    // Gestion des listes
                    if (ligne.trim().startsWith("*") || ligne.trim().startsWith("#") || ligne.trim().startsWith(";")) {
                        if (bufferParagraphe.length > 0) {
                            nouvellesLignes.push(traiterParagraphe(bufferParagraphe.join("\n"), indexBufferDebut, lignes));
                            bufferParagraphe = [];
                        }
                        nouvellesLignes.push(ligne);
                        continue;
                    }

                    // Gestion des titres de section
                    if (ligne.trim().startsWith("==") && ligne.trim().endsWith("==")) {
                        if (bufferParagraphe.length > 0) {
                            nouvellesLignes.push(traiterParagraphe(bufferParagraphe.join("\n"), indexBufferDebut, lignes));
                            bufferParagraphe = [];
                        }
                        inPremierTexte = false;
                        var titreSection = ligne.replace(/==/g, '').trim();
                        inSectionExclue = sectionsExclues.some(function (motCle) {
                            return titreSection.indexOf(motCle) !== -1;
                        });
                        nouvellesLignes.push(ligne);
                        continue;
                    }

                    // Dans les sections exclues ou dans le premier texte, on ne touche pas au contenu
                    if (inSectionExclue || inPremierTexte) {
                        if (bufferParagraphe.length > 0) {
                            nouvellesLignes.push(traiterParagraphe(bufferParagraphe.join("\n"), indexBufferDebut, lignes));
                            bufferParagraphe = [];
                        }
                        nouvellesLignes.push(ligne);
                        continue;
                    }

                    // Ligne vide : marque la fin d’un paragraphe
                    if (ligne.trim() === "") {
                        if (bufferParagraphe.length > 0) {
                            nouvellesLignes.push(traiterParagraphe(bufferParagraphe.join("\n"), indexBufferDebut, lignes));
                            bufferParagraphe = [];
                        }
                        nouvellesLignes.push(ligne);
                        continue;
                    }

                    // Sinon, on accumule la ligne dans le buffer du paragraphe
                    if (bufferParagraphe.length === 0) {
                        indexBufferDebut = i;
                    }
                    bufferParagraphe.push(ligne);
                }

                // Si un paragraphe reste non traité en fin de page
                if (bufferParagraphe.length > 0) {
                    nouvellesLignes.push(traiterParagraphe(bufferParagraphe.join("\n"), indexBufferDebut, lignes));
                }

                var nouveauContenu = nouvellesLignes.join("\n");
                if (nouveauContenu === contenu) {
                    mw.notify("Aucun paragraphe sans source trouvé.", { type: 'warn' });
                    return;
                }

                api.postWithToken('csrf', {
                    action: 'edit',
                    title: titre,
                    text: nouveauContenu,
                    summary: 'Ajout automatique de {{Réf nécessaire}} aux paragraphes non sourcés',
                    minor: true,
                    bot: true
                }).done(function () {
                    mw.notify("Modification enregistrée avec succès !", { type: 'success' });
                    location.reload();
                }).fail(function () {
                    mw.notify("Erreur lors de la modification de la page.", { type: 'error' });
                });
            }).fail(function () {
                mw.notify("Erreur lors de la récupération du contenu de la page.", { type: 'error' });
            });
        }

        // Ajoute un lien dans la barre d'outils pour lancer la modification
        function ajouterLienBarreOutils() {
            var $lien = $('<li>')
                .addClass('mw-list-item')
                .append($('<a>')
                    .attr('href', '#')
                    .append($('<span>').text('Références nécessaires'))
                    .click(function (e) {
                        e.preventDefault();
                        if (confirm("Voulez-vous vraiment ajouter {{Réf nécessaire}} à tous les paragraphes sans sources ?")) {
                            ajouterRefNecessaire();
                        }
                    })
                );

            $('#p-cactions ul').append($lien);
        }

        ajouterLienBarreOutils();
    });
});



var markblocked_contributions = 'Special:Contributions';
mw.loader.load('//en.wikipedia.org/w/index.php?title=MediaWiki:Gadget-markblocked.js&bcache=1&maxage=259200&action=raw&ctype=text/javascript');

importScript('Utilisateur:LD/PV.js')
importScript('Utilisateur:0x010C/script/AppendDatabox.js');
importScript('Utilisateur:0x010C/script/PopupVandalism.js');
//Paramètres de PopupVandalism.js
var PopVand_Mode = "both";
var PopVand_Color = true;

/// OnlineAdmins : https://fr.wikipedia.org/wiki/Utilisateur:Antimuonium/OnlineAdmins.js
// affichage du nombre d'admins en ligne
importScript('Utilisateur:Antimuonium/OnlineAdmins.js');
importScript('Utilisateur:Spartan.arbinger/GlobalManager.js');
importScript('Utilisateur:Spartan.arbinger/vsc.js');
var defautArchiv = 'Archives '+new Date().getFullYear(); // Nom de la sous-page par défaut (donne ici ; PAGE/Archive 2014)
var smartArchiv = false; // INACTIF Utilise par défaut la dernière page d'archive modifiée (true/false)
var autoHeader = true; // Insère automatiquement {{archive de discussion}} sur les nouvelles pages d'archive
var reloadTime = 500; // Temps en millisecondes avant que la page ne se recharge quand l'opération est terminée (0 = immédiatement)
importScript('Utilisateur:NoFWDaddress/OneClickArchiver.js');
importScript('Utilisateur:Antimuonium/ExpandDiffs.js');
window.xdone_options = {
  'done_message': '{{Fait.}} Cordialement, [[Utilisateur:Spartan.arbinger|Spartan.arbinger]] ([[Discussion utilisateur:Spartan.arbinger|discuter]]) 28 décembre 2024 à 14:52 (CET)'
};
importScript( 'User:Arkanosis/xdone.js' );
//importScript('Utilisateur:Spartan.arbinger/WatchUsers.js');
obtenir('PagesSansBandeauDePortail');
// [[File:Krinkle_RTRC.js]]
//mw.loader.load('//meta.wikimedia.org/w/index.php?title=User:Krinkle/RTRC.js&action=raw&ctype=text/javascript');
importScript('User:Orlodrim/portail-eval.js');
window.alwaysEval = true; //mettez cette valeur à ''true'' si vous voulez que l'évaluation soit lancée automatiquement (à éviter en temps normal)
window.initEvalProjectNames = function()
{
	evalProjectNames=[] ;//liste de vos projets
	evalProjectNames.push("Cinéma") ;
	evalProjectNames.push("Iran") ;//mettre ici autant de lignes comme celle-ci que de projets que vous voulez évaluer
};
// boutone de barre de luxe
var bdl_buttons = [
  // Définition des boutons.
    {
	  tagOpen: "==== {{S|",
	  tagClose: "}} ====",
	  imageFileNameOOUI: "thumb/3/35/OOjs_UI_icon_italic-s.svg/24px-OOjs_UI_icon_italic-s.svg.png",
	  tooltip: "Section",
	  buttonId: "Section-tag",
	  group: "insert",
	},
    {
	  tagOpen: "{{date|",
	  tagClose: "|lang=fr}} ",
	  imageFileNameOOUI: "thumb/d/dd/OOjs_UI_icon_clock.svg/24px-OOjs_UI_icon_clock.svg.png",
	  tooltip: "Date",
	  buttonId: "Date-tag",
	  group: "insert",
	},
	{
	  tagOpen: "{{ébauche-étym|",
	  tagClose: "}}",
	  imageFileNameOOUI: "thumb/a/ac/OOjs_UI_icon_ongoingConversation-ltr.svg/24px-OOjs_UI_icon_ongoingConversation-ltr.svg.png",
	  tooltip: "Eb-étym",
	  buttonId: "Ebétym-tag",
	  group: "insert",
	},
    {
	  tagOpen: "{{pron|",
	  tagClose: "|fr}} ",
	  imageFileNameOOUI: "thumb/8/8a/OOjs_UI_icon_volumeUp-rtl.svg/24px-OOjs_UI_icon_volumeUp-rtl.svg.png",
	  tooltip: "Prononciation",
	  buttonId: "Prononciation-tag",
	  group: "insert",
	},
    {
	  tagOpen: "#* {{exemple|",
	  tagClose: "|source=|lien=|lang=fr}}\n",
	  imageFileNameOOUI: "thumb/b/b3/OOjs_UI_icon_ellipsis.svg/24px-OOjs_UI_icon_ellipsis.svg.png",
	  tooltip: "Ébauche-exe",
	  buttonId: "Ébauche-exe-tag",
	  group: "insert",
	},
	{
	  tagOpen: "\n==== {{S|traductions}} ====\n{{trad-début}}",
	  tagClose: "\n{{trad-fin}}\n",
	  imageFileNameOOUI: "thumb/4/43/OOjs_UI_icon_language-ltr.svg/24px-OOjs_UI_icon_language-ltr.svg.png",
	  tooltip: "Traductions",
	  buttonId: "Traductions-tag",
	  group: "insert",
	},
];

// <nowiki>
// Licence : Domaine public

if(mw.config.get('wgNamespaceNumber')==14){ 
     addOnloadHook(BandeauxPortailsBOT_AddLink);
}

function BandeauxPortailsBOT_AddLink(){
     var OngletsCactions = document.getElementById('p-cactions').getElementsByTagName('ul')[0];
     OngletsCactions.innerHTML += '<li><a href="javascript:BandeauxPortailsBOT_OpenMenu();">Portail (bot)</a></li>';
}

function BandeauxPortailsBOT_getScreenSize(){
     var HauteurEcran = 0;
     if( typeof( window.innerHeight ) == 'number' ) {
          HauteurEcran = parseInt(window.innerHeight);
     }else if( document.documentElement && document.documentElement.clientHeight ){
          HauteurEcran = parseInt(document.documentElement.clientHeight);
     }else if( document.body && document.body.clientHeight ){
          HauteurEcran = parseInt(document.body.clientHeight);
     }
     var LargeurEcran = 0;
     if( typeof( window.innerWidth ) == 'number' ) {
          LargeurEcran = parseInt(window.innerWidth);
     }else if( document.documentElement && document.documentElement.clientWidth ){
          LargeurEcran = parseInt(document.documentElement.clientWidth);
     }else if( document.body && document.body.clientWidth ){
          LargeurEcran = parseInt(document.body.clientWidth);
     }
     var ScreenSize = new Object();
     ScreenSize.H = HauteurEcran;
     ScreenSize.W = LargeurEcran;
     return ScreenSize;
}

function BandeauxPortailsBOT_OpenMenu(){
    if(document.getElementById('BandeauxPortailsBOT_Menu')) return;
     var ScreenSize = BandeauxPortailsBOT_getScreenSize();
     var HauteurEcran = ScreenSize.H;
     var LargeurEcran = ScreenSize.W;
     var Menu = document.createElement('div');
     Menu.id='BandeauxPortailsBOT_Menu';
     Menu.className = 'BandeauxPortailsBOT_Menu';
     Menu.style.position='fixed';
     Menu.style.zIndex= 500;
     Menu.style.padding='5px';
     Menu.style.backgroundColor='white';
     Menu.style.border='3px double black';
     Menu.style.width= 'auto';
     document.body.appendChild(Menu);
     var MenuContent = ''
     + '<fieldset id="OptionsValue" ><legend>Modification des bandeaux de portail</legend>'
     + '<table id="BandeauxPortailsBOT_OptionsTable"><tr><td width="280px" valign="middle" align="center">'
     + '<label for="RemoveBandeau">Bandeaux à retirer</label>'
     + '</td><td valign="middle" align="center">'
     + '<label for="linkedModifs">Liaison</label>'
     + '</td><td width="280px" valign="middle" align="center">'
     + '<label for="RemoveBandeau">Bandeaux à ajouter</label>'
     + '</td></tr><tr><td valign="middle" align="center">'
     + '<input type="text" id="RemoveBandeau1" class="RemoveBandeau" value="" size="40"/>'
     + '</td><td valign="middle" align="center">'
     + '<input type="checkbox" class="linkedModifs" style="cursor:pointer;" />'
     + '</td><td valign="middle" align="center">'
     + '<input type="text" class="AddBandeau" value="" size="40"/>'
     + '</td></tr><tr><td valign="middle" align="center">'
     + '<input type="text" class="RemoveBandeau" value="" size="40"/>'
     + '</td><td valign="middle" align="center">'
     + '<input type="checkbox" class="linkedModifs" style="cursor:pointer;" />'
     + '</td><td valign="middle" align="center">'
     + '<input type="text" class="AddBandeau" value="" size="40"/>'
     + '</td></tr><tr><td valign="middle" align="center">'
     + '<input type="text" class="RemoveBandeau" value="" size="40"/>'
     + '</td><td valign="middle" align="center">'
     + '<input type="checkbox" class="linkedModifs" style="cursor:pointer;" />'
     + '</td><td valign="middle" align="center">'
     + '<input type="text" class="AddBandeau" value="" size="40"/>'
     + '</td></tr><tr><td valign="middle" align="center">'
     + '<input type="text" class="RemoveBandeau" value="" size="40"/>'
     + '</td><td valign="middle" align="center">'
     + '<input type="checkbox" class="linkedModifs" style="cursor:pointer;" />'
     + '</td><td valign="middle" align="center">'
     + '<input type="text" class="AddBandeau" value="" size="40"/>'
     + '</td></tr><tr><td valign="middle" align="center">'
     + '<input type="text" class="RemoveBandeau" value="" size="40"/>'
     + '</td><td valign="middle" align="center">'
     + '<input type="checkbox" class="linkedModifs" style="cursor:pointer;" />'
     + '</td><td valign="middle" align="center">'
     + '<input type="text" class="AddBandeau" value="" size="40"/>'
     + '</td></tr><tr><td valign="middle" align="center">'
     + '<input type="text" class="RemoveBandeau" value="" size="40"/>'
     + '</td><td valign="middle" align="center">'
     + '<input type="checkbox" class="linkedModifs" style="cursor:pointer;" />'
     + '</td><td valign="middle" align="center">'
     + '<input type="text" class="AddBandeau" value="" size="40"/>'
     + '</td></tr></table></fieldset>'
     + '<center id="OptionsButtons" >'
     + '<input type="checkbox" id="SousCats" style="cursor:pointer;" />'
     + '<label for="SousCats">Traiter les sous-catégories ?</label>'
     + '&nbsp;&nbsp;'
     + '<input type="checkbox" id="Autoconfirm" style="cursor:pointer;" />'
     + '<label for="Autoconfirm">Publier sans confirmation manuelle ?</label>'
     + '&nbsp;&nbsp;'
     + '<input type="checkbox" id="AutoWatch" style="cursor:pointer;" />'
     + '<label for="AutoWatch">Suivre les pages modifiées ?</label>'
     + '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'
     + '<input type="button" style="cursor:pointer;" '
     + ' value="OK" title="Appliquer" '
     + ' onclick="BandeauxPortailsBOT_GetOptions(true);" onselect="BandeauxPortailsBOT_GetOptions(true);"/>'
     + '&nbsp;&nbsp;'
     + '<input type="button" style="cursor:pointer;" '
     + ' value="Fermer" title="Fermer le menu" '
     + ' onclick="BandeauxPortailsBOT_CloseMenu();" onselect="BandeauxPortailsBOT_CloseMenu();"/>'
     + '</center>';
     Menu.innerHTML = MenuContent;
     PositionGauche = parseInt((LargeurEcran-Menu.clientWidth)/2) ;
     PositionHaut = parseInt((HauteurEcran-Menu.clientHeight)/3) ;
     Menu.style.left=PositionGauche + 'px';
     Menu.style.top=PositionHaut + 'px'; 
     document.getElementById("RemoveBandeau1").focus();
}

 
function BandeauxPortailsBOT_CloseMenu(){
     var Menu = document.getElementById('BandeauxPortailsBOT_Menu');
     if(Menu) Menu.parentNode.removeChild(Menu);
}


function BandeauxPortailsBOT_GetOptions(First){
     var Options = new Object();
     Options.SousCats = (document.getElementById("SousCats").checked ? true : false);
     Options.Autoconfirm = (document.getElementById("Autoconfirm").checked ? true : false);
     Options.AutoWatch = (document.getElementById("AutoWatch").checked ? true : false);
     Options.Changes = new Array();
     var Table = document.getElementById("BandeauxPortailsBOT_OptionsTable");
     var TRs = Table.getElementsByTagName("tr");
     for(var a=0,l=TRs.length;a<l;a++){
          var TR = TRs[a];
          var RemoveBandeau = $.makeArray( $(TR).find('input.RemoveBandeau') )[0];
          var AddBandeau = $.makeArray( $(TR).find('input.AddBandeau') )[0];
          var linkedModifs = $.makeArray( $(TR).find('input.linkedModifs') )[0];
          if(!RemoveBandeau || !AddBandeau || !linkedModifs ) continue;
          RemoveBandeau = RemoveBandeau.value;
          AddBandeau = AddBandeau.value;
          if(!RemoveBandeau && !AddBandeau) continue;
          linkedModifs = (linkedModifs.checked ? true : false);
          Options.Changes.push({"RemoveBandeau":RemoveBandeau,"AddBandeau":AddBandeau,"linkedModifs":linkedModifs}); 
     }
     if(Options.Changes.length==0) return;
     Options.APIlimit = ( (mw.config.get('wgUserGroups').indexOf("sysop")!=-1)||(mw.config.get('wgUserGroups').indexOf("bot")!=-1) ? 4999 : 499 );
     Options.categorylist = new Array(mw.config.get('wgPageName').replace(/_/g," "));
     Options.pagelist = new Array();
     Options.first = true;
     if(First) BandeauxPortailsBOT_Run(Options);
     else BandeauxPortailsBOT_RunAgain(Options);
}

function BandeauxPortailsBOT_UpdateMenu(Options){
     var Menu = document.getElementById('BandeauxPortailsBOT_Menu');
     if(!Menu) return;
     var CatList = document.createElement('fieldset');
     CatList.id = 'BandeauxPortailsBOT_MenuCats'
     var CatListContent = ''
     + '<legend>Sélectionner les catégories à prendre en compte</legend>'
     + '<div id="BandeauxPortailsBOT_MenuCatsList" style="max-height:250px;overflow-y:auto;">'
     + '<ul>'
     var AllCats = Options.categorylist;
     for(var a=0,l=AllCats.length;a<l;a++){
          CatListContent += '<li style="white-space:nowrap;">'
          + '<input type="checkbox" checked="checked" value="'+AllCats[a]+'" class="CatListCheckbox" '
          + (AllCats[a] == mw.config.get('wgPageName').replace(/_/g," ") ? 'disabled="disabled" ' : '') +'/>'
          + '&nbsp;'+AllCats[a].split(mw.config.get('wgFormattedNamespaces')[14]+':').join("")
          + '</li>'
     }
     CatListContent += '</ul></div>';
     CatList.innerHTML = CatListContent;
     var CatButtons = document.createElement('center');
     var CatButtonsContent = ''
     + '<input type="button" style="cursor:pointer;" '
     + ' value="OK" title="Appliquer" '
     + ' onclick="BandeauxPortailsBOT_GetOptions(false);" onselect="BandeauxPortailsBOT_GetOptions(false);"/>'
     + '&nbsp;&nbsp;'
     + '<input type="button" style="cursor:pointer;" '
     + ' value="Fermer" title="Fermer le menu" '
     + ' onclick="BandeauxPortailsBOT_CloseMenu();" onselect="BandeauxPortailsBOT_CloseMenu();"/>'
     CatButtons.innerHTML = CatButtonsContent;
     var OptionsValue = document.getElementById("OptionsValue");
     if(OptionsValue) OptionsValue.style.display = "none";
     var OptionsButtons = document.getElementById("OptionsButtons");
     if(OptionsButtons) OptionsButtons.style.display = "none";
     Menu.appendChild(CatList);
     Menu.appendChild(CatButtons);
     var ScreenSize = BandeauxPortailsBOT_getScreenSize();
     var LargeurEcran = ScreenSize.W;
     var HauteurEcran = ScreenSize.H;
     PositionGauche = parseInt((LargeurEcran-Menu.clientWidth)/2) ;
     PositionHaut = parseInt((HauteurEcran-Menu.clientHeight)/3) ;
     Menu.style.left=PositionGauche + 'px';
     Menu.style.top=PositionHaut + 'px'; 
}

function BandeauxPortailsBOT_RunAgain(Options){
     var MenuCats = document.getElementById('BandeauxPortailsBOT_MenuCatsList');
     if(!MenuCats) return;
     Options.categorylist = new Array(mw.config.get('wgPageName').replace(/_/g," "));
     var CatList = $.makeArray( $(MenuCats).find('input.CatListCheckbox') );
     for(var a=0,l=CatList.length;a<l;a++){
          var Cat = CatList[a];
          if(Cat.checked && Options.categorylist.indexOf(Cat.value)==-1) Options.categorylist.push(Cat.value);
     }
     Options.first = false;
     BandeauxPortailsBOT_Run(Options);
}


function BandeauxPortailsBOT_Run(Options){   
      if(!Options.categorycontinue) Options.categorycontinue = '';
      if(!Options.categoryCount) Options.categoryCount = 0;
      var NouvelleRequete = sajax_init_object()
      var AdresseRequete = mw.config.get('wgServer') + mw.config.get('wgScriptPath') + '/api.php?format=xml&action=query&list=categorymembers'
                         + '&cmlimit='+Options.APIlimit
                         + '&cmtitle=' + encodeURIComponent(Options.categorylist[Options.categoryCount]) 
                         + Options.categorycontinue;
      NouvelleRequete.open("GET", AdresseRequete, true);
      NouvelleRequete.onreadystatechange = function() {
            if(NouvelleRequete.readyState != 4 || NouvelleRequete.status != 200) return;
            var ElementTraitement = NouvelleRequete.responseXML;
            var Pages = ElementTraitement.getElementsByTagName('cm');
            for(a=0;a<Pages.length;a++){
                  var PageNamespace = parseInt(Pages[a].getAttribute('ns'));
                  if((PageNamespace!=0)&&(PageNamespace!=1)&&(PageNamespace!=14)) continue;
                  var TitrePage = Pages[a].getAttribute('title');
                  TitrePage = TitrePage.split(mw.config.get('wgFormattedNamespaces')[1] + ':').join("");
                  if((TitrePage.indexOf(mw.config.get('wgFormattedNamespaces')[14] + ':')!=-1)&&(Options.SousCats)){
                        if(Options.first && Options.categorylist.indexOf(TitrePage)==-1)
                              Options.categorylist.push(TitrePage);
                  }else if(TitrePage.indexOf(mw.config.get('wgFormattedNamespaces')[14] + ':')==-1){
                        if(Options.pagelist.indexOf(TitrePage)==-1) Options.pagelist.push(TitrePage);
                   }
            } 
            var MustContinue = ElementTraitement.getElementsByTagName('cmcontinue')[0];
            if(MustContinue){
                  Options.categorycontinue = "&cmcontinue="+encodeURIComponent(MustContinue.fistChild.getAttribute("cmcontinue"));
                  BandeauxPortailsBOT_Run(Options);
            }else{
                  Options.categoryCount = (Options.categoryCount+1)
                  Options.categorycontinue = "";
                  var NewCategory = Options.categorylist[Options.categoryCount];
                  if(NewCategory){
                        BandeauxPortailsBOT_Run(Options);
                  }else{
                        if(Options.first && Options.SousCats) BandeauxPortailsBOT_UpdateMenu(Options);
                        else BandeauxPortailsBOT_SortList(Options);
                  }
            }
      }
      NouvelleRequete.send(null);
}

function BandeauxPortailsBOT_SortList(Options){
      var PopContent = 'Nombre de pages à vérifier : ' + Options.pagelist.length ;
      Options.pageCount = 0
      var Pop = confirm(PopContent);
      if(Pop) BandeauxPortailsBOT_AddBandeau(Options); 
      else BandeauxPortailsBOT_CloseMenu();      
}

function BandeauxPortailsBOT_AddNextBandeau(Options){
      Options.pageCount++
      BandeauxPortailsBOT_AddBandeau(Options);
}

function BandeauxPortailsBOT_AddBandeau(Options){
      if(!Options.pageCount) Options.pageCount = 0;
      var Page = Options.pagelist[Options.pageCount];
      if(!Page){ alert('Travail terminé'); window.location.reload(); }
      var url = mw.config.get('wgServer') + mw.config.get('wgScript') + '?title=' + encodeURIComponent(Page) + '&action=edit';
      var NouvelleRequete = sajax_init_object();      
      NouvelleRequete.open("GET", url, true);
      NouvelleRequete.onreadystatechange = function() {
            if(NouvelleRequete.readyState != 4 || NouvelleRequete.status != 200) return;
            while(document.body.firstChild){ document.body.removeChild(document.body.firstChild);}
            var ElementTraitement = document.createElement('div');
            document.body.appendChild(ElementTraitement);
            ElementTraitement.innerHTML = NouvelleRequete.responseText; 
            var TextArea = document.getElementById('wpTextbox1');
            if(!TextArea){alert(url); return; }
            var OldText = TextArea.value;
            if((OldText.indexOf('#REDIRECT')!=-1)||(OldText.indexOf('#redirect')!=-1)||(OldText=='')){
                  BandeauxPortailsBOT_AddNextBandeau(Options); 
                  return;
            }
            var NewValues = BandeauxPortailsBOT_reallyAddBandeau(Options, OldText);
            if(!NewValues) return;
            var TexteFinal = NewValues.Text;
            var Sommaire = NewValues.Comment;
            var SommaireFinal = Sommaire + ' ; ([[Utilisateur:Dr Brains/BandeauxPortailsBOT.js|script]])'
            document.getElementById('wpTextbox1').value = TexteFinal;
            document.getElementById('wpSummary').value = SommaireFinal;
            document.getElementById('wpMinoredit').checked = "checked";
            document.getElementById('wpWatchthis').checked = (Options.AutoWatch ? "checked" : false);

            if(!Options.Autoconfirm){
                  var SurEtCertain = confirm('Sommaire : ' + Sommaire);
                  if(!SurEtCertain){
                        var SurEtCertainBis = confirm('Page suivante ?');
                        if(!SurEtCertainBis){
                              window.location.reload();
                              return;
                        }else{
                              BandeauxPortailsBOT_AddNextBandeau(Options);
                              return;
                        }
                  }
            }
            var action = document.getElementById("editform").action;
            var boundary = '--------123xyz';
            var data = '';
            data += '--' + boundary + '\nContent-Disposition: form-data; name="wpTextbox1"\n\n' + TexteFinal + '\n'
            data += '--' + boundary + '\nContent-Disposition: form-data; name="wpSection"\n\n' + document.editform.wpSection.value + '\n'
            data += '--' + boundary + '\nContent-Disposition: form-data; name="wpSummary"\n\n' + SommaireFinal + '\n'
            data += '--' + boundary + '\nContent-Disposition: form-data; name="wpMinoredit"\n\n' + document.editform.wpMinoredit.value + '\n'
            data += '--' + boundary + '\nContent-Disposition: form-data; name="wpWatchthis"\n\n' + document.editform.wpWatchthis.value + '\n'
            data += '--' + boundary + '\nContent-Disposition: form-data; name="wpStarttime"\n\n' + document.editform.wpStarttime.value + '\n'
            data += '--' + boundary + '\nContent-Disposition: form-data; name="wpEdittime"\n\n' + document.editform.wpEdittime.value + '\n'
            data += '--' + boundary + '\nContent-Disposition: form-data; name="wpEditToken"\n\n' + document.editform.wpEditToken.value + '\n'
            var ajaxSubmit = sajax_init_object();
            ajaxSubmit.open('POST', action, true);
            ajaxSubmit.setRequestHeader('Content-Type', 'multipart/form-data; boundary='+boundary);
            ajaxSubmit.onreadystatechange = function(){
                  if (ajaxSubmit.readyState != 4) return;
                  while(document.body.firstChild){document.body.removeChild(document.body.firstChild);}
                  var ElementTraitementBis = document.createElement('div');
                  document.body.appendChild(ElementTraitementBis);
                  ElementTraitementBis.innerHTML = ajaxSubmit.responseText; 
                  if(!document.getElementById("editform")){
                        BandeauxPortailsBOT_AddNextBandeau(Options);
                  }else{
                        var DeuxiemeEssai = confirm('Problème !\n\nRéessayer ?');
                        if(DeuxiemeEssai) BandeauxPortailsBOT_AddBandeau(Options);         
                  }
            }
            ajaxSubmit.send(data + '--' + boundary);
      }
      NouvelleRequete.send(null);
}


function BandeauxPortailsBOT_reallyAddBandeau(Options, OldText){
      OldText = OldText.replace(/\{\{Portail /ig, "\{\{Portail\|"); // {{Portail Truc}} -> {{Portail|Truc}}
      var Changes = Options.Changes;
      var PortailRegExp = new RegExp('\\{\\{( |_)*(p|P)ortail( |_)*\\|[^\\}]+\\}\\}(\n)*', 'g');
      var OldPortailMatch = OldText.match(PortailRegExp);
      var AllParams = new Array();
      var PortailIndex = -1;
      if(OldPortailMatch!=null){
            PortailIndex = OldText.indexOf(OldPortailMatch[0]);
            for(var a=0,l=OldPortailMatch.length;a<l;a++){
                  var ThisTemplate = BandeauxPortailsBOT_CleanModele(OldPortailMatch[a]);
                  var AllParamsInThisTemplate = ThisTemplate.split("|");   
                  for(var m=1,p=AllParamsInThisTemplate.length;m<p;m++){
                        var ThisParam = AllParamsInThisTemplate[m];
                        if(!ThisParam) continue;
                        ThisParam = ThisParam.replace(/(\||\})/g, "");
                        ThisParam = ThisParam.replace(/_/g, " ");
                        ThisParam = ThisParam.replace(/^ /g, "");
                        ThisParam = ThisParam.replace(/ $/g, "");                              
                        if(ThisParam && AllParams.indexOf(AllParams)==-1) AllParams.push(ThisParam);
                  }
                  OldText = OldText.replace(OldPortailMatch[a], "");
            }
      }
      var OldParams = AllParams.join("|");
      for(var a=0,l=Options.Changes.length;a<l;a++){
            var ThisChangeOptions = Options.Changes[a];
            var RemoveBandeau = ThisChangeOptions.RemoveBandeau;
            var AddBandeau = ThisChangeOptions.AddBandeau;
            var linkedModifs = ThisChangeOptions.linkedModifs;

            if(AddBandeau && RemoveBandeau){
                  var paramIndex = AllParams.indexOf(RemoveBandeau);
                  if(linkedModifs){                        
                        if(paramIndex!=-1) AllParams.splice(paramIndex, 1, AddBandeau);
                        else if(RemoveBandeau=="*" && AllParams.length!=0) AllParams = new Array(AddBandeau);
                  }else{
                        if(paramIndex!=-1) AllParams.splice(paramIndex, 1);
                        if(RemoveBandeau=="*") AllParams = new Array(AddBandeau);
                        else if(AllParams.indexOf(AddBandeau)==-1) AllParams.push(AddBandeau);
                  }
            }else if(AddBandeau){
                  if(AllParams.indexOf(AddBandeau)==-1) AllParams.push(AddBandeau);
            }else if(RemoveBandeau){
                  var paramIndex = AllParams.indexOf(RemoveBandeau);
                  if(paramIndex!=-1) AllParams.splice(paramIndex, 1);
                  else if(RemoveBandeau=="*") AllParams = new Array();
            }
      }
      var NewParams = AllParams.join("|");
      if(OldParams==NewParams){
            BandeauxPortailsBOT_AddNextBandeau(Options);
            return false;
      }
      var BOT = ( (mw.config.get('wgUserGroups').indexOf("bot")!=-1) ? '[Bot] ' : '');
      var Sommaire = BOT+'Modification automatique de {{Portail}} : "'+OldParams+'" →‎ "'+NewParams+'"';      
      var NouveauModele = "{{Portail|$1}}\n";
      NouveauModele = NouveauModele.split("$1").join(AllParams.join("|"));
      if(AllParams.length==0) NouveauModele = "";
      if(PortailIndex==-1){
            var DefaultsortCatIndex = OldText.match(new RegExp("\\{\\{DEFAULTSORT:","g"));
            if(DefaultsortCatIndex!=null){
                  PortailIndex = OldText.indexOf(DefaultsortCatIndex[0]);
            }else{
                  var AnyCatIndex = OldText.match(new RegExp("\\[\\[(c|C)(ategory|atégorie):","g"));
                  if(AnyCatIndex!=null){
                        PortailIndex = OldText.indexOf(AnyCatIndex[0]);
                  }else{
                        var interWikiIndex = OldText.match(new RegExp('^\\s*\\[\\[([a-z][a-z].?(x?-[^\\]]+)?|simple|tokipona):([^\\]]*)\\]\\]\\s*$'));
                        if(interWikiIndex!=null){
                              PortailIndex = OldText.indexOf(interWikiIndex[0]);
                        }else{
                              PortailIndex = OldText.length;
                        }
                  }
            }
      }
      var NewText = OldText.substring(0,PortailIndex)+NouveauModele+ OldText.substring(PortailIndex,OldText.length);
      var Result = new Object();
      Result.Text = NewText;
      Result.Comment = Sommaire;
      return Result;
}
 
function BandeauxPortailsBOT_CleanModele(Modele){
      Modele = Modele.replace(/\n/g,"");
      Modele = Modele.replace(/\| /g,"\|");
      Modele = Modele.replace(/ \|/g,"\|");
      Modele = Modele.replace(/\|\}/g,"\}");
      Modele = Modele.replace(/\|\|/g,"\|");
      return Modele;
}

// </nowiki>

xpatrolEnableClear = true; // Active la fonctionnalité de blanchiment de page
xpatrolEnableBanner = true; // Active la fonctionnalité d'ajout de bandeau
xpatrolEnablePurge = true; // Active la fonctionnalité de demande de purge d'historique

xpatrolPurgeWarnEditor = true; // Coche par défaut la case pour avertir le contributeur concerné lors d'une demande de purge d'historique
xpatrolSignatureRegistered = 'Merci d\'avance~~' + '~~'; // Modifie la signature utilisée pour les demandes de purge d'historique automatisées
xpatrolSignatureAnonymous = 'Cordialement~~' + '~~'; // Modifie la signature utilisée pour les messages d'avertissement automatisés
xpatrolCopyvioWarningTemplate = 'Bienvenue Copyvio 1'; // Modifie le modèle utilisé pour les messages d'avertissement automatisés

xpatrolWatchMain = true;   // Ajoute les articles blanchis dans la liste de suivi
xpatrolWatchOthers = true; 
});
//importScript('User:Arkanosis/xpatrol.js');
$( function () {
	var pNavUl = document.querySelector( '#p-navigation ul' );
	if ( pNavUl === null ) {
		return;
	}
	NewMessage_PagesASurveiller.push('Wikipédia:Bulletin des administrateurs');
	NewMessage_PagesASurveiller.push('Wikipédia:Requête aux administrateurs');
	NewMessage_PagesASurveiller.push('Wikipédia:Vérificateur d \'utilisateurs/Requêtes');
	NewMessage_PagesASurveiller.push('Wikipédia:Vandalisme_en_cours');
	NewMessage_PagesASurveiller.push('Wikipédia:Demande_de_suppression_immédiate');
	mw.loader.using( 'mediawiki.util', function() {
		pNavUl.appendChild( document.createElement( 'br' ) );
	
		mw.util.addPortletLink( 'p-navigation', mw.util.getUrl( 'Wikipédia:BULPAT' ), 'bulletin patrouille ', 'n-admin' );
		mw.util.addPortletLink( 'p-navigation', mw.util.getUrl( 'Wikipédia:Bulletin des administrateurs' ), 'Bulletin admin', 'n-badmin' );
		mw.util.addPortletLink( 'p-navigation', mw.util.getUrl( 'Wikipédia:Bulletin_des_bureaucrates' ), 'Bulletin stewart', 'n-bstewart' );
		mw.util.addPortletLink( 'p-navigation', mw.util.getUrl( 'Wikipédia:Requête aux administrateurs' ), 'Requêtes', 'n-radmin' );
		mw.util.addPortletLink( 'p-navigation', mw.util.getUrl( 'Wikipédia:Vérificateur d\'adresses IP/Requêtes' ), 'RCU', 'n-rcu' );
		mw.util.addPortletLink( 'p-navigation', mw.util.getUrl( 'Wikipédia:VEC' ), 'vandale', 'n-vec' );
		mw.util.addPortletLink( 'p-navigation', mw.util.getUrl( 'Wikipédia:DSI' ), 'en instance de suppression', 'n-dsi' );
		mw.util.addPortletLink( 'p-navigation', mw.util.getUrl( 'Projet:OIA' ), 'observatoire des ia  ', 'n-admin' );
		mw.util.addPortletLink( 'p-navigation', mw.util.getUrl( 'WP:MWS' ), 'gestion des site suspect ', 'n-admin' );
		pNavUl.appendChild( document.createElement( 'br' ) );
		
		mw.util.addPortletLink( 'p-navigation', mw.util.getUrl( 'Special:Newpages' ), 'Nouvelles pages', 'n-npages' );
		mw.util.addPortletLink( 'p-navigation', mw.util.getUrl( 'Special:Shortpages' ), 'Articles courts', 'n-spages' );
		mw.util.addPortletLink( 'p-navigation', mw.util.getUrl( 'Special:Log' ), 'Journaux', 'n-logs' );
		
		pNavUl.appendChild( document.createElement( 'br' ) );
		
		mw.util.addPortletLink( 'p-navigation', mw.util.getUrl( 'Special:BlockIp' ), 'Bloquer', 'n-blockip' );
	} );
} );

// NoSource.js
/**
 * Suivi du jour
 *
 * Lien vers le suivi du jour dans le panneau de navigation
 */
//<syntaxhighlight lang="javascript">//<pre>
function TodaySuiviDate() {
      var m = ["janvier", "février", "mars", "avril", "mai", "juin", "juillet", "août", "septembre", "octobre", "novembre", "décembre"];
      var today = new Date();
      var day = today.getDate();
 
      return (day + " " + m[today.getMonth()]);
}
 
function SuiviDuJour()
{
 mw.util.addPortletLink('p-navigation', 'http://fr.wikipedia.org/w/index.php?title=Sp%C3%A9cial%3ASuivi+des+liens&target=' + TodaySuiviDate().replace(/ /g,"+") + '&showlinkedto=1', 'Suivi du jour', 'n-suividj');
}
addOnloadHook(SuiviDuJour);
importScript('User:Utilisateur:Spartan.arbinger/chelper.js');
importScript('User:Aelxen/Mes scripts/NoDetectSource.js');
importScript('Utilisateur:Dr_Brains/ScriptManager.js');
mw.loader.load("//meta.wikimedia.org/wiki/User:Krinkle/RTRC.js?action=raw&ctype=text/javascript");
obtenir('BlockLogById');
obtenir('verifHomon');
obtenir('LiensRouges');
obtenir('StructuredCategories');
obtenir('DeluxeBar');
obtenir('NewMessage');
// QualiDetect.js
importScript('Utilisateur:LD/PV.js');
importScript('Utilisateur:Jules*/Gadget_blocked.js')
importScript('User:Aelxen/Mes scripts/QualiDetect.js');
mw.loader.load("https://github.com/Frederisk/Wikitext-Extension-Gadget/releases/latest/download/index-vscode.js");