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

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

previous commit was by mistake, undoing it.

File size: 12.4 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 a.href=generateURL(doc);
157 a.appendChild(document.createTextNode(doc['Title']));
158 if (doc['root_Title']){
159 li.appendChild(document.createTextNode(doc['root_Title']+": "));
160 }
161 li.appendChild(a);
162 li.appendChild(document.createTextNode(" ("+doc['collection']+")"));
163 var metadata = "";
164 for (var metaItem in doc) {
165 if ( !default_metas.includes(metaItem)){
166 metadata += " "+metaItem+": "+ doc[metaItem]+" ";
167 }
168 }
169 text +=metadata;
170 li.appendChild(document.createTextNode(text));
171 li.className = 'berrydoc';
172 ol.appendChild(li);
173 new ygDDPlayer(img.id,'trash',docList);
174 }
175
176}
177
178function showTextView(){
179
180 var content = YAHOO.util.Dom.get('berryBasketContent');
181 var textview = YAHOO.util.Dom.get('textview');
182
183 berryCheckoutPageClear();
184 if (docList.length == 0){
185 content.appendChild(document.createTextNode(gs.text.berry.empty_basket));
186 return;
187 }
188 buildPreview(content);
189
190}
191
192function getEmailContent(content){
193 var item ;
194 var tr;
195 var td;
196 var input;
197
198 table = document.createElement('table');
199 table.setAttribute("class","mailtable");
200
201 for (item in mailinfo){
202 tr = document.createElement('tr');
203 td = document.createElement('td');
204 td.setAttribute("class","mailitem");
205 td.appendChild(document.createTextNode(mailinfo[item]));
206 tr.appendChild(td);
207 td = document.createElement('td');
208 input = document.createElement('input');
209 input.setAttribute("id", item);
210 input.setAttribute("class", "mailinput");
211 input.setAttribute("type", "text");
212 td.appendChild(input);
213 tr.appendChild(td);
214 table.appendChild(tr);
215 }
216
217 // an empty line
218 tr = document.createElement('tr');
219 td = document.createElement('td');
220 td.appendChild(document.createElement('br'));
221 tr.appendChild(td);
222 table.appendChild(tr);
223
224 content.appendChild(table);
225
226 buildPreview(content);
227
228 //send button
229 input = document.createElement('input');
230 input.setAttribute("id", 'sendmail');
231 input.setAttribute("class", "sendbutton");
232 input.setAttribute("type", "button");
233 input.setAttribute("value", gs.text.berry.send);
234 content.appendChild(input);
235}
236
237function showEmail(){
238 var content = YAHOO.util.Dom.get('berryBasketContent');
239 var email = YAHOO.util.Dom.get('email');
240
241 berryCheckoutPageClear();
242
243 if (docList.length == 0){
244 content.appendChild(document.createTextNode(gs.text.berry.empty_basket));
245 return;
246 }
247
248 var item;
249 var tr;
250 var td;
251 var input;
252
253 table = document.createElement('table');
254 table.setAttribute("class","mailtable");
255
256 for (item in mailinfo){
257 tr = document.createElement('tr');
258 td = document.createElement('td');
259 td.setAttribute("class","mailitem");
260 td.appendChild(document.createTextNode(mailinfo[item]));
261 tr.appendChild(td);
262
263 td = document.createElement('td');
264 input = document.createElement('input');
265 input.setAttribute("id", item);
266 input.setAttribute("class", "mailinput");
267 input.setAttribute("type", "text");
268 td.appendChild(input);
269 tr.appendChild(td);
270 table.appendChild(tr);
271
272 }
273
274 // an empty line
275 tr = document.createElement('tr');
276 td = document.createElement('td');
277 td.appendChild(document.createElement('br'));
278 tr.appendChild(td);
279 table.appendChild(tr);
280
281 content.appendChild(table);
282
283 buildPreview(content);
284
285 //send button
286 input = document.createElement('input');
287 input.setAttribute("id", 'sendmail');
288 input.setAttribute("class", "sendbutton");
289 input.setAttribute("type", "button");
290 input.setAttribute("value", gs.text.berry.send);
291 content.appendChild(input);
292
293 YAHOO.util.Event.addListener(input, 'click', navigate);
294}
295
296function buildPreview(parent){
297
298 var div = document.createElement('div');
299 var cb = document.createElement('input');
300 cb.setAttribute('class', 'sendbutton');
301 cb.type = 'button';
302 cb.id = 'urlcheck';
303 if (urlonly)
304 {
305 cb.value=gs.text.berry.url_and_metadata;
306 }
307 else
308 {
309 cb.value=gs.text.berry.url_only;
310 }
311
312 YAHOO.util.Event.addListener(cb, 'click', navigate);
313
314 var img = document.createElement('img');
315 img.src = 'interfaces/default/images/check3.gif';
316 img.id = 'urlcheck';
317 div.appendChild(cb);
318 //div.appendChild(img);
319
320 var urls = document.createElement('span');
321 urls.id = 'urls';
322 urls.className = 'berrycheck';
323 //urls.appendChild(document.createTextNode('URL only'));
324 div.appendChild(urls);
325
326 // var urlsmetadata = document.createElement('span');
327 // urlsmetadata.id = 'urlsmetadata'
328 // urlsmetadata.className = 'berryradio';
329 // urlsmetadata.appendChild(document.createTextNode('URLs and Metadata'));
330 // div.appendChild(urlsmetadata);
331
332 parent.appendChild(div);
333
334 var parea = document.createElement('textarea');
335 parea.id = 'pretextarea';
336
337 parent.appendChild(parea);
338
339 if(urlonly)
340 {
341 populateUrls(parea);
342 }
343 else
344 {
345 populateUrlsAndMetadata(parea);
346 }
347}
348
349function getDefaultLinkType(collection) {
350 var link_type;
351 if (document_link_collections.includes(collection)) {
352 link_type = "document";
353 } else if (source_link_collections.includes(collection)) {
354 link_type = "source";
355 }
356 else {
357 link_type = default_link_type;
358 if (link_type != "source" && link_type != "document") {
359 link_type = "document"; //the default default
360 }
361 }
362 return link_type;
363}
364
365function generateURL(doc) {
366
367 var url;
368 var doc_url = document.URL;
369 var root_url = doc_url.substring(0,doc_url.indexOf('?'));
370
371 var link_type = getDefaultLinkType(doc["collection"]);
372 if (link_type == "document") {
373 url = root_url+"/collection/"+doc["collection"]+"/document/"+doc["name"];
374 } else if (link_type == "source") {
375 // remove library
376 root_url = root_url.substring(0, root_url.lastIndexOf('/'));
377 url = root_url+"/sites/"+gs.xsltParams.site_name+"/collect/"+doc['collection']+"/index/assoc/"+doc["root_assocfilepath"]+"/"+doc["root_srclinkFile"];
378 }
379 return url;
380}
381
382
383function populateUrls(parea){
384
385 var urls="";
386 for (var i in docList){
387 var doc = docList[i];
388 urls += generateURL(doc)+"\n\n";
389 }
390
391 parea.value = urls;
392
393}
394
395function populateUrlsAndMetadata(parea){
396
397 var fulltext="";
398 for (var i in docList){
399 var doc = docList[i];
400 var url = generateURL(doc)+"\n";
401
402 var metadata = "";
403 if (doc['Title']) {
404 metadata += gs.text.berry.doc_title+": "+doc['Title']+"\n";
405 }
406 if (doc['root_Title']) {
407 metadata += gs.text.berry.doc_root_title+": "+doc['root_Title']+"\n";
408
409 }
410 if (doc['name']) {
411 metadata += gs.text.berry.doc_name+": "+doc['name']+"\n";
412 }
413 if (doc['collection']) {
414 metadata += gs.text.berry.doc_collection+": "+doc['collection']+"\n";
415 }
416 if (doc['Date']) {
417 metadata += gs.text.berry.doc_date+": "+doc['Date']+"\n";
418 }
419 // allow for inclusion of custom metadata
420 for (var m in doc) {
421 if (!default_metas.includes(m)) {
422 metadata += m +":" + doc[m]+"\n";
423 }
424 }
425 fulltext +=url+metadata+"\n";
426 }
427
428 parea.value = fulltext;
429
430}
431
432function sendMail(){
433 var url = gs.xsltParams.library_name + "?a=pr&rt=r&ro=1&s=SendMail&c=";
434 var request_type = "POST";
435 var postdata = "";
436 var i;
437 //get checked items
438 for (i in mailinfo) {
439 var input = YAHOO.util.Dom.get(i);
440 var value = input.value;
441 postdata +="&s1."+i+"="+value;
442 }
443
444 var content = YAHOO.util.Dom.get('pretextarea').value;
445
446 content = content.replace(/&/g,'-------');
447 postdata +="&s1.content="+content;
448
449 var callback = {
450 success: function(o) {
451 var result = o.responseText;
452 alert(gs.text.berry.send_success);
453 } ,
454 failure: function(o) {
455 alert(gs.text.berry.send_fail);
456 }
457 }
458 YAHOO.util.Connect.asyncRequest(request_type , url , callback, postdata);
459}
460
461function berryCheckoutPageClear() {
462 var bbc = document.getElementById('berryBasketContent');
463 if ( bbc == null ) return;
464 bbc.innerHTML = '';
465}
466
467function berryCheckoutHighlight( id ) {
468
469 for ( var i=0; i<options.length; i++ ) {
470 var option = document.getElementById( options[i] );
471 if ( option != null ) {
472 if ( id == options[i] ) {
473 //YAHOO.util.Dom.addClass( option, 'current' );
474 option.className='current';
475 } else {
476 //YAHOO.util.Dom.removeClass( option, 'current' );
477 option.className='';
478 }
479 }
480 }
481
482 if ( option == null ) return;
483 option.style.className = 'current';
484
485}
486
487YAHOO.util.Event.addListener(window,'load', pageLoad);
488
489
Note: See TracBrowser for help on using the repository browser.