root/other-projects/tipple-android/i-greenstone-server-files/greenstone/webapps/greenstone3/interfaces/basic/transform/berry.xsl @ 26899

Revision 26899, 26.2 KB (checked in by davidb, 7 years ago)

Tipple reborn after Chris's Summer of Code 2013

  • Property svn:mime-type set to application/xml
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 browser.