Changeset 36071 for main/trunk/greenstone3/web/interfaces/default/js/favouritebasket/favouritebasket.js
- Timestamp:
- 2022-02-22T13:57:30+13:00 (2 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
main/trunk/greenstone3/web/interfaces/default/js/favouritebasket/favouritebasket.js
r36069 r36071 1 //used to stored the current items in b errybasket, including collection name, document id and dodument title1 //used to stored the current items in basket, including collection name, document id and dodument title 2 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 3 // new items in the basket (see ygDDplayer.js). It is used to show the contents of the basket. 4 5 // note we only support favourites now, not the old drag and drop berry baskets 6 // berry is still used here for legacy reasons 5 7 var berryList = new Array(); 6 8 var show = false; 7 9 8 // the default width and height of the berry basket 9 var oldHeight=90; 10 var oldWidth=140; 11 var oldBg; 12 13 var dd = new ygDDOnTop('berrybasket'); 14 dd.setHandleElId('baskethandle'); 15 16 var countBerries = function(callback) { 17 18 var request_type = "GET"; 10 11 var countFavourites = function(callback) { 12 var request_type = "GET"; 19 13 var url = gs.xsltParams.library_name + "?a=pr&rt=r&ro=1&s=ItemNum&o=XML&hhf="+makeURLComponentSafe("[{\"name\":\"Cache-Control\", \"value\":\"no-cache\"}]")+"&c="; 20 14 … … 30 24 31 25 YAHOO.util.Connect.asyncRequest(request_type , url , {success: responseSuccess }); 32 } 33 34 35 var countFavourites = function(callback) { 36 // identical AJAX call to countBerries() 37 return countBerries(callback); 38 } 39 40 41 // adds berries onto page 42 var berryCheckout = function(){ 26 27 } 28 29 30 // display selected favourites (filled-in star icon) on page 31 var favouritesCheckout = function(){ 43 32 44 33 if ( document.getElementById('berrybasket') == null ) return; … … 57 46 for (var i=0;i < items.length ; i++ ){ 58 47 59 // remove berries images from if the berry basket has already contains this item60 48 var itemID = items[i].getAttribute('collection')+":"+items[i].getAttribute('name'); 61 49 var item = YAHOO.util.Dom.get(itemID); 50 62 51 if (item != null){ 63 var parent = item.parentNode; 64 parent.removeChild(item); 65 if (parent !=null && parent.id == "documentberries"){ 66 var root = YAHOO.util.Dom.get(itemID+":root"); 67 var section = YAHOO.util.Dom.get(itemID+":section"); 68 69 if(root!=null && root.id.indexOf(itemID) !=-1){ 70 parent.removeChild(root); 71 } 72 73 if(section!=null && section.id.indexOf(itemID) !=-1){ 74 parent.removeChild(section); 75 } 76 } 52 item.src = gs.variables.selected_favourite_icon_url; 53 item.setAttribute("data-is-favourite","true"); 77 54 } 78 55 berryList[berryList.length] = items[i]; 79 56 } 80 57 81 //add berryimage into the berry basket 82 updateBerryImages(); 83 84 // set berries images visible 58 // set favourite images visible 85 59 // they are set to be invisible to prevent flickering when first loaded (see berry.css) 86 60 87 61 var berries = document.getElementsByTagName('img'); 88 var berrybasket = new YAHOO.util.DDTarget('berrybasket','basket');89 62 90 63 for (var j=0; j < berries.length; j++){ … … 105 78 if (berry.className && berry.className == 'pick'){ 106 79 berry.style.visibility = "visible"; 107 new ygDDPlayer(berry.id,'basket',berryList);108 }109 }110 //updateBerryCount();111 correctBerryExpandCollapseButtons();112 }113 114 var responseFailure = function(o){115 console.error("Berry Basket GetItems AJAX call failed:" + url);116 }117 118 var callback = {119 success: responseSuccess,120 failure: responseFailure121 }122 123 //var date = new Date();124 //url += "&rand=" + date.getTime();125 YAHOO.util.Connect.asyncRequest(request_type , url , callback);126 }127 128 // display selected favourites (filled-in star icon) on page129 var favouritesCheckout = function(){130 131 if ( document.getElementById('berrybasket') == null ) return;132 133 var request_type = "GET";134 var url = gs.xsltParams.library_name + "?a=pr&rt=r&ro=1&s=ItemNum&o=XML&hhf="+makeURLComponentSafe("[{\"name\":\"Cache-Control\", \"value\":\"no-cache\"}]")+"&c=";135 136 var responseSuccess = function(o){137 138 var response = o.responseXML;139 var size = response.getElementsByTagName('size').item(0).getAttribute('value');140 141 var items = response.getElementsByTagName('item');142 143 berryList = new Array();144 for (var i=0;i < items.length ; i++ ){145 146 var itemID = items[i].getAttribute('collection')+":"+items[i].getAttribute('name');147 var item = YAHOO.util.Dom.get(itemID);148 149 if (item != null){150 item.src = gs.variables.selected_favourite_icon_url;151 item.setAttribute("data-is-favourite","true");152 }153 berryList[berryList.length] = items[i];154 }155 156 // set favourite images visible157 // they are set to be invisible to prevent flickering when first loaded (see berry.css)158 159 var berries = document.getElementsByTagName('img');160 161 for (var j=0; j < berries.length; j++){162 var berry = berries[j];163 var parent = berry.parentNode;164 if (parent !=null && parent.id == "documentberries"){165 var root = YAHOO.util.Dom.get(berry.id+":root");166 var section = YAHOO.util.Dom.get(berry.id+":section");167 if(root!=null && root.id.indexOf(berry.id) !=-1){168 root.style.visibility ="visible" ;169 }170 171 if(section!=null && section.id.indexOf(berry.id) !=-1){172 section.style.visibility ="visible" ;173 }174 }175 176 if (berry.className && berry.className == 'pick'){177 berry.style.visibility = "visible";178 80 // new ygDDPlayer(berry.id,'basket',berryList); // **** can go 179 81 } … … 197 99 198 100 199 function updateBerryImages(){200 201 var berries = YAHOO.util.Dom.get('berries');202 if ( berries == null ) return;203 204 while(berries.hasChildNodes())205 {206 berries.removeChild(berries.firstChild);207 }208 209 for (var i =0;i < berryList.length && i<12 ; i++ ){210 var img = document.createElement('img');211 img.src = berry_icon;212 berries.appendChild(img);213 }214 215 //show/hide the help message depending if there are berries or not216 var help_elem = YAHOO.util.Dom.get('berryHelpMsg');217 218 if ( berryList.length == 0 ) {219 help_elem.style.display='block';220 } else {221 help_elem.style.display='none';222 }223 224 //show the expand buttons225 correctBerryExpandCollapseButtons();226 227 }228 229 function correctBerryExpandCollapseButtons() {230 var bbecl = YAHOO.util.Dom.get('berryBasketExpandCollapseLinks');231 if ( bbecl == null ) return;232 if ( berryList.length > 0 ) {233 YAHOO.util.Dom.get('berryBasketExpandCollapseLinks').style.display='';234 } else {235 YAHOO.util.Dom.get('berryBasketExpandCollapseLinks').style.display='none';236 }237 }238 239 function updateBerryCount() {240 var berries = YAHOO.util.Dom.get('berries');241 var berryCountElement = YAHOO.util.Dom.get('berryBasketCount');242 if ( berries == null || berryCountElement == null ) return;243 if ( berryList.length == 0 ) {244 berryCountElement.innerHTML = "empty";245 } else {246 berryCountElement.innerHTML = berryList.length;247 }248 }249 101 250 102 function updateFavouritesCount() { … … 258 110 } 259 111 260 function basketUpdate(e) {261 262 var target = e.target;263 if ((target.id.toLowerCase() == 'berrybasket' || target.id.toLowerCase() == 'berries') && !show){264 showBasket();265 show = true;266 }else{267 if (target.id.toLowerCase() == 'hideview' && show){268 hideBasket();269 show = false;270 }271 }272 273 if (target.className == 'pick'){274 addBerry(target);275 }276 }277 278 function showBasket() {279 280 var berryBasket = YAHOO.util.Dom.get('berrybasket');281 var basketHandle = YAHOO.util.Dom.get('baskethandle');282 var berries = YAHOO.util.Dom.get('berries');283 var width = 500;284 var height = 40;285 var i=0;286 287 //remove berryImages in the berry basket288 while (berries.hasChildNodes()) {289 berries.removeChild(berries.firstChild);290 }291 while (basketHandle.hasChildNodes()) {292 basketHandle.removeChild(basketHandle.firstChild);293 }294 295 var div = document.createElement('div');296 berries.appendChild(div);297 var list = document.createElement('ol');298 div.appendChild(list);299 300 list.id = 'doclist';301 302 //put the berries in303 for (i; i < berryList.length; i++){304 var berryItem = berryList[i];305 var berryElement = document.createElement('li');306 list.appendChild(berryElement);307 308 var title = berryTitle(berryItem);309 berryElement.setAttribute("class","berryitem");310 berryElement.setAttribute("title",title);311 berryElement.innerHTML = title;312 height +=40;313 }314 315 oldHeight = berryBasket.style.height;316 oldWidth = berryBasket.style.width;317 oldBg = berryBasket.style.background;318 319 berryBasket.style.background ='url("interfaces/default/images/kete2.png") 0 0 repeat';320 berryBasket.style.cursor = "default";321 berryBasket.className = "show";322 323 //set url and show full view link324 var fullView = YAHOO.util.Dom.get('berryFullViewLink');325 //Find the collection in the cgi parameters326 var url = window.location.href;327 var colstart = url.indexOf("&c=");328 var collectionName = "";329 if (colstart != -1)330 {331 var colend = url.indexOf("&", (colstart + 1));332 if (colend == -1)333 {334 colend = url.length - 1;335 }336 collectionName = url.substring(colstart + 3, colend);337 }338 339 fullView.setAttribute("href",gs.xsltParams.library_name + "?a=g&sa=berry&c=&s=DisplayList&rt=r&p.c=" + collectionName);340 fullView.style.display='block';341 342 //toggle expand/collapse links343 var expandLink = YAHOO.util.Dom.get('berryBasketExpandLink');344 var collapseLink = YAHOO.util.Dom.get('berryBasketCollapseLink');345 if ( expandLink != null && collapseLink != null ) {346 expandLink.style.display = 'none';347 collapseLink.style.display = '';348 }349 350 }351 352 function berryTitle(berryItem) {353 354 var title = berryItem.getAttribute('Title');355 var root_title = berryItem.getAttribute('root_Title');356 //var id = berryItem.getAttribute('collection')+":"+berryItem.getAttribute('name');357 358 if (root_title != null){359 title = root_title+":"+title;360 }361 title += " ("+berryItem.getAttribute('collection')+")";362 if (title.length > 76){363 title = title.substring(0,30)+" ... "+title.substr(title.length-45,45);364 }365 366 return title;367 }368 369 function hideBasket() {370 var i = 0;371 var berryBasket = YAHOO.util.Dom.get('berrybasket');372 var basketHandle = YAHOO.util.Dom.get('baskethandle');373 var berries = YAHOO.util.Dom.get('berries');374 berryBasket.style.height = oldHeight;375 berryBasket.style.width = oldWidth;376 berryBasket.style.background = oldBg;377 berryBasket.style.cursor = "pointer";378 berryBasket.className = "hide";379 380 while (berries.hasChildNodes()) {381 berries.removeChild(berries.firstChild);382 }383 384 while (basketHandle.hasChildNodes()) {385 basketHandle.removeChild(basketHandle.firstChild);386 }387 388 updateBerryImages();389 //updateBerryCount();390 391 //toggle expand/collapse links392 var expandLink = YAHOO.util.Dom.get('berryBasketExpandLink');393 var collapseLink = YAHOO.util.Dom.get('berryBasketCollapseLink');394 if ( expandLink != null && collapseLink != null ) {395 expandLink.style.display = '';396 collapseLink.style.display = 'none';397 }398 // hide full view link399 var fullView = YAHOO.util.Dom.get('berryFullViewLink');400 fullView.style.display='none';401 }402 403 404 function addBerry(el){405 var addurl = gs.xsltParams.library_name + "?a=pr&rt=r&ro=1&s=AddItem&c=&s1.id=2&o=XML&hhf="+makeURLComponentSafe("[{\"name\":\"Cache-Control\", \"value\":\"no-cache\"}]")+"&s1.item=" + el.id;406 407 var addSuccess = function(o){408 var result = o.responseXML;409 var items = result.getElementsByTagName('item');410 411 if (items.length < 0){412 413 var item = items[0];414 var berrybasket = YAHOO.util.Dom.get('berrybasket');415 var berries = YAHOO.util.Dom.get('berries');416 berryList[berryList.length]= item;417 var parent =el.parentNode;418 if (parent == null) return;419 parent.removeChild(el);420 var itemID = item.getAttribute('collection')+":"+item.getAttribute('name');421 if (parent !=null && parent.id == "documentberries"){422 423 var root = YAHOO.util.Dom.get(itemID+":root");424 var section = YAHOO.util.Dom.get(itemID+":section");425 426 if(root!=null && root.id.indexOf(itemID) !=-1){427 parent.removeChild(root);428 }429 430 if(section!=null && section.id.indexOf(itemID) !=-1){431 parent.removeChild(section);432 }433 434 }435 436 if (!YAHOO.util.Dom.get('hideview') && berryList.length < 13){437 438 while (berries.hasChildNodes()) {439 berries.removeChild(berries.firstChild);440 }441 442 for (var i =0; i < berryList.length; i++ ){443 var img = document.createElement('img');444 img.src = berry_icon;445 berries.appendChild(img);446 }447 448 } else {449 450 if (YAHOO.util.Dom.get('hideview')){451 var berryBasket = YAHOO.util.Dom.get('berrybasket');452 var berries = YAHOO.util.Dom.get('berries');453 var doclist = YAHOO.util.Dom.get('doclist');454 var tid = el.id;455 var berryItem;456 var berryElement = document.createElement('li');457 458 for (var i in berryList){459 berryItem = berryList[i];460 var id = berryItem.getAttribute('collection')+":"+berryItem.getAttribute('name');461 462 if (id == tid){463 var title = berryItem.getAttribute('Title');464 var root_title = berryItem.getAttribute('root_Title');465 if (root_title != null){466 467 title = root_title+":"+title;468 }469 if (title.length > 50){470 title = title.substring(0,20)+" ... "+title.substr(title.length-35,35);471 }472 473 berryElement.appendChild(document.createTextNode(title));474 berryElement.setAttribute("class","berryitem");475 doclist.appendChild(berryElement);476 var heightStr = berryBasket.style.height+"";477 var height =parseInt(heightStr.substring(0,heightStr.length-2)) +18;478 berryBasket.style.height = height;479 berries.style.height = height;480 break;481 }482 483 }484 485 }486 487 }488 }489 }490 491 var addFailure = function(o){492 }493 494 var addcallback = {495 success:addSuccess,496 failure:addFailure497 }498 499 YAHOO.util.Connect.asyncRequest(request_type , addurl , addcallback);500 }501 502 112 503 113 … … 505 115 var addurl = gs.xsltParams.library_name + "?a=pr&rt=r&ro=1&s=AddItem&c=&s1.id=2&o=XML&hhf="+makeURLComponentSafe("[{\"name\":\"Cache-Control\", \"value\":\"no-cache\"}]")+"&s1.item=" + el.id; 506 116 117 var request_type = "GET"; 507 118 var addSuccess = function(o){ 508 119 var result = o.responseXML;
Note:
See TracChangeset
for help on using the changeset viewer.