Utilisateur:VanBrooken/AjouterSectionRefs.js

Une page de Wikipédia, l'encyclopédie libre.
Note : après avoir enregistré la page, vous devrez forcer le rechargement complet du cache de votre navigateur pour voir les changements.

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

Chrome / Internet Explorer / Opera : maintenez la touche Ctrl en cliquant sur le bouton Actualiser ou pressez Ctrl-F5.
/* **********************************************************************************************************************
AjouterSectionRefs

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
// ====================================================================================================================
// <syntaxhighlight 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('<references/>')!=-1)){
        alert('Une balise références existe déjà');
        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';
          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
               var 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('');
               var 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 DebutModele = '';
               var SuiteModele = '';
               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,
     });
     
/*if(document.getElementById('AjouterSectionRefs_Menu')) return;

	var LargeurEcran;
	var HauteurEcran;

    var agt=navigator.userAgent.toLowerCase();
    var is_ie = ((agt.indexOf("msie") != -1) && (agt.indexOf("opera") == -1));
    if (is_ie) {
        LargeurEcran = parseInt(screen.width);
        HauteurEcran = parseInt(screen.height);
    } else {
        LargeurEcran = parseInt(window.innerWidth);
        HauteurEcran = parseInt(window.innerHeight);
    }

    var Menu = document.createElement('div');
    Menu.id='AjouterSectionRefs_Menu';
    Menu.className ='AjouterSectionRefs_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= '450px';
    Menu.style.height= '100px';
    document.body.appendChild(Menu);
    PositionGauche = parseInt((LargeurEcran-Menu.clientWidth)/2) ;
    PositionHaut = parseInt((HauteurEcran-Menu.clientHeight)/3) ;
    Menu.style.left=PositionGauche + 'px';
    Menu.style.top=PositionHaut + 'px';
   
    var MenuContent = ''
    + '<label for="TailleRef">Taille : </label>'
    + '<input type="text" id="TailleRef" value="30" disabled="disabled" size="3"/>'
    + '<br />'
    + '<input type="button" style="cursor:pointer;" '
    + ' value="Valider" title="Valider" '
    + ' onclick="ValiderAvecTaille();" onselect="ValiderAvecTaille();"/>'
    + '</center>';
    Menu.innerHTML = MenuContent;
    document.getElementById("TailleRef").focus();*/
};

window.Section_AddOne = function(){
    var OngletsCactions = document.getElementById('p-cactions');
    if(OngletsCactions){
        var CactionsUl = OngletsCactions.getElementsByTagName('ul')[0];
        CactionsUl.innerHTML += '<li id="ref-add"><a href="javascript:Section_Edit();">Ajout section refs</a></li>';
        $(OngletsCactions).removeClass("emptyPortlet");
    }
};

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

function AjouterSectionRefs(){
      var Homonymie = document.getElementById("homonymie");
      var Pagesliees = document.getElementById("t-whatlinkshere");
      if( Homonymie || !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)) {
	$( AjouterSectionRefs );
}

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