source: main/trunk/greenstone3/web/interfaces/basic/transform/berrytools.xsl@ 32127

Last change on this file since 32127 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: 16.6 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: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/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>
31 </xsl:when>
32 <xsl:otherwise>
33 <p id="documentberries">
34 <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>
35 </xsl:otherwise>
36 </xsl:choose>
37 </xsl:template>
38
39
40 <xsl:template name="loadLibrary">
41 <script type="text/javascript" src="interfaces/basic/js/YAHOO.js"><xsl:text disable-output-escaping="yes"> </xsl:text></script>
42 <script type="text/javascript" src="interfaces/basic/js/event.js"><xsl:text disable-output-escaping="yes"> </xsl:text></script>
43 <script type="text/javascript" src="interfaces/basic/js/connection.js"><xsl:text disable-output-escaping="yes"> </xsl:text></script>
44 <script type="text/javascript" src="interfaces/basic/js/dom.js"><xsl:text disable-output-escaping="yes"> </xsl:text></script>
45 <script type="text/javascript" src="interfaces/basic/js/dragdrop.js"><xsl:text disable-output-escaping="yes"> </xsl:text></script>
46 <script type="text/javascript" src="interfaces/basic/js/ygDDPlayer.js"><xsl:text disable-output-escaping="yes"> </xsl:text></script>
47 <script type="text/javascript" src="interfaces/basic/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/basic/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/basic/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/basic/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/basic/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/basic/style/berry.css" type="text/css"/>
400 </xsl:template>
401
402</xsl:stylesheet>
Note: See TracBrowser for help on using the repository browser.