User:Smith609/refToolbar.js
Appearance
Code that you insert on this page could contain malicious content capable of compromising your account. If you import a script from another page with "importScript", "mw.loader.load", "iusc", or "lusc", take note that this causes you to dynamically load a remote script, which could be changed by others. Editors are responsible for all edits and actions they perform, including by scripts. User scripts are not centrally supported and may malfunction or become inoperable due to software changes. A guide to help you find broken scripts is available. If you are unsure whether code you are adding to this page is safe, you can ask at the appropriate village pump. This code will be executed when previewing this page. |
Documentation for this user script can be added at User:Smith609/refToolbar. |
// <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"> doi: </label></td>'+
'<td width="400"><input type="text" style="width:100%" id="doi"></td>'+
'<td width="100"><label for="RefName"> Reference 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><ref name="Name"></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"> 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>