commit 10e5766d8f83d5fe5df5ceb022aadb329585d96f
parent b3aa705bfd3795aefce819c51c8a8225ebccfed7
Author: Avram Lyon <ajlyon@gmail.com>
Date: Tue, 24 Aug 2010 20:40:17 +0000
Fixed ERIC translator
Diffstat:
| M | translators/ERIC.js | | | 88 | ++++++++++++++++++++++++++++++++++++++++++++++++++----------------------------- |
1 file changed, 56 insertions(+), 32 deletions(-)
diff --git a/translators/ERIC.js b/translators/ERIC.js
@@ -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();
}
-}
-\ No newline at end of file
+}