Utilisateur:Sebicux/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 "Ajout section refs" dans la section "plus" à côté des historiques.


Texte ajouté à l'article :

== Notes et références ==
{{Références}}
												
{{Projet:JavaScript/Script}} 
*********************************************************************************************************************** */
// ==================================================================================================================== 
// DEBUT DU CODE
// ====================================================================================================================
// <source lang=javascript><pre><nowiki>
/////////////////////////////////////////////////////////////////////////////////// Variables personnalisables
// Publication automatique
if (typeof window.Section_AutoEdit === 'undefined') window.Section_AutoEdit = true;

// Modification mineure
if (typeof window.Section_MinorEdit === 'undefined') window.Section_MinorEdit = true;

// Ajout à la liste de suivi ( -1 = défaut préférences, 0 = jamais, 1 = toujours)
if (typeof window.Section_Watchthis === 'undefined') window.Section_Watchthis = -1;

/////////////////////////////////////////////////////////////////////////////////// Édition

var Section_ajax = {
    http: function(bundle) {
        var xmlhttp;
        try {
            xmlhttp = new XMLHttpRequest();
        } catch (e) {
            try {
                xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
            } catch (e) {
                try {
                    xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
                } catch (e) {
                    xmlhttp = false;
                }
            }
        }
        if (xmlhttp) {
            xmlhttp.onreadystatechange = function() {
                if (xmlhttp.readyState == 4)
                    Section_ajax.httpComplete(xmlhttp, bundle);
            };
            xmlhttp.open(bundle.method ? bundle.method : "GET", bundle.url, bundle.async === false ? false : true);
            if (bundle.headers) {
                for (var field in bundle.headers)
                    try {
                        xmlhttp.setRequestHeader(field, bundle.headers[field]);
                    } catch (err) {}
            }
            xmlhttp.send(bundle.data ? bundle.data : null);
        }
        return xmlhttp;
    },
    httpComplete: function(xmlhttp, bundle) {
        if (xmlhttp.status == 200 || xmlhttp.status == 302) {
            if (bundle.onSuccess) bundle.onSuccess(xmlhttp, bundle);
        } else if (bundle.onFailure) {
            bundle.onFailure(xmlhttp, bundle);
        }
    }
};

function Section_DoEdit(Req, data) {
    while (document.body.firstChild) {
        document.body.removeChild(document.body.firstChild);
    }
    document.body.innerHTML = Req.responseText;
    var TextArea = document.getElementById('wpTextbox1');
    if (!TextArea) return;
    if (Section_AutoEdit) document.editform.style.display = "none";

    var OldText = TextArea.value;

    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;
    } else {
        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;
        var SommaireFinal = Sommaire + ' ; avec [[Utilisateur:Prométhée/AjouterSectionRefs.js|AjouterSectionRefs]] #AjouterSectionRefs';
        document.getElementById('wpMinoredit').checked = Section_MinorEdit;
        if (Section_Watchthis === 1) document.getElementById('wpWatchthis').checked = "checked";
        if (Section_Watchthis === 0) document.getElementById('wpWatchthis').checked = false;
        document.getElementById('wpTextbox1').value = TexteFinal;
        document.getElementById('wpSummary').value = SommaireFinal;
        if (Section_AutoEdit) document.editform.submit();
    }
}

function Section_Edit() {
    var URL = mw.config.get('wgServer') + mw.config.get('wgScript') + "?title=" + encodeURIComponent(mw.config.get('wgPageName')) + "&action=edit";
    Section_ajax.http({
        url: URL,
        onSuccess: Section_DoEdit,
    });
}

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_Edit();">Ajouter une section « Notes et références »</a></b>';
    catLinks.before(addSectionRef);
    }
};

/////////////////////////////////////////////////////////////////////////////////// Fonctions actives au chargement de la page

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
// ==================================================================================================================== 
//</source>