source: main/trunk/greenstone3/web/interfaces/oran/js/documentbasket/documentbasket.js@ 25070

Last change on this file since 25070 was 25070, checked in by sjm84, 12 years ago

Added a clear basket link to the document basket

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