Utilisateur:Prométhée/AjouterSectionRefs.js

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.
/* **********************************************************************************************************************
AjouterSectionRefs
Dérivé de : MediaWiki:Gadget-HotCats.js et MediaWiki:Gadget-BandeauxPortails.js (cf historique respectifs pour les auteurs)

Permet d'ajouter une section Notes et références rapidement, en un click sur le lien "Ajouter une section « Notes et références »" dans une section en bas de page.


Texte ajouté à l'article :

== Notes et références ==
{{Références}}
												
{{Projet:JavaScript/Script}} 
*********************************************************************************************************************** */
// ==================================================================================================================== 
// DEBUT DU CODE
// ====================================================================================================================
// <syntaxhighlight lang=javascript><pre><nowiki>
function Section_DoEdit() {
    new mw.Api().edit(
            mw.config.get('wgPageName'),
            function(revision) {
                var OldText = revision.content;

                if ((OldText.indexOf('{{Références') != -1) || (OldText.indexOf('<references') != -1) || (OldText.indexOf('{{Reflist') != -1)) {
                    alert('Une balise références existe déjà');
                    document.editform.style.display = "";
                    return;
                } else if ((OldText.indexOf('== Notes et') != -1) || (OldText.indexOf('==Notes et') != -1) || (OldText.indexOf('== Référence') != -1) || (OldText.indexOf('==Référence') != -1)) {
                    alert('Une section "Notes et références" semble déjà exister');
                    document.editform.style.display = "";
                    return;
                }
                var NouveauModele = '== Notes et références ==\n{{Références}}\n\n';
                var Sommaire = 'Ajout de section Notes et références';
                var DebutModele = "";
                var SuiteModele = "";

                if ((OldText.indexOf('{{DEFAULTSORT:') != -1) || (OldText.indexOf('[[Catégorie:') != -1) || (OldText.indexOf('[[catégorie:') != -1) || (OldText.indexOf('[[Categorie:') != -1) || (OldText.indexOf('[[categorie:') != -1) || (OldText.indexOf('{{Portail') != -1) || (OldText.indexOf('{{portail') != -1) || (OldText.indexOf('{{Palette') != -1) || (OldText.indexOf('{{palette') != -1) || (OldText.indexOf('{{page personnelle') != -1)) {
                    // Il y a des catégories/portails/palettes
                    var DebutModele1 = OldText.substring(0, OldText.indexOf('{{Palette'));
                    var DebutModele2 = OldText.substring(0, OldText.indexOf('{{palette'));
                    var DebutModele3 = OldText.substring(0, OldText.indexOf('{{Portail'));
                    var DebutModele4 = OldText.substring(0, OldText.indexOf('{{portail'));
                    var DebutModele5 = OldText.substring(0, OldText.indexOf('{{DEFAULTSORT:'));
                    var DebutModele6 = OldText.substring(0, OldText.indexOf('[[Catégorie:'));
                    var DebutModele7 = OldText.substring(0, OldText.indexOf('[[catégorie:'));
                    var DebutModele8 = OldText.substring(0, OldText.indexOf('[[Categorie:'));
                    var DebutModele9 = OldText.substring(0, OldText.indexOf('[[categorie:'));
                    var DebutModele10 = OldText.substring(0, OldText.indexOf('{{page personnelle'));

                    // TODO a refactorer
                    SuiteModele = OldText.split(DebutModele1).join('').split(DebutModele2).join('').split(DebutModele3).join('').split(DebutModele4).join('').split(DebutModele5).join('').split(DebutModele6).join('').split(DebutModele7).join('').split(DebutModele8).join('').split(DebutModele9).join('').split(DebutModele10).join('');
                    DebutModele = OldText.split(SuiteModele).join('');
                } else {
                    // Il n'y a pas de catégories/portails/palettes
                    var interWiki = new RegExp('^\\s*\\[\\[([a-z][a-z].?(x?-[^\\]]+)?|simple|tokipona):([^\\]]*)\\]\\]\\s*$');
                    var blank = new RegExp('^\\s*$');
                    var lines = OldText.split('\n');

                    var FoundInterwiki = false;
                    for (var lineId = lines.length - 1; lineId >= 0; --lineId) {
                        if (!interWiki.exec(lines[lineId]) && !blank.exec(lines[lineId])) {
                            DebutModele = lines.slice(0, lineId + 1).join('\n');
                            SuiteModele = lines.slice(lineId + 1).join('\n');
                            break;
                        }
                    }
                    DebutModele = DebutModele + '\n\n';
                    while (SuiteModele.indexOf('\n\n') != -1) {
                        SuiteModele = SuiteModele.split("\n\n").join("\n");
                    }
                    SuiteModele = SuiteModele.replace(/^\n/, "");
                }
                var TexteFinal = DebutModele + NouveauModele + SuiteModele;

                return {
                    text: TexteFinal,
                    summary: 'Ajout de section Notes et références',
                    minor: true,
                    nocreate: 1,
                };
            }
        )
        .then(function() {
            console.log('Saved!');
            location.reload();
        });
}



/////////////////////////////////////////////////////////////////////////////////// Fonctions actives au chargement de la page
window.Section_AddOne = function() {
    var catLinks = document.getElementById('catlinks');
    
    if (catLinks) {
    var addSectionRef = document.createElement('div');
    addSectionRef.id = 'lienSectionRef_add';
    addSectionRef.className = 'navbox-container center';
    addSectionRef.innerHTML += '<b><a href="javascript:Section_DoEdit();">Ajouter une section « Notes et références »</a></b>';
    catLinks.before(addSectionRef);
    }
};

function AjouterSectionRefs() {
    var Pagesliees = document.getElementById("t-whatlinkshere");
    if (!Pagesliees) return;

    Section_AddOne();
}

if ((mw.config.get('wgAction') === 'view' || mw.config.get('wgAction') === 'purge') && 
	(mw.config.get('wgNamespaceNumber') === 0 || mw.config.get('wgNamespaceNumber') === 2 || mw.config.get('wgNamespaceNumber') === 4)) {
    $(AjouterSectionRefs);
}

//</nowiki></pre>
// ====================================================================================================================
// FIN DU CODE
// ==================================================================================================================== 
//</syntaxhighlight>