Jump to content

User:Smith609/refToolbar.js

From Wikipedia, the free encyclopedia
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 = "http://upload.wikimedia.org/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>