source: trunk/gsdl3/web/interfaces/default/transform/berry.xsl@ 12014

Last change on this file since 12014 was 12014, checked in by shaoqun, 18 years ago

the xsl file for the berry basket full view

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