summaryrefslogtreecommitdiff
path: root/Engineering Village.js
blob: 8499271347fbec3dde552b4c505b7f8b23c2c1ce (plain)
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&timestamp=' + 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 **/