source: main/trunk/greenstone3/web/interfaces/default_old/js/berrybasket/berrybasket.js@ 29861

Last change on this file since 29861 was 29861, checked in by Georgiy Litvinov, 9 years ago

renamed interfaces

File size: 11.2 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 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 title += " ("+berryItem.getAttribute('collection')+")";
210 if (title.length > 76){
211 title = title.substring(0,30)+" ... "+title.substr(title.length-45,45);
212 }
213
214 berryElement.setAttribute("class","berryitem");
215 berryElement.setAttribute("title",title);
216 berryElement.innerHTML = title;
217 height +=40;
218 }
219
220 oldHeight = berryBasket.style.height;
221 oldWidth = berryBasket.style.width;
222 oldBg = berryBasket.style.background;
223
224 berryBasket.style.background ='url("interfaces/default/images/kete2.png") 0 0 repeat';
225 berryBasket.style.cursor = "default";
226 berryBasket.className = "show";
227
228 //put the full view link in
229 var fullView = document.createElement('a');
230 berries.appendChild(fullView);
231
232 //Find the collection in the cgi parameters
233 var url = window.location.href;
234 var colstart = url.indexOf("&c=");
235 var collectionName = "";
236 if (colstart != -1)
237 {
238 var colend = url.indexOf("&", (colstart + 1));
239 if (colend == -1)
240 {
241 colend = url.length - 1;
242 }
243 collectionName = url.substring(colstart + 3, colend);
244 }
245
246 fullView.appendChild(document.createTextNode('Full View »'));
247 fullView.setAttribute("href",gs.xsltParams.library_name + "?a=g&sa=berry&c=&s=DisplayList&rt=r&p.c=" + collectionName);
248 fullView.setAttribute("id","berryFullViewLink");
249
250 //toggle expand/collapse links
251 var expandLink = YAHOO.util.Dom.get('berryBasketExpandLink');
252 var collapseLink = YAHOO.util.Dom.get('berryBasketCollapseLink');
253 if ( expandLink != null && collapseLink != null ) {
254 expandLink.style.display = 'none';
255 collapseLink.style.display = '';
256 }
257
258}
259
260function hideBasket() {
261//alert( arguments.callee );
262 var i = 0;
263 var berryBasket = YAHOO.util.Dom.get('berrybasket');
264 var basketHandle = YAHOO.util.Dom.get('baskethandle');
265 var berries = YAHOO.util.Dom.get('berries');
266 berryBasket.style.height = oldHeight;
267 berryBasket.style.width = oldWidth;
268 berryBasket.style.background = oldBg;
269 berryBasket.style.cursor = "pointer";
270 berryBasket.className = "hide";
271
272 while (berries.hasChildNodes()) {
273 berries.removeChild(berries.firstChild);
274 }
275
276 while (basketHandle.hasChildNodes()) {
277 basketHandle.removeChild(basketHandle.firstChild);
278 }
279
280 updateBerryImages();
281 //updateBerryCount();
282
283 //toggle expand/collapse links
284 var expandLink = YAHOO.util.Dom.get('berryBasketExpandLink');
285 var collapseLink = YAHOO.util.Dom.get('berryBasketCollapseLink');
286 if ( expandLink != null && collapseLink != null ) {
287 expandLink.style.display = '';
288 collapseLink.style.display = 'none';
289 }
290
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.