Skip to content

Commit

Permalink
Try to fetch additional details from BibTeX data.
Browse files Browse the repository at this point in the history
  • Loading branch information
aurimasv committed Sep 15, 2012
1 parent ae02ef6 commit d3ccac1
Showing 1 changed file with 131 additions and 16 deletions.
147 changes: 131 additions & 16 deletions ProQuest.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
"inRepository": true,
"translatorType": 4,
"browserSupport": "gcsibv",
"lastUpdated": "2012-07-08 12:40:00"
"lastUpdated": "2012-09-15 03:20:35"
}

/*
Expand Down Expand Up @@ -380,27 +380,142 @@ function scrape(doc, url, type, pdfUrl) {
document: doc
});

//we may already have a link to the full length PDF
if(pdfUrl) {
item.attachments.push({
title: 'Full Text PDF',
url: pdfUrl,
mimeType: 'application/pdf'
});
} else {
var pdfLink = ZU.xpath(doc, '//div[@id="side_panel"]//\
a[contains(@class,"format_pdf") and contains(@href,"fulltext")][1]');
if(pdfLink.length) {
fetchEmbeddedPdf(pdfLink[0].href, item,
function() { item.complete(); });
var completeItem = function(item) {
//we may already have a link to the full length PDF
if(pdfUrl) {
item.attachments.push({
title: 'Full Text PDF',
url: pdfUrl,
mimeType: 'application/pdf'
});
} else {
var pdfLink = ZU.xpath(doc, '//div[@id="side_panel"]//\
a[contains(@class,"format_pdf") and contains(@href,"fulltext")][1]');
if(pdfLink.length) {
fetchEmbeddedPdf(pdfLink[0].href, item,
function() { item.complete(); });
}
}

if(pdfUrl || !pdfLink.length) {
item.complete();
}
}

if(pdfUrl || !pdfLink.length) {
item.complete();
if( (!item.publicationTitle && ZU.fieldIsValidForType('publicationTitle', item.itemType)) ||
!item.date || !item.date.length) {
fetchBibTeXData(item, doc, completeItem);
} else {
completeItem(item);
}
}

function fetchBibTeXData(item, doc, callback) {
Z.debug('Fetching BibTeX data');
var id = ZU.xpathText(doc, '//a[@id="citethisLink"]/@href');
if(!id || !(id = id.match(/\d{3,}/))) {
callback(item);
return;
} else {
id = id[0];
}

var headers = {
'X-Requested-With': 'XMLHttpRequest'
};

var url = '/docview.docviewoptionsbar.citethis:updatecitationlink/' +
'DocView/relevance/citeThisZonecitethis/MSTAR_' + id +
'?t:ac=' + id + '/abstract';
var data = 't%3Azoneid=citeThisZonecitethis';
//open Cite dialog
ZU.doPost(url, data,
function(text) {
url = '/docview.docviewoptionsbar.citethis.overlay_0:'+
'updateoverlayzone?t:ac=' + id + '/abstract';
//Load ovelay
ZU.doPost(url, '',
function(text) {
var formData = text.match(/value=\\"([^\\]+?)\\"\s+name=\\"t:formdata\\"/i);
var id2 = text.match(/updateCitationForm_([0-9a-f]+)/i);
if(!formData || !id2) {
callback(item);
return;
}

formData = formData[1];
id2 = id2[1];

url = '/docview.docviewoptionsbar.citethis:styleclick/BIB_TEX';
//Set output style to BibTeX
ZU.doPost(url, '',
function(text) {
//Z.debug(text);
url = '/docview.docviewoptionsbar.citethis.' +
'updatecitationform/DocView/$N/' +
'citeThisZonecitethis/MSTAR_' + id;
data = 't%3Aac=' + encodeURIComponent(id) + '%2Fabstract' +
'&t%3Asubmit=' +
encodeURIComponent('["submit_' + id2 + '_0","submit_' + id2 + '_0"]') +
'&t%3Aformdata=' + encodeURIComponent(formData) +
'&citeStyle=BIB_TEX&locationId=citethis&t%3Azoneid=updateForm_citethis';

//Update overlay
ZU.doPost(url, data,
function(text) {
var bibTeX = text.match(/<div style=[^>]+>(.+?)<\\\/div>/i);
if(!bibTeX) {
callback(item);
}

//Fix bibtex. Why do they even bother...
bibTeX = '@article{\n' + ZU.cleanTags(bibTeX[1]);

var itemDone = false;

var trans = Zotero.loadTranslator('import');
trans.setTranslator('9cb70025-a888-4a29-a210-93ec52da40d4');
trans.setString(bibTeX);

trans.setHandler('itemDone', function(obj, newItem) {
itemDone = true;
if(!item.publicationTitle) {
item.publicationTitle = newItem.publicationTitle;
}

if(!item.date ||
(item.date.length <= 4 && newItem.date && newItem.date.length > item.date.length)) {
item.date = newItem.date;
}

callback(item);
});

trans.setHandler('error', function() {
callback(item);
});

trans.setHandler('done', function() {
if(!itemDone) {
callback(item);
}
});

trans.translate();
},
headers
);
},
headers
);
},
headers
);
},
headers
);
}

function getItemType(types) {
var guessType, govdoc, govdocType;
for(var i=0, n=types.length; i<n; i++) {
Expand Down

0 comments on commit d3ccac1

Please sign in to comment.