source: main/branches/64_bit_Greenstone/greenstone3/web/interfaces/default-client-xslt/transform/berry.xsl@ 24007

Last change on this file since 24007 was 24007, checked in by sjm84, 13 years ago

Updating this branch to match the latest Greenstone3 changes

File size: 26.2 KB
Line 
1<?xml version="1.0" encoding="ISO-8859-1"?>
2<xsl:stylesheet version="1.0"
3 xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
4 xmlns:java="http://xml.apache.org/xslt/java"
5 xmlns:util="xalan://org.greenstone.gsdl3.util.XSLTUtil"
6 extension-element-prefixes="java util"
7 exclude-result-prefixes="java util">
8
9 <!--<xsl:include href="style.xsl"/>-->
10 <xsl:include href="service-params.xsl"/>
11 <xsl:include href="berrytools.xsl"/>
12
13 <xsl:output method="html"/>
14
15 <xsl:param name="library_name"/>
16
17 <!-- the main page layout template is here -->
18 <xsl:template match="page">
19 <html>
20 <xsl:call-template name="pageHead"/>
21 <body>
22 <xsl:attribute name="dir"><xsl:call-template name="direction"/></xsl:attribute>
23 <div id="page-wrapper">
24 <xsl:apply-templates select="pageResponse"/>
25 </div>
26 </body>
27 </html>
28 </xsl:template>
29
30 <!-- put a space in the title in case the actual value is missing - mozilla will not display a page with no title-->
31 <xsl:template name="pageHead">
32 <head>
33 <title>
34 <xsl:call-template name="pageTitle"/>
35 </title>
36 <xsl:call-template name="pageStyle"/>
37 </head>
38 </xsl:template>
39
40 <xsl:template name="pageTitle">
41 <xsl:value-of select="/page/pageResponse/serviceCluster/metadataList/metadata[@name='Title']"/>
42 Berry Basket
43 </xsl:template>
44
45 <!-- page specific style goes here -->
46 <xsl:template name="pageStyle" >
47 <xsl:call-template name="styleSheet" />
48 <xsl:call-template name="loadLibrary" />
49 <xsl:call-template name="buildContent" />
50 <!-- <xsl:call-template name="showMailBox" />-->
51 </xsl:template>
52
53 <xsl:template match="pageResponse">
54 <xsl:variable name="clusterName"><xsl:value-of select="/page/pageRequest/paramList/param[@name='c']/@value"/></xsl:variable>
55 <xsl:call-template name="berryPageBanner" />
56 <xsl:apply-templates select="paramList"/>
57 <div id="content" ><span></span></div>
58 <xsl:call-template name="footBanner" />
59 </xsl:template>
60
61
62 <xsl:template match="collection">
63 <xsl:for-each select="item">
64 <xsl:text disable-output-escaping="yes">
65 var doc = new Array();
66 </xsl:text>
67 <xsl:for-each select="@*">
68 <xsl:text disable-output-escaping="yes">
69 doc["</xsl:text><xsl:value-of select="name()" /><xsl:text disable-output-escaping="yes">"]='</xsl:text><xsl:value-of select="." /><xsl:text disable-output-escaping="yes">'; </xsl:text>
70 </xsl:for-each>
71 <xsl:text disable-output-escaping="yes">
72 docList[docList.length] = doc;
73 </xsl:text>
74 </xsl:for-each>
75 </xsl:template>
76
77
78 <xsl:template name="buildContent">
79 <script type="text/javascript">
80 <xsl:text disable-output-escaping="yes">
81 var previousView;
82 var docList = new Array();
83 var urlonly = false;
84 var mailinfo = new Array();
85 mailinfo['address'] = "To: ";
86 mailinfo['cc'] = "CC: ";
87 mailinfo['bcc'] = "Bcc: ";
88 mailinfo['subject'] = "Subject: ";
89 var textwin;
90 var mailwin;
91 </xsl:text>
92 <xsl:apply-templates select="/page/pageResponse/collection" />
93
94 <xsl:text disable-output-escaping="yes">
95
96 function navigate(e){
97 var target = e.target;
98
99 if (target.id.toLowerCase() == 'fullview'){
100 showFullView();
101 }
102
103 if (target.id.toLowerCase() == 'textview'){
104 showTextView();
105 }
106
107 if (target.id.toLowerCase() == 'email'){
108 showEmail();
109 }
110
111 if (target.id.toLowerCase() == 'sendmail'){
112 sendMail();
113 }
114
115
116
117 if (target.id.toLowerCase() == 'urlcheck' &amp;&amp; urlonly){
118 var urlcheck = YAHOO.util.Dom.get('urlcheck');
119 urlcheck.src = 'interfaces/default/images/check3.gif';
120 var parea =YAHOO.util.Dom.get('pretextarea');
121 urlonly = false;
122 populateUrlsAndMetadata(parea);
123 return;
124
125 }
126
127 if (target.id.toLowerCase() == 'urlcheck' &amp;&amp; !urlonly ){
128 var urlcheck = YAHOO.util.Dom.get('urlcheck');
129 urlcheck.src = 'interfaces/default/images/check4.gif';
130 var parea =YAHOO.util.Dom.get('pretextarea');
131 populateUrls(parea);
132 urlonly = true;
133 return;
134 }
135
136 if (target.id.toLowerCase() == 'extextview' ){
137 if (textwin != null){
138 textwin.close();
139 }
140
141 textwin = window.open("","Berry basket plain text view","status=1,width=450,height=300");
142 textwin.moveTo(0,0);
143 var content = document.createElement('div');
144 buildPreview(content);
145 var body = textwin.document.getElementsByTagName('body')[0];
146 body.appendChild(content);
147 var prearea = textwin.document.getElementsByTagName('textarea')[0];
148 prearea.cols = '55';
149 prearea.rows = '15';
150 }
151
152 if (target.id.toLowerCase() == 'exemail' ){
153 if (mailwin != null){
154 mailwin.close();
155 }
156 mailwin = window.open("","Berry basket mail to a friend","status=1,width=450,height=350");
157 mailwin.moveTo(0,0);
158 var content = document.createElement('div');
159 getEmailContent(content);
160 var body = mailwin.document.getElementsByTagName('body')[0];
161 body.appendChild(content);
162 var prearea = mailwin.document.getElementsByTagName('textarea')[0];
163 prearea.cols = '50';
164 prearea.rows = '11';
165 }
166
167 }
168
169 function showFullView(){
170
171 var content = YAHOO.util.Dom.get('content');
172 var fullview = YAHOO.util.Dom.get('fullview');
173
174 if (previousView != null){
175 previousView.style.backgroundImage = 'url("interfaces/default/images/bg_on.png")';
176 }
177 previousView = fullview;
178 previousView.style.backgroundImage = 'url("interfaces/default/images/bg_green.png")';
179
180 while (content.hasChildNodes()) {
181 content.removeChild(content.firstChild);
182 }
183
184 if (docList.length == 0){
185 content.appendChild(document.createTextNode("Your berry basket is empty."));
186 return;
187 }
188
189
190 var trashbin = document.createElement('div');
191 trashbin.id ='trashbin';
192 var binhandle = document.createElement('div');
193 binhandle.id = 'binhandle';
194 binhandle.appendChild(document.createElement('span'));
195 trashbin.appendChild(binhandle)
196
197 content.appendChild(trashbin);
198
199 var dd = new ygDDOnTop('trashbin');
200 dd.setHandleElId('binhandle');
201 new YAHOO.util.DDTarget('trashbin','trash');
202
203 var dlist = document.createElement('div');
204 content.appendChild(dlist);
205 var ol = document.createElement('ol');
206 dlist.appendChild(ol);
207
208 for (var i in docList){
209 var doc = docList[i];
210 var li = document.createElement('li');
211 var a = document.createElement('a');
212 var text ="";
213 a.href ="?a=d&amp;c="+doc['collection']+"&amp;d="+doc['name'];
214 a.appendChild(document.createTextNode(doc['title']));
215 if (doc['root_title'] != ""){
216 li.appendChild(document.createTextNode(doc['root_title']+": "));
217 }
218 li.appendChild(a);
219 var metadata = "";
220 for (var metaItem in doc &amp;&amp; metaItem != 'title'){
221 metadata = "\n"+metaItem+": "+ doc[metaItem]+"\n";
222 }
223 text +=metadata+"\n";
224 li.appendChild(document.createTextNode(text));
225 li.id = doc['collection']+":"+ doc['name'];
226 li.className = 'berrydoc';
227 ol.appendChild(li);
228 new ygDDPlayer(li.id,'trash',docList);
229 }
230
231 /**
232 var extra = document.createElement('div');
233 var textview = document.createElement('span');
234 textview.id = 'extextview';
235 textview.className = 'extralink';
236 textview.appendChild(document.createTextNode("plain text version"));
237 var email = document.createElement('span');
238 email.appendChild(document.createTextNode("email to a friend"));
239 email.id = 'exemail';
240 email.className = 'extralink';
241 extra.appendChild(textview);
242 extra.appendChild(email);
243 content.appendChild(extra);
244 **/
245 }
246
247 function showTextView(){
248 var content = YAHOO.util.Dom.get('content');
249 var textview = YAHOO.util.Dom.get('textview');
250
251 if (previousView != null &amp;&amp; textview !=null){
252 previousView.style.backgroundImage = 'url("interfaces/default/images/bg_on.png")';
253 }
254
255 if (textview !=null){
256 previousView = textview;
257 previousView.style.backgroundImage = 'url("interfaces/default/images/bg_green.png")';
258 }
259
260 while (content.hasChildNodes()) {
261 content.removeChild(content.firstChild);
262 }
263
264 if (docList.length == 0){
265 content.appendChild(document.createTextNode("Your berry basket is empty."));
266 return;
267 }
268
269 buildPreview(content);
270
271
272 }
273
274 function getEmailContent(content){
275 var item ;
276 var tr;
277 var td;
278 var input;
279
280 table = document.createElement('table');
281 table.setAttribute("class","mailtable");
282
283 for (item in mailinfo){
284 tr = document.createElement('tr');
285 td = document.createElement('td');
286 td.setAttribute("class","mailitem");
287 td.appendChild(document.createTextNode(mailinfo[item]));
288 tr.appendChild(td);
289
290 td = document.createElement('td');
291 input = document.createElement('input');
292 input.setAttribute("id", item);
293 input.setAttribute("class", "mailinput");
294 input.setAttribute("type", "text");
295 td.appendChild(input);
296 tr.appendChild(td);
297 table.appendChild(tr);
298
299 }
300
301 // an empty line
302 tr = document.createElement('tr');
303 td = document.createElement('td');
304 td.appendChild(document.createElement('br'));
305 tr.appendChild(td);
306 table.appendChild(tr);
307
308 content.appendChild(table);
309
310 buildPreview(content);
311
312 //send button
313 input = document.createElement('input');
314 input.setAttribute("id", 'sendmail');
315 input.setAttribute("class", "sendbutton");
316 input.setAttribute("type", "button");
317 input.setAttribute("value", "send");
318 content.appendChild(input);
319
320 }
321
322
323 function showEmail(){
324
325 var content = YAHOO.util.Dom.get('content');
326 var email = YAHOO.util.Dom.get('email');
327
328 if (previousView != null &amp;&amp; email !=null ){
329 previousView.style.backgroundImage = 'url("interfaces/default/images/bg_on.png")';
330 }
331
332 if (email != null){
333 previousView = email;
334 previousView.style.backgroundImage = 'url("interfaces/default/images/bg_green.png")';
335 }
336 while (content.hasChildNodes()) {
337 content.removeChild(content.firstChild);
338 }
339
340 if (docList.length == 0){
341 content.appendChild(document.createTextNode("Your berry basket is empty."));
342 return;
343 }
344
345
346 var item ;
347 var tr;
348 var td;
349 var input;
350
351 table = document.createElement('table');
352 table.setAttribute("class","mailtable");
353
354 for (item in mailinfo){
355 tr = document.createElement('tr');
356 td = document.createElement('td');
357 td.setAttribute("class","mailitem");
358 td.appendChild(document.createTextNode(mailinfo[item]));
359 tr.appendChild(td);
360
361 td = document.createElement('td');
362 input = document.createElement('input');
363 input.setAttribute("id", item);
364 input.setAttribute("class", "mailinput");
365 input.setAttribute("type", "text");
366 td.appendChild(input);
367 tr.appendChild(td);
368 table.appendChild(tr);
369
370 }
371
372 // an empty line
373 tr = document.createElement('tr');
374 td = document.createElement('td');
375 td.appendChild(document.createElement('br'));
376 tr.appendChild(td);
377 table.appendChild(tr);
378
379 content.appendChild(table);
380
381 buildPreview(content);
382
383 //send button
384 input = document.createElement('input');
385 input.setAttribute("id", 'sendmail');
386 input.setAttribute("class", "sendbutton");
387 input.setAttribute("type", "button");
388 input.setAttribute("value", "send");
389 content.appendChild(input);
390
391 }
392
393
394 function buildPreview(parent){
395 var div = document.createElement('div');
396
397
398 var img = document.createElement('img');
399 img.src = 'interfaces/default/images/check3.gif';
400 img.id = 'urlcheck';
401 div.appendChild(img);
402
403 var urls = document.createElement('span');
404 urls.id = 'urls';
405 urls.className = 'berrycheck';
406 urls.appendChild(document.createTextNode('URL only'));
407 div.appendChild(urls);
408
409 // var urlsmetadata = document.createElement('span');
410 // urlsmetadata.id = 'urlsmetadata'
411 // urlsmetadata.className = 'berryradio';
412 // urlsmetadata.appendChild(document.createTextNode('URLs and Metadata'));
413
414 // div.appendChild(urlsmetadata);
415
416
417 parent.appendChild(div);
418
419
420 var parea = document.createElement('textarea');
421 parea.id = 'pretextarea';
422
423 parent.appendChild(parea);
424
425
426 populateUrlsAndMetadata(parea);
427
428
429 }
430
431
432 function populateUrls(parea){
433 var urls="";
434 var doc_url = document.URL;
435 var root_url = doc_url.substring(0,doc_url.indexOf('?'));
436
437 for (var i in docList){
438 var doc = docList[i];
439 urls +=root_url+"?a=d&amp;c="+doc["collection"]+"&amp;d="+doc["name"]+"\n\n";
440
441 }
442
443 parea.value = urls;
444
445 }
446
447 function populateUrlsAndMetadata(parea){
448
449 var doc_url = document.URL;
450 var root_url = doc_url.substring(0,doc_url.indexOf('?'));
451 var fulltext="";
452
453 for (var i in docList){
454 var doc = docList[i];
455 var url =root_url+"?a=d&amp;c="+doc['collection']+"&amp;d="+doc['name']+"\n";
456 for (var metaItem in doc){
457 var metadata = metaItem+": "+ doc[metaItem]+"\n";
458 }
459 fulltext +=url+metadata+"\n";
460
461 }
462
463 parea.value = fulltext;
464
465 }
466
467 function sendMail(){
468 var url = "?a=pr&amp;rt=r&amp;ro=1&amp;s=SendMail&amp;c=";
469 var request_type = "POST";
470 var postdata = "";
471 var i;
472 //get checked items
473 for (i in mailinfo)
474 {
475
476 var input = YAHOO.util.Dom.get(i);
477 var value = input.value;
478 postdata +="&amp;s1."+i+"="+value;
479 }
480
481
482 var content = YAHOO.util.Dom.get('pretextarea').value;
483
484 content = content.replace(/&amp;/g,'-------');
485 postdata +="&amp;s1.content="+content;
486
487
488 var callback = {
489 success:function(o){
490 var result = o.responseText;
491 alert(result);
492
493 } ,
494 failure:function(o){
495 alert("Sending mail falied");
496 }
497 }
498
499
500 YAHOO.util.Connect.asyncRequest(request_type , url , callback, postdata);
501 }
502
503 YAHOO.util.Event.addListener(window,'click', navigate);
504 YAHOO.util.Event.addListener(window,'load', showFullView);
505 </xsl:text>
506 </script>
507 </xsl:template>
508
509 <xsl:template name="styleSheet">
510 <link rel="stylesheet" href="interfaces/default/style/core.css" type="text/css"/>
511 <link rel="stylesheet" href="interfaces/default/style/berry.css" type="text/css"/>
512 </xsl:template>
513
514 <xsl:template name="showMailBox">
515 <script type="text/javascript">
516 <xsl:text disable-output-escaping="yes">
517 var show = false;
518 var table;
519 var mailserver = new Array();
520 mailserver['host'] = "Mail Server: ";
521 mailserver['user'] = "User Name: ";
522 mailserver['password'] = "Password: ";
523
524 var mailinfo = new Array();
525 mailinfo['address'] = "To: ";
526 mailinfo['cc'] = "CC: ";
527 mailinfo['bcc'] = "Bcc: ";
528 mailinfo['subject'] = "Subject: ";
529
530 function mailBoxUpdate(e) {
531 var target = e.target;
532 if (target.id.toLowerCase() == 'sendasemail' &amp;&amp; !show){
533 showMailBox();
534 show = true;
535 }
536 else{
537 if (target.id.toLowerCase() == 'sendasemail' &amp;&amp; show){
538 hideMailBox();
539 show = false;
540 }
541
542 if (target.id.toLowerCase() == 'sendmail'){
543 sendMail();
544 }
545 }
546
547
548
549 }
550
551 function showMailBox(){
552 var mailbox = YAHOO.util.Dom.get('mailbox');
553 if (table != null &amp;&amp; !show){
554 mailbox.appendChild(table);
555 return;
556 }
557
558 var item ;
559 var tr;
560 var td;
561 var input;
562
563 table = document.createElement('table');
564 table.setAttribute("class","mailtable");
565
566 // mail server
567 tr = document.createElement('tr');
568 td = document.createElement('td');
569 td.setAttribute("class","mailitem");
570 td.appendChild(document.createTextNode(mailserver['host']));
571 tr.appendChild(td);
572
573 td = document.createElement('td');
574 input = document.createElement('input');
575 input.setAttribute("id", 'host');
576 input.setAttribute("class", "mailinput");
577 input.setAttribute("type", "text");
578 td.appendChild(input);
579 td.appendChild(document.createTextNode(' e.g. webmail.cs.waikato.ac.nz'));
580 tr.appendChild(td);
581 table.appendChild(tr);
582
583 //user name
584 tr = document.createElement('tr');
585 td = document.createElement('td');
586 td.setAttribute("class","mailitem");
587 td.appendChild(document.createTextNode(mailserver['user']));
588 tr.appendChild(td);
589 td = document.createElement('td');
590 input = document.createElement('input');
591 input.setAttribute("id", 'user');
592 input.setAttribute("class", "mailinput");
593 input.setAttribute("type", "text");
594 td.appendChild(input);
595 tr.appendChild(td);
596 table.appendChild(tr);
597
598 //password
599 tr = document.createElement('tr');
600 td = document.createElement('td');
601 td.setAttribute("class","mailitem");
602 td.appendChild(document.createTextNode(mailserver['password']));
603 tr.appendChild(td);
604 td = document.createElement('td');
605 input = document.createElement('input');
606 input.setAttribute("id", 'password');
607 input.setAttribute("class", "mailinput");
608 input.setAttribute("type", "password");
609 td.appendChild(input);
610 tr.appendChild(td);
611 table.appendChild(tr);
612
613 // an empty line
614 tr = document.createElement('tr');
615 td = document.createElement('td');
616 td.appendChild(document.createElement('br'));
617 tr.appendChild(td);
618 table.appendChild(tr);
619
620 for (item in mailinfo){
621 tr = document.createElement('tr');
622 td = document.createElement('td');
623 td.setAttribute("class","mailitem");
624 td.appendChild(document.createTextNode(mailinfo[item]));
625 tr.appendChild(td);
626
627 td = document.createElement('td');
628 input = document.createElement('input');
629 input.setAttribute("id", item);
630 input.setAttribute("class", "mailinput");
631 input.setAttribute("type", "text");
632 td.appendChild(input);
633 tr.appendChild(td);
634 table.appendChild(tr);
635
636 }
637
638 // an empty line
639 tr = document.createElement('tr');
640 td = document.createElement('td');
641 td.appendChild(document.createElement('br'));
642 tr.appendChild(td);
643 table.appendChild(tr);
644
645 //send button
646 tr = document.createElement('tr');
647 td = document.createElement('td');
648 td.setAttribute("class","mailitem");
649 input = document.createElement('input');
650 input.setAttribute("id", 'sendmail');
651 input.setAttribute("class", "sendbutton");
652 input.setAttribute("type", "button");
653 input.setAttribute("value", "send");
654 td.appendChild(input);
655 tr.appendChild(td);
656 table.appendChild(tr);
657
658
659 mailbox.appendChild(table);
660 }
661
662
663 function hideMailBox(){
664 var mailbox = YAHOO.util.Dom.get('mailbox');
665 while (mailbox.hasChildNodes()) {
666 mailbox.removeChild(mailbox.firstChild);
667 }
668 }
669
670 function sendMail(){
671 var url = "?a=pr&amp;rt=r&amp;ro=1&amp;s=SendMail&amp;c=";
672 var request_type = "POST";
673 var postdata = "";
674 var i;
675 //get checked items
676 for (i in mailinfo)
677 {
678
679 var input = YAHOO.util.Dom.get(i);
680 var value = input.value;
681 postdata +="&amp;s1."+i+"="+value;
682 }
683
684
685 for (i in mailserver){
686 var input = YAHOO.util.Dom.get(i);
687 var value = input.value;
688 postdata +="&amp;s1."+i+"="+value;
689 }
690
691 var content = YAHOO.util.Dom.get('pretextarea').value;
692
693 content = content.replace(/&amp;/g,'-------');
694 postdata +="&amp;s1.content="+content;
695
696
697 var callback = {
698 success:function(o){
699 var response = o.responseXML;
700
701 alert(response.getAttribute('status'));
702 } ,
703 failure:function(o){
704 alert("Sending mail falied");
705 }
706 }
707
708
709 YAHOO.util.Connect.asyncRequest(request_type , url , callback, postdata);
710 }
711
712
713 YAHOO.util.Event.addListener(window,'click',mailBoxUpdate );
714
715 </xsl:text>
716 </script>
717 </xsl:template>
718
719 <xsl:template name="berryPageBanner">
720 <div class='banner'>
721 <div class='pageinfo'>
722 <p class='bannerlinks'>
723 <a class='navlink' href='{$library_name}?a=p&amp;sa=home' title='Library home page' >HOME</a>
724 <a class='navlink' href='{$library_name}?a=p&amp;sa=help&amp;c=' title='Help pages' >HELP</a>
725 <a class='navlink' href='{$library_name}?a=p&amp;sa=pref&amp;c=' title='Change your interface preferences'>PREFERENCES</a>
726 </p>
727 </div>
728 <div class='basketimage'><p class='bannertitle'>Berry Basket</p></div>
729 </div>
730 <div class="bannerextra"></div>
731
732 <div >
733 <p class='navbar'><span id='fullview' class='navlink'>full view</span><span id='textview' class='navlink'>plain text version</span><span id='email' class='navlink'>email to a friend</span></p>
734 </div>
735 </xsl:template>
736
737 <xsl:template name="footBanner">
738 <div >
739 <p class='navbar'><span >powered by greenstone3</span></p>
740 </div>
741 </xsl:template>
742
743 <xsl:template name="direction">
744 <xsl:if test="/page/@lang='ar' or /page/@lang='fa' or /page/@lang='he' or /page/@lang='ur' or /page/@lang='ps' or /page/@lang='prs'">rtl</xsl:if>
745 </xsl:template>
746
747</xsl:stylesheet>
748
Note: See TracBrowser for help on using the repository browser.