source: main/trunk/greenstone3/web/interfaces/default/js/berrybasket/berrybasket.js@ 33104

Last change on this file since 33104 was 33104, checked in by ak19, 5 years ago

Implemented the deleteAll for berrybaskets.

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