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

Revision 24007, 16.6 KB (checked in by sjm84, 9 years ago)

Updating this branch to match the latest Greenstone3 changes

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