source: main/trunk/greenstone3/web/interfaces/basic-client-xslt/transform/berrytools.xsl@ 25879

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

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

  • Property svn:keywords set to Author Date Id Revision
File size: 16.7 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 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/basic/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/basic/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/basic/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/basic/js/YAHOO.js"><xsl:text disable-output-escaping="yes"> </xsl:text></script>
41 <script type="text/javascript" src="interfaces/basic/js/event.js"><xsl:text disable-output-escaping="yes"> </xsl:text></script>
42 <script type="text/javascript" src="interfaces/basic/js/connection.js"><xsl:text disable-output-escaping="yes"> </xsl:text></script>
43 <script type="text/javascript" src="interfaces/basic/js/dom.js"><xsl:text disable-output-escaping="yes"> </xsl:text></script>
44 <script type="text/javascript" src="interfaces/basic/js/dragdrop.js"><xsl:text disable-output-escaping="yes"> </xsl:text></script>
45 <script type="text/javascript" src="interfaces/basic/js/ygDDPlayer.js"><xsl:text disable-output-escaping="yes"> </xsl:text></script>
46 <script type="text/javascript" src="interfaces/basic/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/basic/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/basic/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/basic/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/basic/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/basic/style/berry.css" type="text/css"/>
399 </xsl:template>
400
401</xsl:stylesheet>
Note: See TracBrowser for help on using the repository browser.