www

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | Submodules | README | LICENSE

commit 85876c36a6ae0d6b0d4c99b2bc58b0ed97f3294f
parent ad14b44335036d8aba4f5f081650c839f82f0bac
Author: Matt Burton <mcburton@gmail.com>
Date:   Thu, 21 May 2009 18:33:07 +0000

Added logic to check if DOI exists before adding to JSTOR item.

Diffstat:
Mtranslators/JSTOR.js | 40+++++++++++++++++++++++++++++++++-------
1 file changed, 33 insertions(+), 7 deletions(-)

diff --git a/translators/JSTOR.js b/translators/JSTOR.js @@ -104,19 +104,44 @@ function doWeb(doc, url) { if (/stable\/(\d+)/.test(item.url)) { var localJid = RegExp.$1; - // Add DOI - if (! item.DOI) { - item.DOI = "10.2307/"+localJid; - } + var doi = "10.2307/"+localJid; + checkDOI(item, doi); + var pdfurl = "http://"+ host + "/stable/pdfplus/" + localJid + ".pdf"; item.attachments.push({url:pdfurl, title:"JSTOR Full Text PDF", mimeType:"application/pdf"}); } - item.complete(); }); translator.translate(); - - Zotero.done(); }); } } + +function checkDOI(item, doi) { + var crossrefURL = "http://www.crossref.org/openurl/?req_dat=zter:zter321&url_ver=Z39.88-2004&ctx_ver=Z39.88-2004&rft_id=info%3Adoi/"+doi+"&noredirect=true&format=unixref"; + var doiCheckGenerate = function(item) { + var closedItem = item; + var checker = function(responseText) { + responseText = responseText.replace(/<\?xml[^>]*\?>/, ""); + // parse XML with E4X + try { + var xml = new XML(responseText); + } catch(e) { + return false; + } + + var doi = xml..doi; + + // ensure DOI is valid + if(!xml..error.length()) { + Zotero.debug("DOI is Valid."); + closedItem.DOI = doi; + } + + }; + return checker; + }; + + var checkDOI = doiCheckGenerate(item); + Zotero.Utilities.HTTP.doGet(crossrefURL, checkDOI, function() { item.complete(); Zotero.done(); }); +} +\ No newline at end of file