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

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

Javascript that supports seamless web editing (seaweed) and saving metadata directly to Greenstone (gsajaxapi) through Ajax calls.

File size: 5.7 KB
Line 
1
2function GSAjaxAPI(gwcgi,collect)
3{
4 var gwcgi_ = gwcgi;
5 var collect_ = collect;
6
7 this.apiURL = function(apiProg)
8 {
9 //get the location of the cgi program
10 splitpos = gwcgi_.lastIndexOf("/");
11
12 var mdserver;
13 if (splitpos >= 0) {
14 mdserver = gwcgi.substring(0,(splitpos+1)) + apiProg;
15 }
16 else {
17 mdserver = apiProg;
18 }
19
20 return mdserver;
21 }
22
23 this.metadataserverURL = function()
24 {
25 return this.apiURL("metadata-server.pl");
26 }
27
28
29 this.urlGetAsync = function(url,locid)
30 {
31 var xmlHttp;
32 try {
33 // Firefox, Opera 8.0+, Safari
34 xmlHttp=new XMLHttpRequest();
35 }
36 catch (e) {
37 // Internet Explorer
38 try {
39 xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
40 }
41 catch (e) {
42 try {
43 xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
44 }
45 catch (e) {
46 alert("Your browser does not support AJAX!");
47 return false;
48 }
49 }
50 }
51
52 xmlHttp.onreadystatechange=function() {
53 if(xmlHttp.readyState==4) {
54 if (locelem != null) {
55 var locelem = document.getElementById(locid);
56
57 locelem.innerHTML = xmlHttp.responseText;
58 }
59 }
60 }
61
62 xmlHttp.open("GET",url,true);
63 xmlHttp.send(null);
64 }
65
66
67 this.urlGetSync = function(url)
68 {
69 // alert("url = " + url);
70
71 var xmlHttp;
72 try {
73 // Firefox, Opera 8.0+, Safari
74 xmlHttp=new XMLHttpRequest();
75 }
76 catch (e) {
77 // Internet Explorer
78 try {
79 xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
80 }
81 catch (e) {
82 try {
83 xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
84 }
85 catch (e) {
86 alert("Your browser does not support AJAX!");
87 return false;
88 }
89 }
90 }
91
92 xmlHttp.open("GET",url,false);
93 xmlHttp.send(null);
94
95 // alert("response = '" + xmlHttp.responseText + "'");
96
97 return xmlHttp.responseText;
98 }
99
100
101 this.setLiveMetadata = function(id,metaname,metavalue)
102 {
103 var mdserver = this.metadataserverURL();
104
105 var url = mdserver + "?a=set-live-metadata";
106 url += "&c="+collect_;
107 url += "&d="+id;
108 url += "&metaname=" + metaname;
109 url += "&metavalue=" + metavalue;
110
111 //alert("url = " + url);
112
113 this.urlGetSync(url);
114 }
115
116 this._setMetadata = function(mode,docid,metaname,metapos,metavalue,metamode)
117 {
118 var mdserver = this.metadataserverURL();
119
120 var url = mdserver + "?a=set" + mode + "-metadata";
121 url += "&c="+collect_;
122 url += "&d="+docid;
123 url += "&metaname=" + metaname;
124 if (metapos!=null) {
125 url += "&metapos=" + metapos;
126 }
127 url += "&metavalue=" + metavalue;
128 if (metamode!=null) {
129 url += "&metamode=" + metamode;
130 }
131 // alert("url = " + url);
132
133 this.urlGetSync(url);
134 }
135
136 this.setDocumentMetadata = function(docid,metaname,metapos,metavalue)
137 {
138 // Allow for three param call to function, where metapos is missed out
139 if (metavalue==null) {
140 // 4 param case
141 metavalue = metapos;
142 metapos = null;
143 }
144
145 this._setMetadata("",docid,metaname,metapos,metavalue);
146 // this._setMetadata("-archives",docid,metaname,metapos,metavalue,"override");
147 }
148
149 this.setNewDocumentMetadata = function(docid,metaname,metavalue)
150 {
151 this._setMetadata("",docid,metaname,null,metavalue);
152 this._setMetadata("-archives",docid,metaname,null,metavalue,"accumulate");
153 }
154
155 this.setImportMetadata = function(docid,metaname,metapos,metavalue)
156 {
157 this._setMetadata("-import",docid,metaname,metapos,metavalue);
158 }
159
160
161 this.documentReindex = function(docid)
162 {
163 var mdserver = this.metadataserverURL();
164
165 var url = mdserver + "?a=reindex-document";
166 url += "&c="+collect_;
167 url += "&d="+docid;
168
169 // alert("url = " + url);
170
171 this.urlGetSync(url);
172 }
173
174 this.getLiveMetadata = function(id,metaname)
175 {
176 var mdserver = this.metadataserverURL();
177
178 var url = mdserver + "?a=get-live-metadata";
179 url += "&c="+collect_;
180 url += "&d="+id;
181 url += "&metaname=" + metaname;
182
183 //alert("url = " + url);
184
185 var metavalue = this.urlGetSync(url);
186
187 //alert("metavalue = " + metavalue);
188
189 return metavalue;
190 }
191
192 this.getDocumentMetadata = function(docoid,metaname,metapos)
193 {
194 var mdserver = this.metadataserverURL();
195
196 var url = mdserver + "?a=get-metadata";
197 url += "&c="+collect_;
198 url += "&d="+docoid;
199 url += "&metaname=" + metaname;
200 if (metapos!=null) {
201 url += "&metapos=" + metapos;
202 }
203
204 return this.urlGetSync(url);
205 }
206
207
208
209
210 this.removeLiveMetadata = function(id,metaname)
211 {
212 var mdserver = this.metadataserverURL();
213
214 var url = mdserver + "?a=remove-live-metadata";
215 url += "&c="+collect_;
216 url += "&d="+id;
217 url += "&metaname=" + metaname;
218
219 //alert("url = " + url);
220
221 this.urlGetSync(url);
222 }
223
224
225 this.removeDocumentMetadata = function(docid,metaname,metapos)
226 {
227 var mdserver = this.metadataserverURL();
228
229 var url = mdserver + "?a=remove-metadata";
230 url += "&c="+collect_;
231 url += "&d="+docid;
232 url += "&metaname=" + metaname;
233 if (metapos!=null) {
234 url += "&metapos=" + metapos;
235 }
236
237 //alert("url = " + url);
238
239 this.urlGetSync(url);
240 }
241
242
243 return true;
244
245}
Note: See TracBrowser for help on using the repository browser.