source: main/branches/64_bit_Greenstone/greenstone3/web/interfaces/oran/js/berrybasket.js@ 24007

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

Updating this branch to match the latest Greenstone3 changes

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