Last active
August 21, 2017 14:25
-
-
Save bocklund/367935f1b9fa1883e83616326ab9f184 to your computer and use it in GitHub Desktop.
Fill a form on the ILLiad article submission page based on a user-prompted Bibtex reference
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* Submit requests to ILLiad by populating different fields from a bibtex reference*/ | |
/* We want to do some parsing of input bibtex, files, so we'll include the*/ | |
/* following JS code in our bookmarklet*/ | |
/* keys are the ILLiad field names, values are the bibtex entry keys*/ | |
var replacementDict = { | |
'PhotoJournalTitle' : 'JOURNAL', | |
'PhotoJournalTitle' : 'JOURNAL', | |
'PhotoJournalVolume' : 'VOLUME', | |
'PhotoJournalIssue' : 'NUMBER', | |
'PhotoJournalMonth' : 'MONTH', | |
'PhotoJournalYear' : 'YEAR', | |
'PhotoJournalInclusivePages' : 'PAGES', | |
'PhotoArticleAuthor' : 'AUTHOR', | |
'PhotoArticleTitle' : 'TITLE', | |
'ISSN': 'ISSN' | |
}; | |
function loadScript(url, callback) | |
{ | |
/* code for loading from: https://stackoverflow.com/questions/950087/how-do-i-include-a-javascript-file-in-another-javascript-file*/ | |
/* url is the url to load*/ | |
/* callback is my custom code to run after loading*/ | |
/* Adding the script tag to the head as suggested before*/ | |
var head = document.getElementsByTagName('head')[0]; | |
var script = document.createElement('script'); | |
script.type = 'text/javascript'; | |
script.src = url; | |
/* Then bind the event to the callback function.*/ | |
/* There are several events for cross browser compatibility.*/ | |
script.onreadystatechange = callback; | |
script.onload = callback; | |
/* Fire the loading*/ | |
head.appendChild(script); | |
} | |
var replaceValues = function() { | |
/* Here, do what ever you want*/ | |
var bibJSON = doParse(bibliographyText); | |
for (var key in bibJSON) { | |
/* go through all of the replacement dict fields and populate the field*/ | |
/* of the form with they corresponding key from the bibtex*/ | |
if (bibJSON.hasOwnProperty(key) && key != '@comments') { | |
for (var field in replacementDict) { | |
var el = document.getElementById(field); | |
el.value = bibJSON[key][replacementDict[field]]; | |
if (el.value == 'undefined') {el.value = '';} | |
} | |
} | |
/* finally, set the notes value to the input bibtex, for later reference*/ | |
var el = document.getElementById('Notes'); | |
el.value = bibliographyText; | |
} | |
}; | |
/* get the input from the user*/ | |
var bibliographyText = window.prompt('Enter the bibliography (bibtex format) string', '@article{...}'); | |
/* load the script and do the replacement*/ | |
loadScript("https://cdn.rawgit.com/mikolalysenko/bibtex-parser/7feff8a3/parse-bibtex.js", replaceValues); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment