source: main/trunk/greenstone3/web/interfaces/default/js/berrybasket/berrycheckout.js@ 32300

Last change on this file since 32300 was 32300, checked in by kjdon, 6 years ago

made gs document links restful - collection/demo/document/xxx, instead of a=d&d=xxx&c=demo

File size: 12.5 KB
Line 
1// The default link type in the basket - "document" = greenstone version of the document, "source" = link to source file eg pdf.
2var default_link_type = "document"; // "source" or "document"
3// use the appropriate one of these to override the default for particular collections.
4var source_link_collections = new Array(); // or add list of collections like ["pdfberry", "mgppdemo"];
5var document_link_collections = new Array(); // or add list of collections as above.
6
7var docList = new Array();
8var urlonly = false;
9var mailinfo = new Array();
10mailinfo['address'] = gs.text.berry.to;
11mailinfo['cc'] = gs.text.berry.cc;
12mailinfo['bcc'] = gs.text.berry.bcc;
13mailinfo['subject'] = gs.text.berry.subject;
14var textwin;
15var mailwin;
16
17var options = ['fullview', 'textview', 'email'];
18
19function navigate(e){
20
21 var target = this;
22
23 if ( target.id.toLowerCase() == '' ) {
24 target = target.parentNode;
25 }
26
27 if (target.id.toLowerCase() == 'fullview'){
28 berryCheckoutHighlight( 'fullview' );
29 showFullView();
30 }
31
32 if (target.id.toLowerCase() == 'textview'){
33 berryCheckoutHighlight( 'textview' );
34 showTextView();
35 }
36
37 if (target.id.toLowerCase() == 'email'){
38 berryCheckoutHighlight( 'email' );
39 showEmail();
40 }
41
42 if (target.id.toLowerCase() == 'sendmail'){
43 sendMail();
44 }
45
46 if (target.id.toLowerCase() == 'urlcheck' && urlonly){
47 var urlcheck = YAHOO.util.Dom.get('urlcheck');
48 urlcheck.src = 'interfaces/default/images/check3.gif';
49 var parea =YAHOO.util.Dom.get('pretextarea');
50 urlonly = false;
51
52 this.value=gs.text.berry.url_only;
53
54 populateUrlsAndMetadata(parea);
55 return;
56 }
57
58 if (target.id.toLowerCase() == 'urlcheck' && !urlonly ){
59 var urlcheck = YAHOO.util.Dom.get('urlcheck');
60 urlcheck.src = 'interfaces/default/images/check4.gif';
61 var parea =YAHOO.util.Dom.get('pretextarea');
62 populateUrls(parea);
63 urlonly = true;
64
65 this.value=gs.text.berry.url_and_metadata;
66
67 return;
68 }
69
70 if (target.id.toLowerCase() == 'extextview' ){
71 if (textwin != null){
72 textwin.close();
73 }
74
75 textwin = window.open("","Berry basket plain text view","status=1,width=450,height=300");
76 textwin.moveTo(0,0);
77 var content = document.createElement('div');
78 buildPreview(content);
79 var body = textwin.document.getElementsByTagName('body')[0];
80 body.appendChild(content);
81 var prearea = textwin.document.getElementsByTagName('textarea')[0];
82 prearea.cols = '55';
83 prearea.rows = '15';
84 }
85
86 if (target.id.toLowerCase() == 'exemail' ){
87 if (mailwin != null){
88 mailwin.close();
89 }
90 mailwin = window.open("","Berry basket mail to a friend","status=1,width=450,height=350");
91 mailwin.moveTo(0,0);
92 var content = document.createElement('div');
93 getEmailContent(content);
94 var body = mailwin.document.getElementsByTagName('body')[0];
95 body.appendChild(content);
96 var prearea = mailwin.document.getElementsByTagName('textarea')[0];
97 prearea.cols = '50';
98 prearea.rows = '11';
99 }
100}
101
102function pageLoad(){
103 for(var j = 0; j < options.length; j++)
104 {
105 var ele = document.getElementById(options[j]);
106 YAHOO.util.Event.addListener(ele, 'click', navigate);
107 }
108
109 showFullView();
110}
111
112function showFullView(){
113
114 var content = YAHOO.util.Dom.get('berryBasketContent');
115 var fullview = YAHOO.util.Dom.get('fullview');
116 berryCheckoutPageClear();
117
118 if (docList.length == 0){
119 content.appendChild(document.createTextNode(gs.text.berry.empty_basket));
120 return;
121 }
122
123 var trashbin = document.createElement('div');
124 trashbin.id ='trashbin';
125
126 var binhandle = document.createElement('div');
127 binhandle.id = 'binhandle';
128 binhandle.appendChild(document.createElement('span'));
129 trashbin.appendChild(binhandle);
130 content.appendChild(trashbin);
131
132 var dd = new ygDDOnTop('trashbin');
133 dd.setHandleElId('binhandle');
134 new YAHOO.util.DDTarget('trashbin','trash');
135
136 var dlist = document.createElement('div');
137 content.appendChild(dlist);
138 var ol = document.createElement('ol');
139 dlist.appendChild(ol);
140
141 for (var i in docList){
142 var doc = docList[i];
143 var li = document.createElement('li');
144 var a = document.createElement('a');
145 var img = document.createElement('img');
146 var text ="";
147
148 img.setAttribute("src", "interfaces/default/images/berry.png");
149 img.setAttribute("id", doc['collection']+":"+ doc['name']);
150 img.setAttribute("height", "15px");
151 img.setAttribute("width", "15px");
152 li.appendChild(img);
153
154 a.href=generateURL(doc);
155 a.appendChild(document.createTextNode(doc['title']));
156 if (doc['root_title'] != ""){
157 li.appendChild(document.createTextNode(doc['root_title']+": "));
158 }
159 li.appendChild(a);
160 li.appendChild(document.createTextNode(" ("+doc['collection']+")"));
161 var metadata = "";
162 for (var metaItem in doc && metaItem != 'title'){
163 metadata = "\n"+metaItem+": "+ doc[metaItem]+"\n";
164 }
165 text +=metadata+"\n";
166 li.appendChild(document.createTextNode(text));
167 li.className = 'berrydoc';
168 ol.appendChild(li);
169 new ygDDPlayer(img.id,'trash',docList);
170 }
171
172 /**
173 var extra = document.createElement('div');
174 var textview = document.createElement('span');
175 textview.id = 'extextview';
176 textview.className = 'extralink';
177 textview.appendChild(document.createTextNode("plain text version"));
178 var email = document.createElement('span');
179 email.appendChild(document.createTextNode("email to a friend"));
180 email.id = 'exemail';
181 email.className = 'extralink';
182 extra.appendChild(textview);
183 extra.appendChild(email);
184 content.appendChild(extra);
185 **/
186 //alert('x');
187
188}
189
190function showTextView(){
191
192 var content = YAHOO.util.Dom.get('berryBasketContent');
193 var textview = YAHOO.util.Dom.get('textview');
194
195 berryCheckoutPageClear();
196 if (docList.length == 0){
197 content.appendChild(document.createTextNode(gs.text.berry.empty_basket));
198 return;
199 }
200 buildPreview(content);
201
202}
203
204function getEmailContent(content){
205 var item ;
206 var tr;
207 var td;
208 var input;
209
210 table = document.createElement('table');
211 table.setAttribute("class","mailtable");
212
213 for (item in mailinfo){
214 tr = document.createElement('tr');
215 td = document.createElement('td');
216 td.setAttribute("class","mailitem");
217 td.appendChild(document.createTextNode(mailinfo[item]));
218 tr.appendChild(td);
219 td = document.createElement('td');
220 input = document.createElement('input');
221 input.setAttribute("id", item);
222 input.setAttribute("class", "mailinput");
223 input.setAttribute("type", "text");
224 td.appendChild(input);
225 tr.appendChild(td);
226 table.appendChild(tr);
227 }
228
229 // an empty line
230 tr = document.createElement('tr');
231 td = document.createElement('td');
232 td.appendChild(document.createElement('br'));
233 tr.appendChild(td);
234 table.appendChild(tr);
235
236 content.appendChild(table);
237
238 buildPreview(content);
239
240 //send button
241 input = document.createElement('input');
242 input.setAttribute("id", 'sendmail');
243 input.setAttribute("class", "sendbutton");
244 input.setAttribute("type", "button");
245 input.setAttribute("value", gs.text.berry.send);
246 content.appendChild(input);
247}
248
249function showEmail(){
250 var content = YAHOO.util.Dom.get('berryBasketContent');
251 var email = YAHOO.util.Dom.get('email');
252
253 berryCheckoutPageClear();
254
255 if (docList.length == 0){
256 content.appendChild(document.createTextNode(gs.text.berry.empty_basket));
257 return;
258 }
259
260 var item;
261 var tr;
262 var td;
263 var input;
264
265 table = document.createElement('table');
266 table.setAttribute("class","mailtable");
267
268 for (item in mailinfo){
269 tr = document.createElement('tr');
270 td = document.createElement('td');
271 td.setAttribute("class","mailitem");
272 td.appendChild(document.createTextNode(mailinfo[item]));
273 tr.appendChild(td);
274
275 td = document.createElement('td');
276 input = document.createElement('input');
277 input.setAttribute("id", item);
278 input.setAttribute("class", "mailinput");
279 input.setAttribute("type", "text");
280 td.appendChild(input);
281 tr.appendChild(td);
282 table.appendChild(tr);
283
284 }
285
286 // an empty line
287 tr = document.createElement('tr');
288 td = document.createElement('td');
289 td.appendChild(document.createElement('br'));
290 tr.appendChild(td);
291 table.appendChild(tr);
292
293 content.appendChild(table);
294
295 buildPreview(content);
296
297 //send button
298 input = document.createElement('input');
299 input.setAttribute("id", 'sendmail');
300 input.setAttribute("class", "sendbutton");
301 input.setAttribute("type", "button");
302 input.setAttribute("value", gs.text.berry.send);
303 content.appendChild(input);
304
305 YAHOO.util.Event.addListener(input, 'click', navigate);
306}
307
308function buildPreview(parent){
309
310 var div = document.createElement('div');
311 var cb = document.createElement('input');
312 cb.setAttribute('class', 'sendbutton');
313 cb.type = 'button';
314 cb.id = 'urlcheck';
315 if (urlonly)
316 {
317 cb.value=gs.text.berry.url_and_metadata;
318 }
319 else
320 {
321 cb.value=gs.text.berry.url_only;
322 }
323
324 YAHOO.util.Event.addListener(cb, 'click', navigate);
325
326 var img = document.createElement('img');
327 img.src = 'interfaces/default/images/check3.gif';
328 img.id = 'urlcheck';
329 div.appendChild(cb);
330 //div.appendChild(img);
331
332 var urls = document.createElement('span');
333 urls.id = 'urls';
334 urls.className = 'berrycheck';
335 //urls.appendChild(document.createTextNode('URL only'));
336 div.appendChild(urls);
337
338 // var urlsmetadata = document.createElement('span');
339 // urlsmetadata.id = 'urlsmetadata'
340 // urlsmetadata.className = 'berryradio';
341 // urlsmetadata.appendChild(document.createTextNode('URLs and Metadata'));
342 // div.appendChild(urlsmetadata);
343
344 parent.appendChild(div);
345
346 var parea = document.createElement('textarea');
347 parea.id = 'pretextarea';
348
349 parent.appendChild(parea);
350
351 if(urlonly)
352 {
353 populateUrls(parea);
354 }
355 else
356 {
357 populateUrlsAndMetadata(parea);
358 }
359}
360
361function getDefaultLinkType(collection) {
362 var link_type;
363 if (document_link_collections.includes(collection)) {
364 link_type = "document";
365 } else if (source_link_collections.includes(collection)) {
366 link_type = "source";
367 }
368 else {
369 link_type = default_link_type;
370 if (link_type != "source" && link_type != "document") {
371 link_type = "document"; //the default default
372 }
373 }
374 return link_type;
375}
376
377function generateURL(doc) {
378
379 var url;
380 var doc_url = document.URL;
381 var root_url = doc_url.substring(0,doc_url.indexOf('?'));
382
383 var link_type = getDefaultLinkType(doc["collection"]);
384 if (link_type == "document") {
385 url = root_url+"/collection/"+doc["collection"]+"/document/"+doc["name"];
386 } else if (link_type == "source") {
387 // remove library
388 root_url = root_url.substring(0, root_url.lastIndexOf('/'));
389 url = root_url+"/sites/"+gs.xsltParams.site_name+"/collect/"+doc['collection']+"/index/assoc/"+doc["assocfilepath"]+"/"+doc["srclinkFile"];
390 }
391 return url;
392}
393
394
395function populateUrls(parea){
396
397 var urls="";
398 for (var i in docList){
399 var doc = docList[i];
400 urls += generateURL(doc)+"\n\n";
401 }
402
403 parea.value = urls;
404
405}
406
407function populateUrlsAndMetadata(parea){
408
409 var fulltext="";
410
411 for (var i in docList){
412 var doc = docList[i];
413 var url = generateURL(doc)+"\n";
414
415 var metadata = "";
416 if (doc['title']) {
417 metadata += gs.text.berry.doc_title+": "+doc['title']+"\n";
418 }
419 if (doc['root_title']) {
420 metadata += gs.text.berry.doc_root_title+": "+doc['root_title']+"\n";
421
422 }
423 if (doc['name']) {
424 metadata += gs.text.berry.doc_name+": "+doc['name']+"\n";
425 }
426 if (doc['collection']) {
427 metadata += gs.text.berry.doc_collection+": "+doc['collection']+"\n";
428 }
429 if (doc['date']) {
430 metadata += gs.text.berry.doc_date+": "+doc['date']+"\n";
431 }
432 fulltext +=url+metadata+"\n";
433 }
434
435 parea.value = fulltext;
436
437}
438
439function sendMail(){
440 var url = gs.xsltParams.library_name + "?a=pr&rt=r&ro=1&s=SendMail&c=";
441 var request_type = "POST";
442 var postdata = "";
443 var i;
444 //get checked items
445 for (i in mailinfo) {
446 var input = YAHOO.util.Dom.get(i);
447 var value = input.value;
448 postdata +="&s1."+i+"="+value;
449 }
450
451 var content = YAHOO.util.Dom.get('pretextarea').value;
452
453 content = content.replace(/&/g,'-------');
454 postdata +="&s1.content="+content;
455
456 var callback = {
457 success: function(o) {
458 var result = o.responseText;
459 alert(gs.text.berry.send_success);
460 } ,
461 failure: function(o) {
462 alert(gs.text.berry.send_fail);
463 }
464 }
465 YAHOO.util.Connect.asyncRequest(request_type , url , callback, postdata);
466}
467
468function berryCheckoutPageClear() {
469 var bbc = document.getElementById('berryBasketContent');
470 if ( bbc == null ) return;
471 bbc.innerHTML = '';
472}
473
474function berryCheckoutHighlight( id ) {
475
476 for ( var i=0; i<options.length; i++ ) {
477 var option = document.getElementById( options[i] );
478 if ( option != null ) {
479 if ( id == options[i] ) {
480 //YAHOO.util.Dom.addClass( option, 'current' );
481 option.className='current';
482 } else {
483 //YAHOO.util.Dom.removeClass( option, 'current' );
484 option.className='';
485 }
486 }
487 }
488
489 if ( option == null ) return;
490 option.style.className = 'current';
491
492}
493
494YAHOO.util.Event.addListener(window,'load', pageLoad);
495
496
Note: See TracBrowser for help on using the repository browser.