Changeset 33259 for main

Show
Ignore:
Timestamp:
02.07.2019 11:32:34 (7 weeks ago)
Author:
davidb
Message:

Javascript code to implements favourites. Done in a way to be compatible with keeping the original berry-picking code functional also

Location:
main/trunk/greenstone3/web/interfaces/default/js
Files:
4 modified

Legend:

Unmodified
Added
Removed
  • main/trunk/greenstone3/web/interfaces/default/js/berrybasket/berrybasket.js

    r33252 r33259  
    3333 
    3434 
     35var countFavourites = function(callback) {  
     36    // identical AJAX call to countBerries() 
     37    return countBerries(callback); 
     38} 
     39 
     40 
    3541// adds berries onto page 
    36 var checkout = function(){ 
     42var berryCheckout = function(){ 
    3743 
    3844    if ( document.getElementById('berrybasket') == null ) return; 
     
    120126} 
    121127 
     128// display selected favourites (filled-in star icon) on page 
     129var 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 visible 
     157        // 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                // new ygDDPlayer(berry.id,'basket',berryList); // **** can go  
     179            } 
     180        } 
     181        updateFavouritesCount(); 
     182    } 
     183 
     184    var responseFailure = function(o){ 
     185        console.error("Berry Basket GetItems AJAX call failed:" + url); 
     186    } 
     187 
     188    var callback = { 
     189        success: responseSuccess, 
     190        failure: responseFailure 
     191    } 
     192 
     193    //var date = new Date(); 
     194    //url += "&rand=" + date.getTime(); 
     195    YAHOO.util.Connect.asyncRequest(request_type , url , callback); 
     196} 
     197 
     198 
    122199function updateBerryImages(){ 
    123200 
     
    171248} 
    172249 
     250function updateFavouritesCount() { 
     251    var favouritesCountElement = YAHOO.util.Dom.get('favouritesCountDisplay'); 
     252    if ( favouritesCountElement == null ) return; 
     253    if ( berryList.length == 0 ) { 
     254        favouritesCountElement.innerHTML = "(0)"; 
     255    } else { 
     256        favouritesCountElement.innerHTML = "(" + berryList.length + ")"; 
     257    } 
     258} 
     259 
    173260function basketUpdate(e) { 
    174 //alert( arguments.callee ); 
     261 
    175262    var target = e.target; 
    176263    if ((target.id.toLowerCase() == 'berrybasket' || target.id.toLowerCase() == 'berries') && !show){ 
     
    190277 
    191278function showBasket() { 
    192 //alert( arguments.callee ); 
     279 
    193280    var berryBasket = YAHOO.util.Dom.get('berrybasket'); 
    194281    var basketHandle = YAHOO.util.Dom.get('baskethandle'); 
     
    281368 
    282369function hideBasket() { 
    283 //alert( arguments.callee ); 
    284370    var i = 0; 
    285371    var berryBasket = YAHOO.util.Dom.get('berrybasket'); 
     
    414500} 
    415501 
    416 YAHOO.util.Event.addListener(window, 'load', checkout); 
     502 
     503 
     504function addFavourite(el){ 
     505    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 
     507    var addSuccess = function(o){ 
     508        var result = o.responseXML; 
     509        var items = result.getElementsByTagName('item'); 
     510 
     511        if (items.length > 0){ 
     512                // assumes that there is only 1 item to add 
     513            var item = items[0]; 
     514            berryList[berryList.length]= item; 
     515 
     516                    updateFavouritesCount(); 
     517        } 
     518 
     519    } 
     520 
     521    var addFailure = function(o){ 
     522    } 
     523 
     524    var addcallback = { 
     525        success:addSuccess, 
     526        failure:addFailure 
     527    } 
     528     
     529    YAHOO.util.Connect.asyncRequest(request_type , addurl , addcallback); 
     530} 
     531 
     532 
     533function deleteFavourite(el){ 
     534    var delurl = gs.xsltParams.library_name + "?a=pr&rt=r&ro=1&s=DeleteItems&c=&o=XML&hhf="+makeURLComponentSafe("[{\"name\":\"Cache-Control\", \"value\":\"no-cache\"}]")+"&s1.items=" + el.id; 
     535 
     536    var delSuccess = function(o){ 
     537 
     538            for (var i in berryList) { 
     539                        var berry = berryList[i]; 
     540                console.log(berry); 
     541                        var id = berry.getAttribute('collection')+":"+berry.getAttribute('name'); 
     542 
     543                        if (id == el.id){ 
     544                                berryList.splice(i,1); 
     545 
     546                                break; 
     547                        } 
     548 
     549                } 
     550            updateFavouritesCount(); 
     551         
     552    } 
     553 
     554    var delFailure = function(o){ 
     555    } 
     556 
     557    var delcallback = { 
     558        success:delSuccess, 
     559        failure:delFailure 
     560    } 
     561     
     562    YAHOO.util.Connect.asyncRequest(request_type , delurl , delcallback); 
     563} 
     564 
     565 
     566 
     567function toggleFavourite(el) 
     568{ 
     569    var is_favourite = el.getAttribute("data-is-favourite"); 
     570    if (is_favourite == "true") { 
     571    deleteFavourite(el); 
     572    el.src = gs.variables.unselected_favourite_icon_url; 
     573    el.setAttribute("data-is-favourite","false") 
     574    } 
     575    else { 
     576    addFavourite(el); 
     577    el.src = gs.variables.selected_favourite_icon_url; 
     578    el.setAttribute("data-is-favourite","true") 
     579    } 
     580} 
     581 
     582if(gs.cgiParams.berrybasket == "on") 
     583{ 
     584    YAHOO.util.Event.addListener(window, 'load', berryCheckout); 
     585} 
     586else { 
     587    // assumption is that favouritesbasket is on  
     588    YAHOO.util.Event.addListener(window, 'load', favouritesCheckout); 
     589} 
     590 
    417591//YAHOO.util.Event.addListener(window, 'click', basketUpdate); 
    418592 
  • main/trunk/greenstone3/web/interfaces/default/js/berrybasket/berrycheckout.js

    r33254 r33259  
    114114        var berry = docList[i]; 
    115115        var berry_id = berry['collection'] + ":" + berry['name']; 
    116          
     116                 
    117117        for(var j = searchForNextSelectedIdFromIndex; j >= 0; j--) { 
    118118            if(idsToDelete[j] == berry_id) { 
     
    148148        }   
    149149        content.appendChild(document.createTextNode('Your berry basket is empty.')); 
    150      
     150        var berryBasketDelOptions = YAHOO.util.Dom.get('delOptions'); 
     151        if (berryBasketDelOptions != null) { 
     152        berryBasketDelOptions.setAttribute("style","display:none;"); 
     153        } 
     154 
    151155        var trashbin =  YAHOO.util.Dom.get('trashbin'); 
    152156        if ( trashbin !=null){ 
     
    155159    } 
    156160 
    157     // Ensure the select-all, delete-all and delete-selected checkboxes are deselected 
    158     YAHOO.util.Dom.get('select-all-checkbox').checked = false;  
    159     YAHOO.util.Dom.get('delete-selected-checkbox').checked = false; 
    160     YAHOO.util.Dom.get('delete-all-checkbox').checked = false;  
     161    var have_checkboxes = YAHOO.util.Dom.get('select-all-checkbox'); // just pick one for the test 
     162    if (have_checkboxes) { 
     163        // Ensure the select-all, delete-all and delete-selected checkboxes are deselected 
     164        YAHOO.util.Dom.get('select-all-checkbox').checked = false;  
     165        YAHOO.util.Dom.get('delete-selected-checkbox').checked = false; 
     166        YAHOO.util.Dom.get('delete-all-checkbox').checked = false;  
     167    } 
    161168    } 
    162169 
     
    173180    YAHOO.util.Connect.asyncRequest(request_type, delurl , delcallback); 
    174181} 
     182 
     183function deleteFavouriteFromCheckout(el) 
     184{ 
     185    var  delurl = delurlPath; // var delurlPath is declared in ygDDPlayer.js. 
     186 
     187    var doc_id = el.getAttribute('id'); 
     188    delurl += doc_id; 
     189 
     190    var deleteAll = false; 
     191    var selectedList = [ el ]; 
     192    var idsToDelete = [ doc_id ]; 
     193    doDelete(deleteAll, delurl, selectedList, idsToDelete); 
     194} 
     195 
    175196 
    176197function navigate(e){ 
     
    267288} 
    268289 
    269 function showFullView(){ 
     290function showFullView() { 
     291    if (gs.cgiParams.berrybasket == "on") { 
     292    showFullViewBerries(); 
     293    } 
     294    else { 
     295    // assumption is that favouritesbasket is on  
     296    showFullViewFavourites(); 
     297    }     
     298} 
     299     
     300function showFullViewBerries(){ 
    270301 
    271302    var content =  YAHOO.util.Dom.get('berryBasketContent'); 
     
    320351} 
    321352 
     353function showFullViewFavourites(){ 
     354 
     355    var content =  YAHOO.util.Dom.get('berryBasketContent'); 
     356    var fullview =  YAHOO.util.Dom.get('fullview'); 
     357    berryCheckoutPageClear(); 
     358 
     359        var berryBasketDelOptions = YAHOO.util.Dom.get('delOptions'); 
     360    if (docList.length == 0){ 
     361        content.appendChild(document.createTextNode(gs.text.berry.empty_basket)); 
     362        if (berryBasketDelOptions != null) { 
     363        berryBasketDelOptions.setAttribute("style","display:none;"); 
     364        } 
     365 
     366        return; 
     367    } 
     368        if (berryBasketDelOptions != null) { 
     369       berryBasketDelOptions.setAttribute("style","display:block;"); 
     370    } 
     371 
     372    var dlist = document.createElement('div'); 
     373    content.appendChild(dlist); 
     374    var ul = document.createElement('ul'); 
     375    dlist.appendChild(ul); 
     376 
     377    ul.setAttribute("id", "berryDocsList"); 
     378        ul.setAttribute("style","list-style: none;"); 
     379 
     380    for (var i in docList){ 
     381        var doc = docList[i]; 
     382        var li = document.createElement('li'); 
     383            var img = document.createElement('img'); 
     384        var text =""; 
     385 
     386        var doc_id = doc['collection']+":"+ doc['name'];         
     387         
     388        img.setAttribute("src", gs.variables.selected_favourite_icon_url);  
     389        img.setAttribute("id", doc_id); 
     390        img.setAttribute("height", "20px"); 
     391        img.setAttribute("width", "20px"); 
     392            img.setAttribute("style","padding-right: 5px;"); // **** better to do this with CSS 
     393        img.setAttribute("onClick", "deleteFavouriteFromCheckout(this)"); 
     394        li.appendChild(img); 
     395 
     396        generateDocDisplay(li, doc, doc_id) 
     397        li.className = 'berrydoc'; 
     398        ul.appendChild(li); 
     399    } 
     400 
     401} 
     402 
    322403function generateDocDisplay(li, doc, doc_id) { 
    323     var checkbox = document.createElement('input'); 
    324     checkbox.setAttribute("type", "checkbox"); 
    325     checkbox.setAttribute("id", doc_id+"-checkbox"); 
    326     checkbox.setAttribute("name", "select-berry-checkbox"); 
    327     checkbox.setAttribute("value", "select-"+doc_id); 
    328      
    329404    var a = document.createElement('a'); 
    330405    var text=""; 
     
    335410    li.appendChild(document.createTextNode(doc['root_Title']+": "));  
    336411    } 
    337     li.appendChild(checkbox); 
     412 
    338413    li.appendChild(a); 
    339414    li.appendChild(document.createTextNode(" ("+doc['collection']+")")); 
     
    348423 
    349424} 
    350   
     425 
    351426function showTextView(){ 
    352427 
  • main/trunk/greenstone3/web/interfaces/default/js/classifier_scripts.js

    r33217 r33259  
    129129            url = url + "&berrybasket=on"; 
    130130        }  
     131        if(gs.cgiParams.favouritesbasket == "on") 
     132        { 
     133            url = url + "&favouritesbasket=on"; 
     134        }  
    131135 
    132136        if(url.indexOf("#") != -1) 
     
    148152            if(gs.cgiParams.berrybasket == "on") 
    149153            { 
    150                 checkout(); 
     154                    berryCheckout(); 
    151155            } 
    152             else if(gs.cgiParams.documentbasket == "on") 
     156            if(gs.cgiParams.favouritesbasket == "on") 
     157            { 
     158                favouritesCheckout(); 
     159            } 
     160            if(gs.cgiParams.documentbasket == "on") 
    153161            { 
    154162                dmcheckout(); 
  • main/trunk/greenstone3/web/interfaces/default/js/facet-scripts.js

    r33154 r33259  
    5757            $("#resultsArea").html(""); 
    5858            $("#resultsArea").html(response.substring(response.indexOf(">") + 1, response.lastIndexOf("<"))); 
    59                 checkout(); // called to add back in berries (if berrybasket active) 
     59            if(gs.cgiParams.berrybasket == "on") { 
     60                    berryCheckout(); // called to add back in berries (if berrybasket active) 
     61            } 
     62            if(gs.cgiParams.favouritesbasket == "on") { 
     63                    favouritesCheckout(); // called to add back in favourites icons (if favouritesbasket active) 
     64            } 
    6065        }); 
    6166}