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

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

I have changed the way metadata is stored in java for berry basket items, to make it easier to customise for teh user without modifying java code. This means the metadata names will match what is in greenstone now, eg Title instead of the old title. updated names and tidied up code a bit, and handling extra custom metadata.

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.