MediaWiki:Gadget-document.js

La bibliothèque libre.

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.
var numforms = 0;

String.prototype.trim = function() {
	return this.replace(/^\s+|\s+$/g,"");
}

function refbuttons() {
  if (document.getElementById('toolbar') ) {
    button = document.createElement('a');
    button.href = "javascript:easyCiteMain()";
    button.title = "Modèle Document";
    buttonimage = document.createElement('img');
    buttonimage.src = "//upload.wikimedia.org/wikipedia/commons/d/d6/Button_l_d.png";
    buttonimage.alt = "Modèle Document";
    button.appendChild(buttonimage);
    var toolbar = document.getElementById('toolbar');
    if (navigator.userAgent.indexOf('MSIE') == -1) {
      if (toolbar.style != null) {
        toolbar.style.height = 'auto';
      }
      else {
      	toolbar.setAttribute('style', 'margin-bottom: 6px; height: auto;');
      }
      toolbar.appendChild(button);
      citemain = document.createElement('div');
      citemain.style.display = 'none';
      citemain.style.margin = '0.2em 0 -0.2em 0';
      citemain.setAttribute('Id', 'citeselect');
      citemain.appendChild( addOption("addEntete()", "En-tête") );
      citemain.appendChild( addOption("addDoc()", "Ligne") );
      citemain.appendChild( addOption("hideInitial()", "-") );
      
      citemore = document.createElement('div');
      citemore.style.display = 'none';
      
      toolbar.appendChild(citemain);
    }
    else {
      toolbar.appendChild(button);
      selection = '<div id="citeselect" style="display:none"><input type="button" value="Entete" onclick="addEntete()" />'+
      '<input type="button" value="Document" onclick="addDoc()" />'+
      '<input type="button" value="Cancel" onclick="hideInitial()" />'+
      '</div>';
      document.getElementById('editform').innerHTML = selection + document.getElementById('editform').innerHTML;
    }
    document.getElementById('citeselect').innerHTML += '<span id="refToolFormArea"></span>';
  }
  if (typeof EditTools == "object") {
    var placeholder = document.getElementById("editpage-specialchars");
    EditTools.createEditTools (placeholder);
  }
}

function addOption(script, text) {
  option = document.createElement('input');
  option.setAttribute('type', 'button');
  option.setAttribute('onclick', script);
  option.setAttribute("value", text);
  return option;
}

function hideInitial() {
  document.getElementById('citeselect').style.display = 'none';
  oldFormHide();
}

function oldFormHide() {
  //if (numforms != 0) {
  //  document.getElementById('citediv'+numforms).style.display = 'none';
  //}
  document.getElementById('refToolFormArea').innerHTML = '';
  if (document.getElementById('errorform') != null) {
    document.getElementById('citeselect').removeChild(document.getElementById('errorform'));
  }
}

function easyCiteMain() {
  document.getElementById('citeselect').style.display = '';
}

function addEntete() {
  oldFormHide();
  template = "Liste documents début";
  numforms++;
  form = '<div id="citediv'+numforms+'">'+
    '<fieldset><legend>En-tête du modèle Document</legend>'+
    '<table cellspacing="5">'+
    '<input type="hidden" value="'+template+'" id="template">'+
    '<tr><td width="120"><label for="type">&nbsp;Titre : </label></td>'+
      '<td width="400"><input type="text" tabindex=1 style="width:100%" id="type"></td>'+
    '<td width="120"><label for="divers">&nbsp;Divers : </label></td>'+
      '<td width="400"><input type="text" tabindex=1 style="width:100%" id="divers"></td></tr>'+
    '</table>'+
    '<input type="button" value="Ajouter" onClick="addcites()">'+
	' <input type="button" value="Prévisualiser" onClick="previewCitationDefault()"> \
	<img id="progress" src="//upload.wikimedia.org/wikipedia/commons/5/59/RefToolbar_spinning_throbber.gif" style="visibility: hidden" />'+
    '<span style="float:right"><a href="//fr.wikisource.org/wiki/Modèle:'+template.replace(/ /g, '_')+'" target="_blank">[aide]</a></span>'+
    '</fieldset><span id="previewSpan"></span></div>';
   document.getElementById('refToolFormArea').innerHTML = form;
}

function addDoc() {
  oldFormHide();
  template = "Document";
  numforms++;
  form = '<div id="citediv'+numforms+'">'+
    '<fieldset><legend>Modèle Document</legend>'+
    '<table cellspacing="5">'+
    '<input type="hidden" value="'+template+'" id="template">'+
    '<tr><td width="160"><label for="titre">&nbsp;Titre : </label></td>'+
      '<td width="400"><input type="text" tabindex=1 style="width:100%" id="titre"></td>'+
    '<td width="100"><label for="livre">&nbsp;Index : </label></td>'+
      '<td width="400"><input type="text" tabindex=1 style="width:100%" id="livre"></td></tr>'+
    '<tr><td width="160"><label for="éditions">&nbsp;Éditions multiples : </label></td>'+
      '<td width="400"><input type="text" tabindex=1 style="width:100%" id="éditions"></td>'+
    '<td width="100"><label for="date">&nbsp;Date : </label></td>'+
      '<td width="400"><input type="text" tabindex=1 style="width:20%" id="date"><label for="dates">&nbsp;Dates : </label><input type="text" tabindex=1 style="width:35%" id="dates"></td></tr>'+
    '<tr><td width="160"><label for="epub">&nbsp;ePub : </label></td>'+
      '<td width="400"><input type="text" tabindex=1 style="width:100%" id="epub"></td>'+
    '<td width="100"><label for="avancement">&nbsp;Avct : </label></td>'+
      '<td width="400"><input type="text" tabindex=1 style="width:10%" id="avancement"></td></tr>'+
    '</table>'+
    '<input type="button" value="Ajouter" onClick="addcites()">'+
	' <input type="button" value="Prévisualiser" onClick="previewCitationDefault()"> \
	<img id="progress" src="//upload.wikimedia.org/wikipedia/commons/5/59/RefToolbar_spinning_throbber.gif" style="visibility: hidden" />'+
    '<span style="float:right"><a href="//fr.wikisource.org/wiki/Modèle:'+template.replace(/ /g, '_')+'" target="_blank">[aide]</a></span>'+
    '</fieldset><span id="previewSpan"></span></div>';
   document.getElementById('refToolFormArea').innerHTML = form;
}

function makeCiteCode() {
  cites = document.getElementById('citediv'+numforms).getElementsByTagName('input');
  var template = '';
  var citebegin = '';
  var citename = '';
  var citeinner = '';
  for (var i=0; i<cites.length; i++) {
    var citeid = cites[i].id;
    var citevalue = cites[i].value;
    citevalue = citevalue.trim();    //Trim leading and trailing whitespace
    if (citeid == "verbose") {
	  if (cites[i].checked) {
	    citeinner = citeinner.replace(/\|/g, "\n|");
	  }
    }
    else if (citevalue != '' && cites[i].type != 'button' && cites[i].type != 'image') {
      if (citeid == "refname") {
        citebegin += ' name="' + citevalue + '"';
      }
      else if (citeid == "template") {
        citename = '{{' + citevalue;
        template = citevalue;
      }
      else {
        if (citeid == "pages") {
          if (citevalue.match(/^\w+$/) && template != 'cite encyclopedia') {
            citeid = "page";    //Use page= instead of pages= if only one page. Makes p. 5 instead of pp. 5.
          }
          else {
            citevalue = citevalue.replace(/-/g, "–");    //Replace hyphens with en dashes [[WP:ENDASH]]
          }
        }
        citeinner += "|" + citeid + "=" + citevalue;
      }
    }
  }
  cite = citebegin + citename + citeinner + "}}";
  return cite;
}

function addcites(template) {
  var cite = makeCiteCode();
  insertTags(cite, '', '');
  //document.getElementById('citediv'+numforms).style.display = 'none';
  oldFormHide();
}

function preview(wikitext) {
    document.getElementById('progress').style.visibility = "visible";
    wikitext += '';
    var url = "api.php?action=parse&format=xml&prop=text&text=" + encodeURIComponent(wikitext);
    var xmlhttp = sajax_init_object(); // new XMLHttpRequest();
	xmlhttp.onreadystatechange = function () {
		if (xmlhttp.readyState==4) {
			if(xmlhttp.status==200) {
				document.getElementById('progress').style.visibility = "hidden";
				var xmlDoc=xmlhttp.responseXML.documentElement;
				var previewHTML = xmlDoc.getElementsByTagName("text")[0].textContent;
				if (previewHTML == undefined) {
					previewHTML = xmlDoc.getElementsByTagName("text")[0].childNodes[0].nodeValue;
				}
				//alert(previewHTML);
				previewHTML = previewHTML.replace(/href="\//gi, 'href="//fr.wikisource.org/');
				document.getElementById('previewSpan').innerHTML = '<fieldset><legend>Prévisualisation</legend>' + previewHTML + '</fieldset>';
			}
			else
				alert('The query returned an error.');
		}
    };
    xmlhttp.open("GET", url, true);
    xmlhttp.send(null)
}

function previewCitationDefault() {
	var wikitext = makeCiteCode();
	preview(wikitext);
}

$( refbuttons );