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

Last change on this file since 31432 was 30772, checked in by kjdon, 8 years ago

removing hard coded text fragments from xsl/js files

File size: 11.1 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 = gs.xsltParams.library_name + "?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/default/images/berry.png';
116 berries.appendChild(img);
117 }
118
119 //show/hide the help message depending if there are berries or not
120 var help_elem = YAHOO.util.Dom.get('berryHelpMsg');
121
122 if ( berryList.length == 0 ) {
123 help_elem.style.display='block';
124 } else {
125 help_elem.style.display='none';
126 }
127
128 //show the expand buttons
129 correctBerryExpandCollapseButtons();
130
131}
132
133function correctBerryExpandCollapseButtons() {
134 var bbecl = YAHOO.util.Dom.get('berryBasketExpandCollapseLinks');
135 if ( bbecl == null ) return;
136 if ( berryList.length > 0 ) {
137 YAHOO.util.Dom.get('berryBasketExpandCollapseLinks').style.display='';
138 } else {
139 YAHOO.util.Dom.get('berryBasketExpandCollapseLinks').style.display='none';
140 }
141}
142
143function updateBerryCount() {
144 var berries = YAHOO.util.Dom.get('berries');
145 var berryCountElement = YAHOO.util.Dom.get('berryBasketCount');
146 if ( berries == null || berryCountElement == null ) return;
147 if ( berryList.length == 0 ) {
148 berryCountElement.innerHTML = "empty";
149 } else {
150 berryCountElement.innerHTML = berryList.length;
151 }
152}
153
154function basketUpdate(e) {
155//alert( arguments.callee );
156 var target = e.target;
157 if ((target.id.toLowerCase() == 'berrybasket' || target.id.toLowerCase() == 'berries') && !show){
158 showBasket();
159 show = true;
160 }else{
161 if (target.id.toLowerCase() == 'hideview' && show){
162 hideBasket();
163 show = false;
164 }
165 }
166
167 if (target.className == 'pick'){
168 addBerry(target);
169 }
170}
171
172function showBasket() {
173//alert( arguments.callee );
174 var berryBasket = YAHOO.util.Dom.get('berrybasket');
175 var basketHandle = YAHOO.util.Dom.get('baskethandle');
176 var berries = YAHOO.util.Dom.get('berries');
177 var width = 500;
178 var height = 40;
179 var i=0;
180
181 //remove berryImages in the berry basket
182 while (berries.hasChildNodes()) {
183 berries.removeChild(berries.firstChild);
184 }
185 while (basketHandle.hasChildNodes()) {
186 basketHandle.removeChild(basketHandle.firstChild);
187 }
188
189 var div = document.createElement('div');
190 berries.appendChild(div);
191 var list = document.createElement('ol');
192 div.appendChild(list);
193
194 list.id = 'doclist';
195
196 //put the berries in
197 for (i; i < berryList.length; i++){
198 var berryItem = berryList[i];
199 var berryElement = document.createElement('li');
200 list.appendChild(berryElement);
201 var title = berryItem.getAttribute('title');
202 var root_title = berryItem.getAttribute('root_title');
203 //var id = berryItem.getAttribute('collection')+":"+berryItem.getAttribute('name');
204
205 if (root_title != ""){
206 root_title +=":";
207 }
208
209 title = root_title+title;
210 title += " ("+berryItem.getAttribute('collection')+")";
211 if (title.length > 76){
212 title = title.substring(0,30)+" ... "+title.substr(title.length-45,45);
213 }
214
215 berryElement.setAttribute("class","berryitem");
216 berryElement.setAttribute("title",title);
217 berryElement.innerHTML = title;
218 height +=40;
219 }
220
221 oldHeight = berryBasket.style.height;
222 oldWidth = berryBasket.style.width;
223 oldBg = berryBasket.style.background;
224
225 berryBasket.style.background ='url("interfaces/default/images/kete2.png") 0 0 repeat';
226 berryBasket.style.cursor = "default";
227 berryBasket.className = "show";
228
229 //set url and show full view link
230 var fullView = YAHOO.util.Dom.get('berryFullViewLink');
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.setAttribute("href",gs.xsltParams.library_name + "?a=g&sa=berry&c=&s=DisplayList&rt=r&p.c=" + collectionName);
246 fullView.style.display='block';
247
248 //toggle expand/collapse links
249 var expandLink = YAHOO.util.Dom.get('berryBasketExpandLink');
250 var collapseLink = YAHOO.util.Dom.get('berryBasketCollapseLink');
251 if ( expandLink != null && collapseLink != null ) {
252 expandLink.style.display = 'none';
253 collapseLink.style.display = '';
254 }
255
256}
257
258function hideBasket() {
259//alert( arguments.callee );
260 var i = 0;
261 var berryBasket = YAHOO.util.Dom.get('berrybasket');
262 var basketHandle = YAHOO.util.Dom.get('baskethandle');
263 var berries = YAHOO.util.Dom.get('berries');
264 berryBasket.style.height = oldHeight;
265 berryBasket.style.width = oldWidth;
266 berryBasket.style.background = oldBg;
267 berryBasket.style.cursor = "pointer";
268 berryBasket.className = "hide";
269
270 while (berries.hasChildNodes()) {
271 berries.removeChild(berries.firstChild);
272 }
273
274 while (basketHandle.hasChildNodes()) {
275 basketHandle.removeChild(basketHandle.firstChild);
276 }
277
278 updateBerryImages();
279 //updateBerryCount();
280
281 //toggle expand/collapse links
282 var expandLink = YAHOO.util.Dom.get('berryBasketExpandLink');
283 var collapseLink = YAHOO.util.Dom.get('berryBasketCollapseLink');
284 if ( expandLink != null && collapseLink != null ) {
285 expandLink.style.display = '';
286 collapseLink.style.display = 'none';
287 }
288 // hide full view link
289 var fullView = YAHOO.util.Dom.get('berryFullViewLink');
290 fullView.style.display='none';
291}
292
293
294function addBerry(el){
295 var addurl = gs.xsltParams.library_name + "?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;
296
297 var addSuccess = function(o){
298 var result = o.responseXML;
299 var items = result.getElementsByTagName('item');
300
301 if (items.length < 0){
302
303 var item = items[0];
304 var berrybasket = YAHOO.util.Dom.get('berrybasket');
305 var berries = YAHOO.util.Dom.get('berries');
306 berryList[berryList.length]= item;
307 var parent =el.parentNode;
308 if (parent == null) return;
309 parent.removeChild(el);
310 var itemID = item.getAttribute('collection')+":"+item.getAttribute('name');
311 if (parent !=null && parent.id == "documentberries"){
312
313 var root = YAHOO.util.Dom.get(itemID+":root");
314 var section = YAHOO.util.Dom.get(itemID+":section");
315
316 if(root!=null && root.id.indexOf(itemID) !=-1){
317 parent.removeChild(root);
318 }
319
320 if(section!=null && section.id.indexOf(itemID) !=-1){
321 parent.removeChild(section);
322 }
323
324 }
325
326 if (!YAHOO.util.Dom.get('hideview') && berryList.length < 13){
327
328 while (berries.hasChildNodes()) {
329 berries.removeChild(berries.firstChild);
330 }
331
332 for (var i =0; i < berryList.length; i++ ){
333 var img = document.createElement('img');
334 img.src = 'interfaces/default/images/berry.png';
335 berries.appendChild(img);
336 }
337
338 } else {
339
340 if (YAHOO.util.Dom.get('hideview')){
341 var berryBasket = YAHOO.util.Dom.get('berrybasket');
342 var berries = YAHOO.util.Dom.get('berries');
343 var doclist = YAHOO.util.Dom.get('doclist');
344 var tid = el.id;
345 var berryItem;
346 var berryElement = document.createElement('li');
347
348 for (var i in berryList){
349 berryItem = berryList[i];
350 var id = berryItem.getAttribute('collection')+":"+berryItem.getAttribute('name');
351
352 if (id == tid){
353 var title = berryItem.getAttribute('title');
354 var root_title = berryItem.getAttribute('root_title');
355 if (root_title != ""){
356 root_title +=":";
357 }
358
359 title = root_title+title;
360 if (title.length > 50){
361 title = title.substring(0,20)+" ... "+title.substr(title.length-35,35);
362 }
363
364 berryElement.appendChild(document.createTextNode(title));
365 berryElement.setAttribute("class","berryitem");
366 doclist.appendChild(berryElement);
367 var heightStr = berryBasket.style.height+"";
368 var height =parseInt(heightStr.substring(0,heightStr.length-2)) +18;
369 berryBasket.style.height = height;
370 berries.style.height = height;
371 break;
372 }
373
374 }
375
376 }
377
378 }
379 }
380 }
381
382 var addFailure = function(o){
383 }
384
385 var addcallback = {
386 success:addSuccess,
387 failure:addFailure
388 }
389
390 YAHOO.util.Connect.asyncRequest(request_type , addurl , addcallback);
391}
392
393YAHOO.util.Event.addListener(window, 'load', checkout);
394//YAHOO.util.Event.addListener(window, 'click', basketUpdate);
395
396
397
Note: See TracBrowser for help on using the repository browser.