Fixed ERIC translator
This commit is contained in:
parent
b3aa705bfd
commit
10e5766d8f
1 changed files with 56 additions and 31 deletions
|
@ -1,14 +1,14 @@
|
|||
{
|
||||
"translatorID":"e4660e05-a935-43ec-8eec-df0347362e4c",
|
||||
"translatorType":4,
|
||||
"label":"ERIC",
|
||||
"creator":"Ramesh Srigiriraju",
|
||||
"target":"^http://(?:www\\.)?eric\\.ed\\.gov/",
|
||||
"minVersion":"1.0.0b4.r1",
|
||||
"maxVersion":"",
|
||||
"priority":100,
|
||||
"inRepository":true,
|
||||
"lastUpdated":"2008-12-15 05:30:00"
|
||||
"translatorID":"e4660e05-a935-43ec-8eec-df0347362e4c",
|
||||
"label":"ERIC",
|
||||
"creator":"Ramesh Srigiriraju, Avram Lyon",
|
||||
"target":"^http://(?:www\\.)?eric\\.ed\\.gov/",
|
||||
"minVersion":"1.0.0b4.r1",
|
||||
"maxVersion":"",
|
||||
"priority":100,
|
||||
"inRepository":"1",
|
||||
"translatorType":4,
|
||||
"lastUpdated":"2010-08-24 07:23:41"
|
||||
}
|
||||
|
||||
function detectWeb(doc, url) {
|
||||
|
@ -16,13 +16,21 @@ function detectWeb(doc, url) {
|
|||
var nsResolver=namespace?function(prefix) {
|
||||
return (prefix=="x")?namespace:null;
|
||||
}:null;
|
||||
var searchpath='//form[@name="searchResultsForm"][@id="searchResultsForm"]';
|
||||
// Search results
|
||||
var searchpath='//div[@id="searchFaceted"]//td[@class="resultHeader"]';
|
||||
if(doc.evaluate(searchpath, doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext())
|
||||
return "multiple";
|
||||
//var singpath='//tr/td[@class="primaryHeader"][contains(text(), "Record Details")]';
|
||||
var singpath='contains(//div[@id="titleBarBlue"]/text(), "Record Details")';
|
||||
if(doc.evaluate(singpath, doc, nsResolver, XPathResult.ANY_TYPE, null).booleanValue) {
|
||||
var typepath='//tr[td/span/strong/text()="Pub Types:"]/td[2]/text()';
|
||||
// Clipboard
|
||||
if(url.match(/ERICWebPortal\/search\/clipboard\.jsp/))
|
||||
return "multiple";
|
||||
// folder
|
||||
if(url.match(/ERICWebPortal\/MyERIC\/clipboard\/viewFolder\.jsp\?folderIndex/))
|
||||
return "multiple";
|
||||
// Individual record
|
||||
var singpath='//div[@id="titleBarBlue"]';
|
||||
var res = doc.evaluate(singpath, doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext();
|
||||
if(res && res.textContent.indexOf("Record Details") !== -1) {
|
||||
var typepath='//tr[td/span/a/strong/text()="Pub Types:"]/td[2]/text()';
|
||||
var typestr=doc.evaluate(typepath, doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext().nodeValue;
|
||||
var typereg=new RegExp("([^;/\-]+)");
|
||||
var typearr=typereg.exec(typestr);
|
||||
|
@ -52,22 +60,38 @@ function doWeb(doc, url) {
|
|||
var nsResolver=namespace?function(prefix) {
|
||||
return (prefix=="x")?namespace:null;
|
||||
}:null;
|
||||
var searchpath='//form[@name="searchResultsForm"][@id="searchResultsForm"]';
|
||||
if(doc.evaluate(searchpath, doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext()) {
|
||||
if(detectWeb(doc, url) == "multiple") {
|
||||
var string="http://eric.ed.gov/ERICWebPortal/custom/portlets/clipboard/performExport.jsp";
|
||||
var idpath='//a[img]/@id';
|
||||
var ids=doc.evaluate(idpath, doc, nsResolver, XPathResult.ANY_TYPE, null);
|
||||
var items=new Array();
|
||||
var titlpath='//tr[1]/td[1]/p/a';
|
||||
var titlerows=doc.evaluate(titlpath, doc, nsResolver, XPathResult.ANY_TYPE, null);
|
||||
var id;
|
||||
while(id=ids.iterateNext())
|
||||
items[id.nodeValue]=Zotero.Utilities.cleanTags(Zotero.Utilities.cleanString(titlerows.iterateNext().textContent));
|
||||
if(url.match(/ERICWebPortal\/search\/clipboard\.jsp/)
|
||||
|| url.match(/ERICWebPortal\/MyERIC\/clipboard\/viewFolder\.jsp\?folderIndex/)) {
|
||||
// We have a clipboard or folder page; structure is the same
|
||||
var rowpath='//table[@class="tblDataTable"]/tbody/tr[td]';
|
||||
var rows = doc.evaluate(rowpath, doc, nsResolver, XPathResult.ANY_TYPE, null);
|
||||
var row, id, title;
|
||||
while(row = rows.iterateNext()) {
|
||||
title = doc.evaluate('./td[2]/a', row, nsResolver, XPathResult.ANY_TYPE, null).iterateNext().textContent;
|
||||
id = doc.evaluate('./td[6]', row, nsResolver, XPathResult.ANY_TYPE, null).iterateNext().textContent;
|
||||
Zotero.debug(title + id);
|
||||
items[id] = Zotero.Utilities.cleanTags(Zotero.Utilities.cleanString(title));
|
||||
}
|
||||
} else {
|
||||
// We have normal search results
|
||||
var idpath='//a[img[@width="64"]]';
|
||||
var ids=doc.evaluate(idpath, doc, nsResolver, XPathResult.ANY_TYPE, null);
|
||||
var titlpath='//table[@class="tblSearchResult"]//td[@class="resultHeader"][1]/p/a';
|
||||
var titlerows=doc.evaluate(titlpath, doc, nsResolver, XPathResult.ANY_TYPE, null);
|
||||
var id;
|
||||
while(id=ids.iterateNext())
|
||||
items[id.id]=Zotero.Utilities.cleanTags(Zotero.Utilities.cleanString(titlerows.iterateNext().textContent));
|
||||
}
|
||||
items=Zotero.selectItems(items);
|
||||
var string="http://eric.ed.gov/ERICWebPortal/custom/portlets/clipboard/performExport.jsp?";
|
||||
if (!items) return false;
|
||||
var string="http://eric.ed.gov/ERICWebPortal/MyERIC/clipboard/performExport.jsp?";
|
||||
for(var ids in items)
|
||||
string+="accno="+ids+"&";
|
||||
string+="texttype=endnote&citationtype=brief&Download.x=86&Download.y=14";
|
||||
Zotero.debug(string);
|
||||
Zotero.Utilities.HTTP.doGet(string, function(text) {
|
||||
var trans=Zotero.loadTranslator("import");
|
||||
trans.setTranslator("32d59d2d-b65a-4da4-b0a3-bdd3cfb979e7");
|
||||
|
@ -84,13 +108,14 @@ function doWeb(doc, url) {
|
|||
});
|
||||
Zotero.wait();
|
||||
}
|
||||
var singpath='contains(//div[@id="titleBarBlue"]/text(), "Record Details")';
|
||||
if(doc.evaluate(singpath, doc, nsResolver, XPathResult.ANY_TYPE, null).booleanValue) {
|
||||
var idpath='//input[@type="hidden"][@name="accno"]/@value';
|
||||
var type = detectWeb(doc, url);
|
||||
if(type && type != "multiple") {
|
||||
var idpath='//tr[/td[1]/span/a/strong/contains("ERIC #")]/td[2]';
|
||||
var idpath2='//meta[@name="eric #"]/@content';
|
||||
var id = url.match(/accno=([^&]+)/)[1];
|
||||
var string="http://eric.ed.gov/ERICWebPortal/custom/portlets/clipboard/performExport.jsp?accno=";
|
||||
string+= id+"&texttype=endnote&citationtype=brief&Download.x=86&Download.y=14";
|
||||
var string="http://eric.ed.gov/ERICWebPortal/MyERIC/clipboard/performExport.jsp?";
|
||||
string+= "accno="+ id+"&texttype=endnote&citationtype=brief&Download.x=86&Download.y=14";
|
||||
Zotero.debug(string);
|
||||
Zotero.Utilities.HTTP.doGet(string, function(text) {
|
||||
var trans=Zotero.loadTranslator("import");
|
||||
trans.setTranslator("32d59d2d-b65a-4da4-b0a3-bdd3cfb979e7");
|
||||
|
@ -107,4 +132,4 @@ function doWeb(doc, url) {
|
|||
});
|
||||
Zotero.wait();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue