source: main/branches/64_bit_Greenstone/greenstone3/web/interfaces/default/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

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