Utilisateur:Metrodore/test.js
Note : après avoir enregistré vos modifications, il se peut que vous deviez forcer le rechargement complet du cache de votre navigateur pour voir les changements.
- Firefox / Safari : Maintenez la touche Maj (Shift) en cliquant sur le bouton Actualiser ou pressez Ctrl-F5 ou Ctrl-R (⌘-R sur un Mac) ;
- Google Chrome : Appuyez sur Ctrl-Maj-R (⌘-Shift-R sur un Mac) ;
- Internet Explorer : Maintenez la touche Ctrl en cliquant sur le bouton Actualiser ou pressez Ctrl-F5 ;
- Opera : Allez dans Menu → Settings (Opera → Préférences sur un Mac) et ensuite à Confidentialité & sécurité → Effacer les données d'exploration → Images et fichiers en cache.
function notes2(str){
var deb=0;
var fin=0;
var nbref=0;
var notfin=1;
var offset=0;
var refdeb=new Array;
var reffin=new Array;
var tabreg=new Array;
var chaineref=new Array;
var nbfollow=0;
wstr=str;
wstr=wstr.replace(/<references\/>/g,"chaine_references");
do{
deb=wstr.substring(offset,wstr.length).search(/<ref[^>]*>/i);
if(deb == -1){notfin=0}
else {
follow=wstr.substring(offset+deb,wstr.length).search(/>/i);
if(follow != -1){
chainedebut=wstr.substring(offset,wstr.length).match(/<ref[^>]*>/i);
refdeb[nbref]=new Array;
refdeb[nbref][0]=offset+deb;
refdeb[nbref][1]=chainedebut[0].length;
follow2=wstr.substring(offset+deb,offset+deb+follow).search(/follow/);
if(follow2 != -1){
nbfollow++;
refdeb[nbref][2]='f';
}
else
{
refdeb[nbref][2]='r';
}
offset=offset+deb+chainedebut[0].length;
nbref++;
}
}
}while(notfin);
if(nbref == 0){
alert('Aucune <ref> trouvée.');
return str;
}
//
// Controle sir le nombre de <ref> = le nombre de </ref>
//
fin=wstr.match(/<\/ref *>/ig);
if(fin === null || fin.length != nbref){
alert('nombre de </ref> différent au nombre de <ref>. Opération annulée.');
return str;
}
refdeb[nbref]=new Array;
refdeb[nbref][0]=str.length;
for(i=0;i<nbref;i++){
offset=refdeb[i][0];
longueur=refdeb[i+1][0];
fin=wstr.substring(offset,longueur).search(/<\/ref\ *>/i);
if(fin == -1){
alert("<ref> numéro"+(i+1)+" non fermée. Opération annulée");
return str;
}
chainefin=wstr.substring(offset,longueur).match(/<\/ref\ *>/i);
reffin[i]=new Array;
reffin[i][0]=fin+offset;
reffin[i][1]=chainefin[0].length;
}
tabref=wstr.match(/#[0-9]+/g);
if(tabref === null || tabref.length != (nbref-nbfollow)){
if(tabref === null){nanc=0}
else {nanc=tabref.length;}
alert("Nombre d’ancre # = "+nanc+" <> du nombre de <ref> = "+nbref+". Opération annulée");
return str;
}
wstr2="";
offset=0;
wstr2=wstr.substring(0,refdeb[0][0]);
for(i=0;i<nbref;i++){
if(refdeb[i][2]=='r'){
chaineref[i]=wstr.substring(refdeb[i][0],reffin[i][0]+reffin[i][1]);
wstr2=wstr2+wstr.substring(reffin[i][0]+reffin[i][1],refdeb[i+1][0]);
}
else
{
wstr2=wstr2+wstr.substring(refdeb[i][0],refdeb[i+1][0]);
}
}
// str=wstr2;
wstr2=wstr2.replace(/chaine_references/g,"<references\/>");
j=0;
for(i=0;i<nbref;){
// fin=str.substring(deb+offset,longueur).search(/<\/ref\ *>/i);
// chainefin=str.substring(deb+offset,str.length).match(/<\/ref\ *>/i);
if(refdeb[i][2]=='r'){
tabref=wstr2.match(/str1/g);
if(tabref === null ){
alert("Ancre "+str1c+" introuvable. Opération annulée");
return str;
}
str1="#"+(j+1);
str2=chaineref[i];
wstr2=wstr2.replace(str1,str2);
j++;
}
i++;
}
return wstr2;
}
function notesbutton2() {
var txt = document.editform.wpTextbox1;
txt.value = notes2(txt.value);
}
$(document).ready(function () {
if(document.forms.editform) {
mw.util.addPortletLink('p-personal', 'javascript:notesbutton2()', 'notes2', 'ca-format', 'Notes2', '', document.getElementById('ca-edit'));
}
});