source: main/trunk/greenstone3/web/interfaces/oran/js/berrybasket/berrybasket.js@ 24054

Last change on this file since 24054 was 24054, checked in by sjm84, 13 years ago

Removing debug code

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