source: main/trunk/greenstone3/web/interfaces/basic/transform/berry.xsl@ 25699

Last change on this file since 25699 was 25699, checked in by kjdon, 12 years ago

renaming interfaces. step 1. rename default to basic. change image paths, interface inheritance etc

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/basic/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/basic/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/basic/images/bg_on.png")';
176 }
177 previousView = fullview;
178 previousView.style.backgroundImage = 'url("interfaces/basic/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/basic/images/bg_on.png")';
253 }
254
255 if (textview !=null){
256 previousView = textview;
257 previousView.style.backgroundImage = 'url("interfaces/basic/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/basic/images/bg_on.png")';
330 }
331
332 if (email != null){
333 previousView = email;
334 previousView.style.backgroundImage = 'url("interfaces/basic/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/basic/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/basic/style/core.css" type="text/css"/>
511 <link rel="stylesheet" href="interfaces/basic/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.