Jump to content

User:Smith609/refToolbar.js

From Wikipedia, the free encyclopedia
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
Note: After saving, you have to bypass your browser's cache to see the changes. Google Chrome, Firefox, Microsoft Edge and Safari: Hold down the ⇧ Shift key and click the Reload toolbar button. For details and instructions about other browsers, see Wikipedia:Bypass your cache.
// <nowiki>
// Based on the refToolbar script from the user preferences.

var numforms = 0;
var wikEdAutoUpdateUrl;

function refbuttons() {
  if (typeof mwCustomEditButtons !== 'undefined' && document.getElementById('toolbar') && wikEdAutoUpdateUrl == null) {
    button = document.createElement('a');
    button.href = "javascript:citeJournal()";
    button.title = "Insert Citation";
    buttonimage = document.createElement('img');
    buttonimage.src = "/media/wikipedia/commons/e/ea/Button_easy_cite.png";
    buttonimage.alt = "Insert Citation";
    button.appendChild(buttonimage);
    document.getElementById('toolbar').appendChild(button);
    if (navigator.userAgent.indexOf('MSIE') == -1) {
     citemain = document.createElement('div');
     citemain.style.display = 'none';
     citemain.setAttribute('Id', 'citeselect');
     document.getElementById('wpTextbox1').parentNode.insertBefore(citemain, document.getElementById('wpTextbox1'));
   }
   else {
    selection = '<div id="citeselect" style="display:none"></div>';
    document.getElementById('editform').innerHTML = selection + document.getElementById('editform').innerHTML;
   }
   document.getElementById('citeselect').style.display = '';
  }
}

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';
  if (document.getElementById('citediv1') ) {
    document.getElementById('citediv'+numforms).style.display = 'none';
  }
}

function getTime() {
  var time = new Date();
  var nowdate = time.getUTCDate();
  if (nowdate<10) { nowdate = "0"+ nowdate.toString(); }
  var nowmonth = time.getUTCMonth()+1;
  if (nowmonth<10) { nowmonth = "0"+ nowmonth.toString(); }
  var nowyear = time.getUTCFullYear();
  newtime =  nowyear + '-' + nowmonth + '-' + nowdate;
  return (newtime);
}

function citeJournal() {
  if (numforms != 0) {
    document.getElementById('citediv'+numforms).style.display = 'none';
  }
  template = "cite journal";
  numforms++;
  form = '<div id="citediv'+numforms+'">'+
    '<fieldset><legend>Cite journal from doi</legend>'+
    '<table cellspacing="5">'+
    '<input type="hidden" value="'+template+'" id="template">'+
    '<tr><td width="80"><label for="pages">&nbsp;doi: </label></td>'+
              '<td width="400"><input type="text" style="width:100%" id="doi"></td>'+
    '<td width="100"><label for="RefName">&nbsp;Reference&nbsp;name: </label></td>'+
              '<td width="180"><input type="text" style="width:100%" id="refName"></td>'+
    '</tr>'+
    '</table>'+
    '<input type="button" value="Add citation" onClick="addcites()">'+
 '</fieldset></div>';
   document.getElementById('citeselect').innerHTML += form;
}

function addcites(template) {
  cites = document.getElementById('citediv'+numforms).getElementsByTagName('input');
  var citebegin = '<ref';
  var citename = '';
  var citeinner = '';
  var refname = '';
  var doi = '';
  for (var i=0; i<cites.length-1; i++) {
    if (cites[i].id == "refName") refname = cites[i].value; 
    else if (cites[i].id == "doi") doi = /\d{2}\.\d{4}[^\s]*/.exec(cites[i].value);
  }
  cite = doi?("<ref" + (refname?(" name='" + refname + "'"):"") + ">{" + "{cite doi | " + doi[0] + " }}</ref>"):("<ref" + (refname?(" name='" + refname+"'"):"") + ">{{cite journal\n | doi =  }}</ref>");
  insertTags(cite, '', '');
  document.getElementById('citediv'+numforms).style.display = 'none';
} 

function getNamedRefs() {
  text = document.getElementById('wpTextbox1').value;
  regex = /<\s*?ref\s+?name\s*?=\s*?(('([^']*?)')|("([^"]*?)"))\s*?>/gi;
  var namedrefs = new Array();
  var i=0;
  var nr=true;
  do {
    ref = regex.exec(text);
    if(ref != null){
      namedrefs[i] = ref[5];
      i++;
    } else {
      nr=false;
    }
  } while (nr==true);
  return namedrefs;
}

function citeNamedRef() {
  namedrefs = getNamedRefs();
  if (namedrefs == '') {
    if (numforms != 0) {
      document.getElementById('citediv'+numforms).style.display = 'none';
    }
    numforms++;
    out = '<div id="citediv'+numforms+'"><fieldset>'+
      '<legend>References in text</legend>There are no named refs (<tt>&lt;ref name="Name"&gt;</tt>) in the text</fieldset></div>';
    document.getElementById('citeselect').innerHTML += out;
  }
  else {
    if (numforms != 0) {
      document.getElementById('citediv'+numforms).style.display = 'none';
    }
    numforms++;
    form = '<div id="citediv'+numforms+'">'+
      '<fieldset><legend>References in article</legend>'+
      '<table cellspacing="5">'+
      '<tr><td><label for="namedrefs">&nbsp;Named references in text</label></td>'+
            '<td><select name="namedrefs" id="namedrefs">';
    for (var i=0;i<namedrefs.length;i++) {
      form+= '<option value="'+namedrefs[i]+'">'+namedrefs[i]+'</option>';
    }
    form+= '</select>'+
      '</td></tr></table>'+
      '<input type="button" value="Add citation" onClick="addnamedcite()">'+
      '</fieldset></div>';
     document.getElementById('citeselect').innerHTML += form;
  }
}

function addnamedcite() {
  name = document.getElementById('citediv'+numforms).getElementsByTagName('select')[0].value;
  ref = '<ref name="'+name+'" />';
  insertTags(ref, '', '');
  document.getElementById('citediv'+numforms).style.display = 'none';  
}

$(window).on("load", refbuttons);
// </nowiki>