source: main/trunk/greenstone2/web/script/gsajaxapi.js@ 23806

Last change on this file since 23806 was 23806, checked in by davidb, 13 years ago

Addition of two new functions: one that builds a URL to the digital library (including the domain name), and the other for cloning documnts.

File size: 7.5 KB
Line 
1
2function GSAjaxAPI(gwcgi,collect)
3{
4 var gwcgi_ = gwcgi;
5 var collect_ = collect;
6
7
8 this.fullDomainURL = function(localURL)
9 {
10 return window.location.protocol+'//'+window.location.host+localURL;
11 }
12
13 this.apiURL = function(apiProg)
14 {
15 //get the location of the cgi program
16 splitpos = gwcgi_.lastIndexOf("/");
17
18 var mdserver;
19 if (splitpos >= 0) {
20 mdserver = gwcgi.substring(0,(splitpos+1)) + apiProg;
21 }
22 else {
23 mdserver = apiProg;
24 }
25
26 return mdserver;
27 }
28
29 this.metadataserverURL = function()
30 {
31 return this.apiURL("metadata-server.pl");
32 }
33
34 this.indexserverURL = function()
35 {
36 return this.apiURL("index-server.pl");
37 }
38
39 this.explodeserverURL = function()
40 {
41 return this.apiURL("explode-server.pl");
42 }
43
44 this.myspaceserverURL = function()
45 {
46 return this.apiURL("myspace-server.pl");
47 }
48
49
50 this.urlGetAsync = function(url,callback)
51 {
52 var xmlHttp;
53 try {
54 // Firefox, Opera 8.0+, Safari
55 xmlHttp=new XMLHttpRequest();
56 }
57 catch (e) {
58 // Internet Explorer
59 try {
60 xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
61 }
62 catch (e) {
63 try {
64 xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
65 }
66 catch (e) {
67 alert("Your browser does not support AJAX!");
68 return false;
69 }
70 }
71 }
72
73 var typeof_callback = typeof(callback);
74 if ((typeof_callback == "string") || (typeof_callback == "number") || (typeof_callback == "boolean")) {
75 var locid = callback;
76
77 xmlHttp.onreadystatechange=function() {
78 if(xmlHttp.readyState==4) {
79 if (locelem != null) {
80 var locelem = document.getElementById(locid);
81
82 locelem.innerHTML = xmlHttp.responseText;
83 }
84 }
85 }
86 }
87 else if (typeof_callback == "function") {
88 xmlHttp.onreadystatechange=function() {
89 if(xmlHttp.readyState==4) {
90 callback(xmlHttp);
91 }
92 }
93 }
94 else {
95 alert("Unrecognized type of callback value: " + typeof_callback);
96 }
97
98 xmlHttp.open("GET",url,true);
99 xmlHttp.send(null);
100 }
101
102
103 this.urlGetSync = function(url)
104 {
105 // alert("url = " + url);
106
107 var xmlHttp;
108 try {
109 // Firefox, Opera 8.0+, Safari
110 xmlHttp=new XMLHttpRequest();
111 }
112 catch (e) {
113 // Internet Explorer
114 try {
115 xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
116 }
117 catch (e) {
118 try {
119 xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
120 }
121 catch (e) {
122 alert("Your browser does not support AJAX!");
123 return false;
124 }
125 }
126 }
127
128 xmlHttp.open("GET",url,false);
129 xmlHttp.send(null);
130
131 // alert("response = '" + xmlHttp.responseText + "'");
132
133 return xmlHttp.responseText;
134 }
135
136
137
138
139
140 this.setLiveMetadata = function(id,metaname,metavalue)
141 {
142 var mdserver = this.metadataserverURL();
143
144 var url = mdserver + "?a=set-live-metadata";
145 url += "&c="+collect_;
146 url += "&d="+id;
147 url += "&metaname=" + metaname;
148 url += "&metavalue=" + metavalue;
149
150 //alert("url = " + url);
151
152 this.urlGetSync(url);
153 }
154
155 this._setMetadata = function(mode,docid,metaname,metapos,metavalue,metamode)
156 {
157 var mdserver = this.metadataserverURL();
158
159 var params = "a=set" + mode + "-metadata";
160 params += "&c="+collect_;
161 params += "&d="+docid;
162 params += "&metaname=" + metaname;
163 if (metapos!=null) {
164 params += "&metapos=" + metapos;
165 }
166 params += "&metavalue=" + metavalue;
167 if (metamode!=null) {
168 params += "&metamode=" + metamode;
169 }
170 // alert("params = " + params);
171
172 //alert(mdserver + "?" + params);
173
174 this.urlGetSync(mdserver + "?" + params);
175 //this.urlPostSync(mdserver,params);
176 }
177
178 this.setDocumentMetadata = function(docid,metaname,metapos,metavalue)
179 {
180 // Allow for three param call to function, where metapos is missed out
181 if (metavalue==null) {
182 // 4 param case
183 metavalue = metapos;
184 metapos = null;
185 }
186
187 this._setMetadata("",docid,metaname,metapos,metavalue);
188 this._setMetadata("-archives",docid,metaname,metapos,metavalue,"override");
189 }
190
191 this.setNewDocumentMetadata = function(docid,metaname,metavalue)
192 {
193 this._setMetadata("",docid,metaname,null,metavalue);
194 this._setMetadata("-archives",docid,metaname,null,metavalue,"accumulate");
195 }
196
197 this.setImportMetadata = function(docid,metaname,metapos,metavalue)
198 {
199 this._setMetadata("-import",docid,metaname,metapos,metavalue,"override");
200 }
201
202
203 this.explodeDocument = function(docid)
204 {
205 var exserver = this.explodeserverURL();
206
207 var url = exserver + "?a=explode";
208 url += "&c="+collect_;
209 url += "&d="+docid;
210
211 // alert("url = " + url);
212
213 this.urlGetSync(url);
214 }
215
216
217 this.cloneDocument = function(docid,toCollect)
218 {
219 var msserver = this.myspaceserverURL();
220
221 var url = msserver + "?a=clone";
222 url += "&c="+collect_;
223 url += "&d="+docid;
224 url += "&toCollect="+toCollect;
225
226 // alert("url = " + url);
227
228 this.urlGetSync(url);
229 }
230
231 // consider name change to reindexDocument
232 this.documentReindex = function(docid)
233 {
234 var mdserver = this.metadataserverURL();
235
236 var url = mdserver + "?a=reindex-document";
237 url += "&c="+collect_;
238 url += "&d="+docid;
239
240 // alert("url = " + url);
241
242 this.urlGetSync(url);
243 }
244
245
246 this.reindexCollection = function(mode,callback)
247 {
248 if (mode==null) {
249 mode = "incremental";
250 }
251
252 var idserver = this.indexserverURL();
253
254 var url = idserver + "?a=" + mode + "-rebuild";
255 url += "&c="+collect_;
256
257 // alert("url = " + url);
258
259 this.urlGetAsync(url,callback);
260 }
261
262
263 this.getLiveMetadata = function(id,metaname)
264 {
265 var mdserver = this.metadataserverURL();
266
267 var url = mdserver + "?a=get-live-metadata";
268 url += "&c="+collect_;
269 url += "&d="+id;
270 url += "&metaname=" + metaname;
271
272 //alert("url = " + url);
273
274 var metavalue = this.urlGetSync(url);
275
276 //alert("metavalue = " + metavalue);
277
278 return metavalue;
279 }
280
281 this.getDocumentMetadata = function(docoid,metaname,metapos)
282 {
283 var mdserver = this.metadataserverURL();
284
285 var url = mdserver + "?a=get-metadata";
286 url += "&c="+collect_;
287 url += "&d="+docoid;
288 url += "&metaname=" + metaname;
289 if (metapos!=null) {
290 url += "&metapos=" + metapos;
291 }
292
293 return this.urlGetSync(url);
294 }
295
296
297
298
299 this.removeLiveMetadata = function(id,metaname)
300 {
301 var mdserver = this.metadataserverURL();
302
303 var url = mdserver + "?a=remove-live-metadata";
304 url += "&c="+collect_;
305 url += "&d="+id;
306 url += "&metaname=" + metaname;
307
308 //alert("url = " + url);
309
310 this.urlGetSync(url);
311 }
312
313
314 this.removeDocumentMetadata = function(docid,metaname,metapos)
315 {
316 var mdserver = this.metadataserverURL();
317
318 var url = mdserver + "?a=remove-metadata";
319 url += "&c="+collect_;
320 url += "&d="+docid;
321 url += "&metaname=" + metaname;
322 if (metapos!=null) {
323 url += "&metapos=" + metapos;
324 }
325
326 //alert("url = " + url);
327
328 this.urlGetSync(url);
329 }
330
331
332 return true;
333
334}
Note: See TracBrowser for help on using the repository browser.