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

Last change on this file since 27257 was 27257, checked in by ak19, 11 years ago

Add User Comment form. Allows adding username, timestamp and comment to a document. Need to still display the just-added comment when the ajax reloads the page. Also should not display the form on a non-doc page, like when browsing a classifier.

File size: 11.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.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 this.setLiveMetadata = function(id,metaname,metavalue)
142 {
143 var mdserver = this.metadataserverURL();
144
145 var url = mdserver + "?a=set-live-metadata";
146 url += "&c="+collect_;
147 url += "&d="+id;
148 url += "&metaname=" + metaname;
149 url += "&metavalue=" + metavalue;
150
151 this.urlGetSync(url);
152 }
153
154 // New
155 // The where parameter can be specified as one or more of: import, archives, index, live
156 // separated by |. If null, it is assumed to be index which is the original default
157 // behaviour of calling set-metadata). E.g. where=import|archives|index
158 this.setMetadata = function(docid,metaname,metapos,metavalue,metamode,where)
159 {
160 var mdserver = this.metadataserverURL();
161
162 var params = "a=set-metadata";
163 if(where != null) {
164 params += "&where=" + where; // if where not specified, meta-server will default to setting index meta
165 //} else {
166 // params += "&where=import|archives|index";
167 }
168 params += "&c="+collect_;
169 params += "&d="+docid;
170 params += "&metaname=" + metaname;
171 if (metapos!=null) {
172 params += "&metapos=" + metapos;
173 }
174 params += "&metavalue=" + metavalue;
175 if (metamode!=null) {
176 params += "&metamode=" + metamode;
177 }
178
179 this.urlGetSync(mdserver + "?" + params);
180 //this.urlPostSync(mdserver,params);
181 }
182
183 // New
184 // The where parameter can be specified as one or more of: import, archives, index, live
185 // separated by |. If null, it is assumed to be index which is the original default
186 // behaviour of calling set-metadata-array). E.g. where=import|archives|index
187 this.setMetadataArray = function(docArray,metamode,where)
188 {
189 docArrayJSON = JSON.stringify(docArray);
190
191 var mdserver = this.metadataserverURL();
192
193 var params = "a=set-metadata-array";
194 if(where != null) {
195 params += "&where=" + where; // if where not specified, meta-server will default to setting index meta
196 //} else {
197 // params += "&where=import|archives|index";
198 }
199 params += "&c="+collect_;
200 params += "&json="+docArrayJSON;
201
202 if (metamode!=null) {
203 params += "&metamode=" + metamode;
204 }
205
206 this.urlGetSync(mdserver + "?" + params);
207
208 }
209
210 this._setMetadata = function(mode,docid,metaname,metapos,metavalue,metamode)
211 {
212 var mdserver = this.metadataserverURL();
213
214 var params = "a=set" + mode + "-metadata";
215 params += "&c="+collect_;
216 params += "&d="+docid;
217 params += "&metaname=" + metaname;
218 if (metapos!=null) {
219 params += "&metapos=" + metapos;
220 }
221 params += "&metavalue=" + metavalue;
222 if (metamode!=null) {
223 params += "&metamode=" + metamode;
224 }
225
226 this.urlGetSync(mdserver + "?" + params);
227 //this.urlPostSync(mdserver,params);
228 }
229
230
231 this._setDocumentArrayMetadata = function(mode,docArray,metamode)
232 {
233 docArrayJSON = JSON.stringify(docArray);
234
235 var mdserver = this.metadataserverURL();
236
237 var params = "a=set" + mode + "-metadata-array";
238 params += "&c="+collect_;
239 params += "&json="+docArrayJSON;
240
241 if (metamode!=null) {
242 params += "&metamode=" + metamode;
243 }
244
245 this.urlGetSync(mdserver + "?" + params);
246
247 }
248
249
250 this.setDocumentMetadata = function(docid,metaname,metapos,metavalue)
251 {
252 // Allow for three param call to function, where metapos is missed out
253 if (metavalue==null) {
254 // 4 param case
255 metavalue = metapos;
256 metapos = null;
257 }
258
259 this._setMetadata("",docid,metaname,metapos,metavalue);
260 this._setMetadata("-archives",docid,metaname,metapos,metavalue,"override");
261
262 }
263
264 this.setDocumentArrayMetadata = function(docArray,metamode)
265 {
266 //showDialog('Greenstone Javascript API','This sequence of changes has been commited into the system.','success', 2);
267
268 this._setDocumentArrayMetadata("",docArray,metamode);
269 this._setDocumentArrayMetadata("-archives",docArray,metamode);
270 }
271
272 this.setNewDocumentMetadata = function(docid,metaname,metavalue)
273 {
274 this._setMetadata("",docid,metaname,null,metavalue);
275 this._setMetadata("-archives",docid,metaname,null,metavalue,"accumulate");
276 }
277
278 this.setImportMetadata = function(docid,metaname,metapos,metavalue)
279 {
280 this._setMetadata("-import",docid,metaname,metapos,metavalue,"override");
281 }
282
283
284 this.explodeDocument = function(docid)
285 {
286 var exserver = this.explodeserverURL();
287
288 var url = exserver + "?a=explode-document";
289 url += "&c="+collect_;
290 url += "&d="+docid;
291
292 this.urlGetSync(url);
293 }
294
295 this.deleteDocument = function(docid,onlyAdd)
296 {
297 var exserver = this.explodeserverURL();
298
299 var url = exserver + "?a=delete-document";
300 url += "&c="+collect_;
301 params += "&onlyadd="+onlyAdd;
302 url += "&d="+docid;
303
304 this.urlGetSync(url);
305 }
306
307 this.deleteDocumentArray = function(docArray,onlyAdd)
308 {
309 docArrayJSON = JSON.stringify(docArray);
310
311 var exserver = this.explodeserverURL();
312
313 var params = "a=delete-document-array";
314 params += "&c="+collect_;
315 params += "&onlyadd="+onlyAdd;
316 params += "&json="+docArrayJSON;
317
318 this.urlGetSync(exserver + "?" + params);
319
320 }
321
322
323 this.cloneDocument = function(docid,toCollect)
324 {
325 var msserver = this.myspaceserverURL();
326
327 var url = msserver + "?a=clone";
328 url += "&c="+collect_;
329 url += "&d="+docid;
330 url += "&toCollect="+toCollect;
331
332 this.urlGetSync(url);
333 }
334
335 // consider name change to reindexDocument
336 this.documentReindex = function(docid)
337 {
338 var mdserver = this.metadataserverURL();
339
340 var url = mdserver + "?a=reindex-document";
341 url += "&c="+collect_;
342 url += "&d="+docid;
343
344 this.urlGetSync(url);
345 }
346
347
348 this.reindexCollection = function(mode,callback)
349 {
350 if (mode==null) {
351 mode = "incremental";
352 }
353
354 var idserver = this.indexserverURL();
355
356 var url = idserver + "?a=" + mode + "-rebuild";
357 url += "&c="+collect_;
358
359 this.urlGetAsync(url,callback);
360 }
361
362
363 this.buildByManifestGeneral = function(hashargs)
364 {
365 var idserver = this.buildserverURL();
366
367 var url = idserver + "?a=build-by-manifest";
368 url += "&c="+collect_;
369
370 if (hashargs["index-files"] != undefined) {
371 url += "&index-files=" + JSON.stringify(hashargs["index-files"]);
372 }
373
374 if (hashargs["reindex-files"] != undefined) {
375 url += "&reindex-files=" + JSON.stringify(hashargs["reindex-files"]);
376 }
377 if (hashargs["delete-OIDs"] != undefined) {
378 url += "&delete-OIDs=" + JSON.stringify(hashargs["delete-OIDs"]);
379 }
380
381 this.urlGetSync(url);
382 }
383
384 this.indexByManifest = function(docidArray)
385 {
386 var hashargs = {};
387 hashargs["index-files"] = docidArray;
388 this.buildByManifestGeneral(hashargs);
389 }
390
391 this.reindexByManifest = function(docidArray)
392 {
393 var hashargs = {};
394 hashargs["reindex-files"] = docidArray;
395 this.buildByManifestGeneral(hashargs);
396 }
397 this.deleteByManifest = function(docidArray)
398 {
399 var hashargs = {};
400 hashargs["delete-OIDs"] = docidArray;
401 this.buildByManifestGeneral(hashargs);
402 }
403
404 this.getLiveMetadata = function(id,metaname)
405 {
406 var mdserver = this.metadataserverURL();
407
408 var url = mdserver + "?a=get-live-metadata";
409 url += "&c="+collect_;
410 url += "&d="+id;
411 url += "&metaname=" + metaname;
412
413 var metavalue = this.urlGetSync(url);
414
415 return metavalue;
416 }
417
418 this.getDocumentMetadata = function(docoid,metaname,metapos)
419 {
420 var mdserver = this.metadataserverURL();
421
422 var url = mdserver + "?a=get-metadata";
423 url += "&c="+collect_;
424 url += "&d="+docoid;
425 url += "&metaname=" + metaname;
426 if (metapos!=null) {
427 url += "&metapos=" + metapos;
428 }
429
430 return this.urlGetSync(url);
431 }
432
433 this.removeLiveMetadata = function(id,metaname)
434 {
435 var mdserver = this.metadataserverURL();
436
437 var url = mdserver + "?a=remove-live-metadata";
438 url += "&c="+collect_;
439 url += "&d="+id;
440 url += "&metaname=" + metaname;
441
442 this.urlGetSync(url);
443 }
444
445 this.removeDocumentMetadata = function(docid,metaname,metapos)
446 {
447 var mdserver = this.metadataserverURL();
448
449 var url = mdserver + "?a=remove-metadata";
450 url += "&c="+collect_;
451 url += "&d="+docid;
452 url += "&metaname=" + metaname;
453 if (metapos!=null) {
454 url += "&metapos=" + metapos;
455 }
456
457 this.urlGetSync(url);
458 }
459
460 return true;
461
462}
Note: See TracBrowser for help on using the repository browser.