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

Last change on this file since 19854 was 19854, checked in by oranfry, 15 years ago

reorganised javascript for the new interface

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