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

Last change on this file since 33048 was 33048, checked in by kjdon, 5 years ago

moved the full view doc item display code to its own function so that it can be customised easily without copying a huge function

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