root/main/branches/64_bit_Greenstone/greenstone3/web/interfaces/default/transform/berrytools.xsl @ 24007

Revision 24007, 16.7 KB (checked in by sjm84, 8 years ago)

Updating this branch to match the latest Greenstone3 changes

  • Property svn:keywords set to Author Date Id Revision
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:param name="berryBaskets"/>
9 
10  <xsl:template name="berrybasket">
11    <div id="berrybasket" class="hide" >
12      <div id="baskethandle"><span></span></div>
13      <div id ="berries"><span></span></div>
14    </div>
15  </xsl:template>
16 
17  <xsl:template name="documentBerryBasket">
18    <xsl:param name="collName"/>
19    <xsl:param name="selectedNode"/>
20    <xsl:param name="rootNode"/>
21    <xsl:param name="docType" />
22    <div id="berrybasket" class="hide" >
23      <div id="baskethandle"><span></span></div>
24      <div id ="berries" ><span></span></div>
25    </div>
26    <xsl:choose>
27      <xsl:when test="$selectedNode = $rootNode">
28    <p id="documentberries">   
29      <img class='pick'  id="{$collName}:{$rootNode}" src="interfaces/default/images/berry3.png" alt="in basket" width="15" height="15" border="0"/><span id="{$collName}:{$rootNode}:root" class="documentberry">the whole document</span></p>       
30      </xsl:when>
31      <xsl:otherwise>
32    <p id="documentberries">   
33      <img class='pick'  id="{$collName}:{$rootNode}" src="interfaces/default/images/berry3.png" alt="in basket" width="15" height="15" border="0"/><span id="{$collName}:{$rootNode}:root" class="documentberry">the whole document</span><img class='pick'  id="{$collName}:{$selectedNode}" src="interfaces/default/images/berry3.png" alt="in basket" width="15" height="15" border="0"/><span id="{$collName}:{$selectedNode}:section" class="documentberry">the current section</span></p>
34      </xsl:otherwise>
35    </xsl:choose>
36  </xsl:template>
37
38 
39  <xsl:template name="loadLibrary">
40    <script type="text/javascript" src="interfaces/default/js/YAHOO.js"><xsl:text disable-output-escaping="yes"> </xsl:text></script>
41    <script type="text/javascript" src="interfaces/default/js/event.js"><xsl:text disable-output-escaping="yes"> </xsl:text></script>
42    <script type="text/javascript" src="interfaces/default/js/connection.js"><xsl:text disable-output-escaping="yes"> </xsl:text></script>
43    <script type="text/javascript" src="interfaces/default/js/dom.js"><xsl:text disable-output-escaping="yes"> </xsl:text></script>
44    <script type="text/javascript" src="interfaces/default/js/dragdrop.js"><xsl:text disable-output-escaping="yes"> </xsl:text></script>
45    <script type="text/javascript" src="interfaces/default/js/ygDDPlayer.js"><xsl:text disable-output-escaping="yes"> </xsl:text></script>
46    <script type="text/javascript" src="interfaces/default/js/ygDDOnTop.js"><xsl:text disable-output-escaping="yes"> </xsl:text></script>
47   
48  </xsl:template>
49 
50  <xsl:template name="js-library">
51    <xsl:call-template name="loadLibrary" />   
52    <xsl:call-template name="basketCheckout" />
53  </xsl:template>
54 
55  <!-- should be called for a documentNode -->
56  <xsl:template name="addBerry">
57    <xsl:param name="collName"/>
58    <td valign="top"><img class='pick' id="{$collName}:{@nodeID}" src="interfaces/default/images/berry3.png" alt="in basket" width="15" height="15" border="0"/></td>
59  </xsl:template>
60 
61  <xsl:template name="basketCheckout">
62    <script type="text/javascript">
63      <xsl:text disable-output-escaping="yes">
64      //used to stored the current items in berrybasket, including collection name, document id and dodument title
65      //in the format of collection:id:[title], it is updated when the page is loaded (reloaded) or the user adds
66      // new items in the berry basket (see ygDDplayer.js). It is used to show the contents of the berry basket.
67     var berryList =  new Array();
68     var show = false;   
69 
70     // the default width and height of the berry basket
71     var oldHeight=90;
72     var oldWidth=140;
73     var oldBg;
74
75     var dd = new ygDDOnTop('berrybasket');
76     dd.setHandleElId('baskethandle');
77
78     var checkout = function(){
79       var request_type = "GET";
80       var url = "?a=pr&amp;amp;rt=r&amp;amp;ro=1&amp;amp;s=ItemNum&amp;amp;o=XML&amp;amp;c=";
81 
82         var responseSuccess = function(o){
83         var response = o.responseXML;
84             var size = response.getElementsByTagName('size').item(0).getAttribute('value');       
85           
86             var items = response.getElementsByTagName('item');
87             
88             for (var i=0;i &lt; items.length ; i++ ){
89 
90                 // remove berries images from if the berry basket has already contains this item 
91               
92                 var itemID = items[i].getAttribute('collection')+":"+items[i].getAttribute('name');
93                 var item =  YAHOO.util.Dom.get(itemID);
94                 if (item != null){
95                    var parent = item.parentNode;
96                    parent.removeChild(item);
97                   
98                   if (parent !=null &amp;amp;&amp;amp; parent.id == "documentberries"){
99                         var root = YAHOO.util.Dom.get(itemID+":root");
100                         var section = YAHOO.util.Dom.get(itemID+":section");
101                         if(root!=null &amp;amp;&amp;amp; root.id.indexOf(itemID) !=-1){
102                             parent.removeChild(root);
103                          }
104     
105                      if(section!=null &amp;amp;&amp;amp; section.id.indexOf(itemID) !=-1){
106                             parent.removeChild(section);
107                      }
108                     
109                         
110                     }
111                 }
112                               
113                  berryList[berryList.length] = items[i];                       
114          }
115
116               //add berryimage into the berry basket
117                updateBerryImages();         
118             
119                // set berries images visible
120             // they are set to be invisible to prevent flickering when first loaded (see berry.css)
121           
122             var berries =document.getElementsByTagName('img');
123         var berrybasket = new YAHOO.util.DDTarget('berrybasket','basket');
124           
125             for (var j=0; j &lt; berries.length; j++){
126         
127                  var berry = berries[j];
128                   var parent = berry.parentNode;
129                   
130                   
131                   if (parent !=null &amp;amp;&amp;amp; parent.id == "documentberries"){
132                         var root = YAHOO.util.Dom.get(berry.id+":root");
133                         var section = YAHOO.util.Dom.get(berry.id+":section");
134                         if(root!=null &amp;amp;&amp;amp; root.id.indexOf(berry.id) !=-1){
135                             root.style.visibility ="visible" ;
136                          }
137     
138                      if(section!=null &amp;amp;&amp;amp; section.id.indexOf(berry.id) !=-1){
139                             section.style.visibility ="visible" ;
140                      }
141                     
142                         
143                     } 
144
145               if (berry.className  &amp;amp;&amp;amp;  berry.className  == 'pick')
146                  {
147                    berry.style.visibility = "visible";
148                    new ygDDPlayer(berry.id,'basket',berryList);
149                  }   
150             
151             }
152           
153           }
154
155         var responseFailure = function(o){
156             
157          } 
158
159        var callback = {
160        success: responseSuccess,
161        failure: responseFailure
162      }
163
164      YAHOO.util.Connect.asyncRequest(request_type , url , callback);
165   }
166
167    function updateBerryImages(){
168     
169      for (var i =0;i &lt; berryList.length &amp;amp;&amp;amp; i &lt;12 ; i++ ){
170               var berries = YAHOO.util.Dom.get('berries');
171               var img = document.createElement('img');
172               img.src = 'interfaces/default/images/berry3.png';
173               img.height = 15;
174               img.width = 15;
175               img.border = 0;             
176               berries.appendChild(img);
177          }
178
179    }
180
181    function basketUpdate(e) {
182        var target = e.target;
183               
184        if ((target.id.toLowerCase() == 'berrybasket' || target.id.toLowerCase() == 'berries')  &amp;amp;&amp;amp; !show){
185                showBasket();
186                    show = true;
187                }
188                else{
189                    if (target.id.toLowerCase() == 'hideview' &amp;amp;&amp;amp; show){
190                       hideBasket();
191                       show = false;
192                    }
193                }
194           
195            if (target.className == 'pick'){
196              addBerry(target);
197            }
198           
199        }
200
201     function showBasket() {
202        var berryBasket  = YAHOO.util.Dom.get('berrybasket'); 
203        var basketHandle = YAHOO.util.Dom.get('baskethandle');
204        var berries = YAHOO.util.Dom.get('berries');   
205        var div = document.createElement('div');
206        var list = document.createElement('ol');
207        var width = 500;
208        var height = 40;
209        var i=0;
210 
211        list.id = 'doclist';
212     
213       //remove berryImages in the berry basket
214       while (berries.hasChildNodes()) {
215          berries.removeChild(berries.firstChild);
216    }
217
218       while (basketHandle.hasChildNodes()) {
219          basketHandle.removeChild(basketHandle.firstChild);
220    }
221
222       for (i in berryList){
223            var berryItem = berryList[i];
224            var berryElement = document.createElement('li');
225            var title = berryItem.getAttribute('title');
226            var root_title = berryItem.getAttribute('root_title');
227            var id = berryItem.getAttribute('collection')+":"+berryItem.getAttribute('name');
228
229            if (root_title != ""){
230              root_title +=":";
231            }
232       
233            title = root_title+title;   
234            if (title.length > 50){
235               title = title.substring(0,20)+" ... "+title.substr(title.length-35,35);
236             }
237 
238            berryElement.appendChild(document.createTextNode(title));
239            berryElement.setAttribute("class","berryitem");
240            list.appendChild(berryElement);
241            height +=18;
242          }
243           
244        oldHeight = berryBasket.style.height;
245        oldWidth = berryBasket.style.width;
246        oldBg = berryBasket.style.background;
247        berryBasket.style.height = height;
248        berryBasket.style.width = width;
249        berryBasket.style.background ='url("interfaces/default/images/kete2.png") 0 0 repeat';
250        berryBasket.style.cursor = "default";         
251        berryBasket.className = "show";
252        div.appendChild(list); 
253        berries.appendChild(div); 
254        berries.style.height = height - 40;
255
256        var links = document.createElement('div');
257        var hideView = document.createElement('a');
258        var fullView = document.createElement('a');
259        links.appendChild(hideView);
260        links.appendChild(fullView);
261        basketHandle.appendChild(links);
262        hideView.appendChild(document.createTextNode("Hide"));
263        fullView.appendChild(document.createTextNode("Full View"));
264        hideView.setAttribute("id","hideview");
265        fullView.setAttribute("href","?a=g&amp;amp;sa=berry&amp;amp;c=&amp;amp;s=DisplayList&amp;amp;rt=r");
266        fullView.setAttribute("class","fullview");
267
268        }
269
270      function hideBasket() {
271          var i = 0;
272          var berryBasket  = YAHOO.util.Dom.get('berrybasket'); 
273          var basketHandle  = YAHOO.util.Dom.get('baskethandle');
274          var berries = YAHOO.util.Dom.get('berries');
275          berryBasket.style.height = oldHeight;
276          berryBasket.style.width = oldWidth;
277          berryBasket.style.background = oldBg;
278          berryBasket.style.cursor = "pointer";
279          berryBasket.className = "hide";
280
281          while (berries.hasChildNodes()) {
282        berries.removeChild(berries.firstChild);
283    }
284         
285        while (basketHandle.hasChildNodes()) {
286        basketHandle.removeChild(basketHandle.firstChild);
287    }
288         
289        updateBerryImages();
290      }   
291
292
293     function addBerry(el){
294      var  addurl = "?a=pr&amp;amp;rt=r&amp;amp;ro=1&amp;amp;s=AddItem&amp;amp;c=&amp;amp;s1.id=2&amp;amp;o=XML&amp;amp;s1.item=" + el.id;     
295      var addSuccess = function(o){
296         var result = o.responseXML;
297                 var items = result.getElementsByTagName('item');
298                 if (items.length &gt; 0){
299                    var item = items[0];
300                    var berrybasket = YAHOO.util.Dom.get('berrybasket');
301                var berries = YAHOO.util.Dom.get('berries');
302                    berryList[berryList.length]= item;   
303                    var parent =el.parentNode;
304                    if (parent == null) return;     
305                    parent.removeChild(el);
306               
307                     var itemID = item.getAttribute('collection')+":"+item.getAttribute('name');
308                    if (parent !=null  &amp;amp;&amp;amp; parent.id == "documentberries"){
309                         var root = YAHOO.util.Dom.get(itemID+":root");
310                         var section = YAHOO.util.Dom.get(itemID+":section");
311                         if(root!=null  &amp;amp;&amp;amp; root.id.indexOf(itemID) !=-1){
312                             parent.removeChild(root);
313                          }
314     
315                      if(section!=null  &amp;amp;&amp;amp; section.id.indexOf(itemID) !=-1){
316                             parent.removeChild(section);
317                      }                                               
318                     }
319
320                    if (!YAHOO.util.Dom.get('hideview') &amp;amp;&amp;amp;  berryList.length &lt; 13){
321                      while (berries.hasChildNodes()) {
322                           berries.removeChild(berries.firstChild);
323                    }
324                       
325                     for (var i =0; i &lt; berryList.length; i++ ){
326                             var img = document.createElement('img');
327                              img.src = 'interfaces/default/images/berry3.png';
328                              img.height = 15;
329                              img.width = 15;
330                              img.border = 0;             
331                              berries.appendChild(img);
332                       }
333                   
334                                                     
335              }
336                 else{
337           
338                  if (YAHOO.util.Dom.get('hideview')){
339                        var berryBasket  = YAHOO.util.Dom.get('berrybasket');
340                        var berries  = YAHOO.util.Dom.get('berries');
341                        var doclist = YAHOO.util.Dom.get('doclist');
342                        var tid = el.id;                                 
343                        var berryItem;
344                        var berryElement = document.createElement('li');
345                         for (var i in berryList){
346                             berryItem = berryList[i];
347                             var id = berryItem.getAttribute('collection')+":"+berryItem.getAttribute('name');
348                             if (id == tid){
349                               var title = berryItem.getAttribute('title');
350                               var root_title = berryItem.getAttribute('root_title'); 
351                                if (root_title != ""){
352                                      root_title +=":";
353                                     }
354       
355                                title = root_title+title;   
356                                if (title.length > 50){
357                                   title = title.substring(0,20)+" ... "+title.substr(title.length-35,35);
358                                }
359           
360                               berryElement.appendChild(document.createTextNode(title));
361                               berryElement.setAttribute("class","berryitem");
362                               doclist.appendChild(berryElement);
363                               var heightStr =  berryBasket.style.height+"";
364                               var height =parseInt(heightStr.substring(0,heightStr.length-2)) +18;                             
365                               berryBasket.style.height = height;
366                               berries.style.height = height;
367                               break;
368                            }
369                         }
370                             
371                      }
372                   
373                 }
374               }
375                                       
376             }
377
378           var addFailure = function(o){ }
379
380           var addcallback = {
381               success:addSuccess,
382                   failure:addFailure
383                }
384
385            YAHOO.util.Connect.asyncRequest(request_type , addurl , addcallback);   
386
387         }
388
389 
390     
391     YAHOO.util.Event.addListener(window,'load', checkout);
392     YAHOO.util.Event.addListener(window,'click', basketUpdate);
393      </xsl:text>
394    </script>
395  </xsl:template>
396
397  <xsl:template name="berryStyleSheet">
398    <link rel="stylesheet" href="interfaces/default/style/berry.css" type="text/css"/> 
399  </xsl:template>
400 
401</xsl:stylesheet>
Note: See TracBrowser for help on using the browser.