88 lines
3.2 KiB
JavaScript
88 lines
3.2 KiB
JavaScript
{
|
|
"translatorID":"b0abb562-218c-4bf6-af66-c320fdb8ddd3",
|
|
"translatorType":4,
|
|
"label":"Philosopher's Imprint",
|
|
"creator":"Michael Berkowitz",
|
|
"target":"http://quod.lib.umich.edu/cgi/t/",
|
|
"minVersion":"1.0.0b4.r5",
|
|
"maxVersion":"",
|
|
"priority":100,
|
|
"inRepository":true,
|
|
"lastUpdated":"2009-01-08 08:19:07"
|
|
}
|
|
|
|
function detectWeb(doc, url) {
|
|
if (doc.evaluate('//div/span[text() = "Search Results"]', doc, null, XPathResult.ANY_TYPE, null).iterateNext()) {
|
|
return "multiple";
|
|
} else if (url.match(/\d+\.\d+\.\d+/)) {
|
|
return "journalArticle";
|
|
}
|
|
}
|
|
|
|
function getID(str) {
|
|
return str.match(/\d+\.\d+\.\d+/)[0];
|
|
}
|
|
function doWeb(doc, url) {
|
|
var ids = new Array();
|
|
if (detectWeb(doc, url) == "multiple") {
|
|
var items = new Object();
|
|
var titles = doc.evaluate('//div[@class="itemcitation"]//a', doc, null, XPathResult.ANY_TYPE, null);
|
|
var title;
|
|
while (title = titles.iterateNext()) {
|
|
items[title.href] = title.textContent;
|
|
}
|
|
items = Zotero.selectItems(items);
|
|
for (var i in items) {
|
|
ids.push('http://quod.lib.umich.edu/cgi/t/text/text-idx?c=phimp;view=text;rgn=main;idno=' + getID(i));
|
|
}
|
|
} else {
|
|
ids = ['http://quod.lib.umich.edu/cgi/t/text/text-idx?c=phimp;view=text;rgn=main;idno=' + getID(url)];
|
|
}
|
|
Zotero.Utilities.processDocuments(ids, function(newDoc) {
|
|
var rows = newDoc.evaluate('//tr[td[@id="labelcell"]]', newDoc, null, XPathResult.ANY_TYPE, null);
|
|
var row;
|
|
var data = new Object();
|
|
while (row = rows.iterateNext()) {
|
|
var heading = newDoc.evaluate('./td[1]', row, null, XPathResult.ANY_TYPE, null).iterateNext().textContent;
|
|
var value = newDoc.evaluate('./td[2]', row, null, XPathResult.ANY_TYPE, null).iterateNext().textContent;
|
|
data[heading.replace(/[\s:]/g, "")] = value;
|
|
}
|
|
var item = new Zotero.Item("journalArticle");
|
|
item.title = Zotero.Utilities.trimInternal(data['Title']);
|
|
if (data['Author']) {
|
|
item.creators.push(Zotero.Utilities.cleanAuthor(data['Author'], "author"));
|
|
} else if (data['Authors']) {
|
|
var authors = data['Authors'].split(",");
|
|
for each (var a in authors) {
|
|
item.creators.push(Zotero.Utilities.cleanAuthor(a, "author"));
|
|
}
|
|
}
|
|
if (data['Keywords']) {
|
|
var kws = data['Keywords'].split(/\n/);
|
|
for each (var kw in kws) {
|
|
if (kw != "") item.tags.push(kw);
|
|
}
|
|
}
|
|
var voliss = data['Source'].replace(item.title, "");
|
|
if (item.creators.length > 1) {
|
|
voliss = voliss.replace(data['Authors'], "");
|
|
} else if (item.creators.length == 1) {
|
|
voliss = voliss.replace(data['Author'], "");
|
|
}
|
|
Zotero.debug(voliss);
|
|
item.volume = voliss.match(/vol\.\s+(\d+)/)[1];
|
|
item.issue = voliss.match(/no\.\s+(\d+)/)[1];
|
|
item.pages = voliss.match(/pp\.\s+([\d\-]+)/)[1];
|
|
item.date = Zotero.Utilities.trimInternal(voliss.match(/[^,]+$/)[0]);
|
|
item.place = "Ann Arbor, MI";
|
|
item.publisher = "University of Michigan";
|
|
item.abstractNote = data['Abstract'];
|
|
item.url = data['URL'];
|
|
item.attachments = [
|
|
{url:item.url, title:item.title + " Snapshot", mimeType:"text/html"},
|
|
{url:'http://quod.lib.umich.edu/p/phimp/images/' + getID(item.url) + '.pdf', title:"Philosopher's Imprint Full Text PDF", mimeType:"application/pdf"}
|
|
];
|
|
item.complete();
|
|
}, function() {Zotero.done();});
|
|
Zotero.wait();
|
|
} |