source: main/tags/stable4flax/greenstone3/web/interfaces/default/js/gsajaxapi.js@ 28843

Last change on this file since 28843 was 24771, checked in by papitha, 13 years ago

Changes to JS

File size: 9.7 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.buildserverURL = function()
40 {
41 return this.apiURL("build-server.pl");
42 }
43
44 this.explodeserverURL = function()
45 {
46 return this.apiURL("explode-server.pl");
47 }
48
49 this.myspaceserverURL = function()
50 {
51 return this.apiURL("myspace-server.pl");
52 }
53
54
55 this.urlGetAsync = function(url,callback)
56 {
57 var xmlHttp;
58 try {
59 // Firefox, Opera 8.0+, Safari
60 xmlHttp=new XMLHttpRequest();
61 }
62 catch (e) {
63 // Internet Explorer
64 try {
65 xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
66 }
67 catch (e) {
68 try {
69 xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
70 }
71 catch (e) {
72 alert("Your browser does not support AJAX!");
73 return false;
74 }
75 }
76 }
77
78 var typeof_callback = typeof(callback);
79 if ((typeof_callback == "string") || (typeof_callback == "number") || (typeof_callback == "boolean")) {
80 var locid = callback;
81
82 xmlHttp.onreadystatechange=function() {
83 if(xmlHttp.readyState==4) {
84 if (locelem != null) {
85 var locelem = document.getElementById(locid);
86
87 locelem.innerHTML = xmlHttp.responseText;
88 }
89 }
90 }
91 }
92 else if (typeof_callback == "function") {
93 xmlHttp.onreadystatechange=function() {
94 if(xmlHttp.readyState==4) {
95 callback(xmlHttp);
96 }
97 }
98 }
99 else {
100 alert("Unrecognized type of callback value: " + typeof_callback);
101 }
102
103 xmlHttp.open("GET",url,true);
104 xmlHttp.send(null);
105 }
106
107
108 this.urlGetSync = function(url)
109 {
110 // alert("url = " + url);
111
112 var xmlHttp;
113 try {
114 // Firefox, Opera 8.0+, Safari
115 xmlHttp=new XMLHttpRequest();
116 }
117 catch (e) {
118 // Internet Explorer
119 try {
120 xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
121 }
122 catch (e) {
123 try {
124 xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
125 }
126 catch (e) {
127 alert("Your browser does not support AJAX!");
128 return false;
129 }
130 }
131 }
132
133 xmlHttp.open("GET",url,false);
134 xmlHttp.send(null);
135
136 // alert("response = '" + xmlHttp.responseText + "'");
137
138 return xmlHttp.responseText;
139 }
140
141
142
143
144
145 this.setLiveMetadata = function(id,metaname,metavalue)
146 {
147 var mdserver = this.metadataserverURL();
148
149 var url = mdserver + "?a=set-live-metadata";
150 url += "&c="+collect_;
151 url += "&d="+id;
152 url += "&metaname=" + metaname;
153 url += "&metavalue=" + metavalue;
154
155 this.urlGetSync(url);
156 }
157
158 this._setMetadata = function(mode,docid,metaname,metapos,metavalue,metamode)
159 {
160 var mdserver = this.metadataserverURL();
161
162 var params = "a=set" + mode + "-metadata";
163 params += "&c="+collect_;
164 params += "&d="+docid;
165 params += "&metaname=" + metaname;
166 if (metapos!=null) {
167 params += "&metapos=" + metapos;
168 }
169 params += "&metavalue=" + metavalue;
170 if (metamode!=null) {
171 params += "&metamode=" + metamode;
172 }
173
174 this.urlGetSync(mdserver + "?" + params);
175 //this.urlPostSync(mdserver,params);
176 }
177
178
179 this._setDocumentArrayMetadata = function(mode,docArray,metamode)
180 {
181 docArrayJSON = JSON.stringify(docArray);
182
183 var mdserver = this.metadataserverURL();
184
185 var params = "a=set" + mode + "-metadata-array";
186 params += "&c="+collect_;
187 params += "&json="+docArrayJSON;
188
189 if (metamode!=null) {
190 params += "&metamode=" + metamode;
191 }
192
193 this.urlGetSync(mdserver + "?" + params);
194
195 }
196
197
198 this.setDocumentMetadata = function(docid,metaname,metapos,metavalue)
199 {
200 // Allow for three param call to function, where metapos is missed out
201 if (metavalue==null) {
202 // 4 param case
203 metavalue = metapos;
204 metapos = null;
205 }
206
207 this._setMetadata("",docid,metaname,metapos,metavalue);
208 this._setMetadata("-archives",docid,metaname,metapos,metavalue,"override");
209
210 }
211
212 this.setDocumentArrayMetadata = function(docArray,metamode)
213 {
214 //showDialog('Greenstone Javascript API','This sequence of changes has been commited into the system.','success', 2);
215
216 this._setDocumentArrayMetadata("",docArray,metamode);
217 this._setDocumentArrayMetadata("-archives",docArray,metamode);
218 }
219
220 this.setNewDocumentMetadata = function(docid,metaname,metavalue)
221 {
222 this._setMetadata("",docid,metaname,null,metavalue);
223 this._setMetadata("-archives",docid,metaname,null,metavalue,"accumulate");
224 }
225
226 this.setImportMetadata = function(docid,metaname,metapos,metavalue)
227 {
228 this._setMetadata("-import",docid,metaname,metapos,metavalue,"override");
229 }
230
231
232 this.explodeDocument = function(docid)
233 {
234 var exserver = this.explodeserverURL();
235
236 var url = exserver + "?a=explode-document";
237 url += "&c="+collect_;
238 url += "&d="+docid;
239
240 this.urlGetSync(url);
241 }
242
243 this.deleteDocument = function(docid,onlyAdd)
244 {
245 var exserver = this.explodeserverURL();
246
247 var url = exserver + "?a=delete-document";
248 url += "&c="+collect_;
249 params += "&onlyadd="+onlyAdd;
250 url += "&d="+docid;
251
252 this.urlGetSync(url);
253 }
254
255 this.deleteDocumentArray = function(docArray,onlyAdd)
256 {
257 docArrayJSON = JSON.stringify(docArray);
258
259 var exserver = this.explodeserverURL();
260
261 var params = "a=delete-document-array";
262 params += "&c="+collect_;
263 params += "&onlyadd="+onlyAdd;
264 params += "&json="+docArrayJSON;
265
266 this.urlGetSync(exserver + "?" + params);
267
268 }
269
270
271 this.cloneDocument = function(docid,toCollect)
272 {
273 var msserver = this.myspaceserverURL();
274
275 var url = msserver + "?a=clone";
276 url += "&c="+collect_;
277 url += "&d="+docid;
278 url += "&toCollect="+toCollect;
279
280 this.urlGetSync(url);
281 }
282
283 // consider name change to reindexDocument
284 this.documentReindex = function(docid)
285 {
286 var mdserver = this.metadataserverURL();
287
288 var url = mdserver + "?a=reindex-document";
289 url += "&c="+collect_;
290 url += "&d="+docid;
291
292 this.urlGetSync(url);
293 }
294
295
296 this.reindexCollection = function(mode,callback)
297 {
298 if (mode==null) {
299 mode = "incremental";
300 }
301
302 var idserver = this.indexserverURL();
303
304 var url = idserver + "?a=" + mode + "-rebuild";
305 url += "&c="+collect_;
306
307 this.urlGetAsync(url,callback);
308 }
309
310
311 this.buildByManifestGeneral = function(hashargs)
312 {
313 var idserver = this.buildserverURL();
314
315 var url = idserver + "?a=build-by-manifest";
316 url += "&c="+collect_;
317
318 if (hashargs["index-files"] != undefined) {
319 url += "&index-files=" + JSON.stringify(hashargs["index-files"]);
320 }
321
322 if (hashargs["reindex-files"] != undefined) {
323 url += "&reindex-files=" + JSON.stringify(hashargs["reindex-files"]);
324 }
325 if (hashargs["delete-OIDs"] != undefined) {
326 url += "&delete-OIDs=" + JSON.stringify(hashargs["delete-OIDs"]);
327 }
328
329 this.urlGetSync(url);
330 }
331
332 this.indexByManifest = function(docidArray)
333 {
334 var hashargs = {};
335 hashargs["index-files"] = docidArray;
336 this.buildByManifestGeneral(hashargs);
337 }
338
339 this.reindexByManifest = function(docidArray)
340 {
341 var hashargs = {};
342 hashargs["reindex-files"] = docidArray;
343 this.buildByManifestGeneral(hashargs);
344 }
345 this.deleteByManifest = function(docidArray)
346 {
347 var hashargs = {};
348 hashargs["delete-OIDs"] = docidArray;
349 this.buildByManifestGeneral(hashargs);
350 }
351
352 this.getLiveMetadata = function(id,metaname)
353 {
354 var mdserver = this.metadataserverURL();
355
356 var url = mdserver + "?a=get-live-metadata";
357 url += "&c="+collect_;
358 url += "&d="+id;
359 url += "&metaname=" + metaname;
360
361 var metavalue = this.urlGetSync(url);
362
363 return metavalue;
364 }
365
366 this.getDocumentMetadata = function(docoid,metaname,metapos)
367 {
368 var mdserver = this.metadataserverURL();
369
370 var url = mdserver + "?a=get-metadata";
371 url += "&c="+collect_;
372 url += "&d="+docoid;
373 url += "&metaname=" + metaname;
374 if (metapos!=null) {
375 url += "&metapos=" + metapos;
376 }
377
378 return this.urlGetSync(url);
379 }
380
381 this.removeLiveMetadata = function(id,metaname)
382 {
383 var mdserver = this.metadataserverURL();
384
385 var url = mdserver + "?a=remove-live-metadata";
386 url += "&c="+collect_;
387 url += "&d="+id;
388 url += "&metaname=" + metaname;
389
390 this.urlGetSync(url);
391 }
392
393 this.removeDocumentMetadata = function(docid,metaname,metapos)
394 {
395 var mdserver = this.metadataserverURL();
396
397 var url = mdserver + "?a=remove-metadata";
398 url += "&c="+collect_;
399 url += "&d="+docid;
400 url += "&metaname=" + metaname;
401 if (metapos!=null) {
402 url += "&metapos=" + metapos;
403 }
404
405 this.urlGetSync(url);
406 }
407
408 return true;
409
410}
Note: See TracBrowser for help on using the repository browser.