This repository has been archived by the owner on Jan 3, 2020. It is now read-only.
forked from zotero/translators
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathEngineering Village.js
110 lines (101 loc) · 3.05 KB
/
Engineering Village.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
{
"translatorID": "1f40baef-eece-43e4-a1cc-27d20c0ce086",
"label": "Engineering Village",
"creator": "Ben Parr, Sebastian Karcher",
"target": "^https?://(?:www\\.)?engineeringvillage(2)?\\.(?:com|org)",
"minVersion": "3.0",
"maxVersion": "",
"priority": 100,
"inRepository": true,
"translatorType": 4,
"browserSupport": "gcsb",
"lastUpdated": "2014-02-02 07:20:12"
}
function detectWeb(doc, url)
{
var xpath='//span/a[@id="downloadlink"][@href]';
if(doc.evaluate(xpath, doc,
null,XPathResult.ANY_TYPE,null).iterateNext())
{ return "journalArticle";}
xpath='//div[@id="resultslist"]';
if(doc.evaluate(xpath, doc,
null,XPathResult.ANY_TYPE,null).iterateNext())
{ return "multiple";}
return null;
}
function parseRIS(uris)
{
Zotero.Utilities.HTTP.doGet(uris, function(text){
//Z.debug(text)
// load translator for RIS
var translator = Zotero.loadTranslator("import");
translator.setTranslator("32d59d2d-b65a-4da4-b0a3-bdd3cfb979e7");
translator.setString(text);
translator.translate();
Zotero.done();
}, function() {});
Zotero.wait();
}
//creates the link to the RIS file
function createURL(EISESSION,docidlist,curURL)
{
var milli = (new Date()).getTime();
var temp = curURL.split('/');
var url = '/delivery/download/submit.url?downloadformat=ris&displayformat=abstract×tamp=' + milli + docidlist + '&handlelist=1'
//Z.debug("risurl: " + url)
return url;
}
function doWeb(doc, url) {
var url;
var xpath='//span/a[@id="downloadlink"][@href]';
if(doc.evaluate(xpath, doc,
null,XPathResult.ANY_TYPE,null).iterateNext())
{
xpath='//span/a[@id="downloadlink"]/@href';
var temp=ZU.xpathText(doc, xpath);
Z.debug(temp)
var docidlist=temp.match(/\&docidlist=[^&]+/)[0];
//Session ID can have a question mark or an ampersand at beginning. If the latter,
//change to question mark
var EISESSION;
if (temp.match(/(\?|\&)EISESSION=[^&]+/)) var EISESSION=temp.match(/(\?|\&)EISESSION=[^&]+/)[0].replace(/^\&/, "?");
url=createURL(EISESSION,docidlist,doc.location.href);
parseRIS(url);
}
else
{
xpath='//input[@NAME="sessionid"]';
var EISESSION=ZU.xpathText(doc, xpath);
EISESSION = "?EISESSION=" + EISESSION;
xpath='//div[@class="result"]|//div[@class="result odd"]';
var articles = new Array();
var items=new Object();
var rows=doc.evaluate(xpath, doc, null,XPathResult.ANY_TYPE,null);
var xpath2='//p[@class="resulttitle"]';
xpath2=doc.evaluate(xpath2, doc, null,XPathResult.ANY_TYPE,null);
var title;
var docidlist;
while(row=rows.iterateNext())
{
docidlist=ZU.xpathText(row, './div/input[@type="checkbox"]/@docid')
docidlist= "&docidlist="+ docidlist;
url=createURL(EISESSION,docidlist,doc.location.href);
title=xpath2.iterateNext();
title=title.textContent;
items[url]=title;
}
Zotero.selectItems(items, function (items) {
if (!items) {
return true;
}
for (var i in items) {
articles.push(i);
}
parseRIS(articles, function () {
Zotero.done();
});
});
}
}/** BEGIN TEST CASES **/
var testCases = []
/** END TEST CASES **/