Changeset 19854

Show
Ignore:
Timestamp:
16.06.2009 13:45:45 (10 years ago)
Author:
oranfry
Message:

reorganised javascript for the new interface

Location:
greenstone3/trunk/web/interfaces/oran/js
Files:
2 added
2 modified

Legend:

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

    r18617 r19854  
     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 
  • greenstone3/trunk/web/interfaces/oran/js/ygDDPlayer.js

    r18617 r19854  
    6969        
    7070         var img = document.createElement('img'); 
    71               img.src = 'interfaces/default/images/berry3.png'; 
    72               img.height = 15; 
    73               img.width = 15; 
    74              img.border = 0;               
    75           dragEl.appendChild(img); 
     71         img.src = 'interfaces/oran/images/berry.png'; 
     72         dragEl.appendChild(img); 
    7673        
    7774        var added = true; 
     
    9390        targetEl.className = "target"; 
    9491    } 
     92    correctBerryExpandCollapseButtons(); 
    9593}; 
    9694 
     
    210208                     for (var i =0; i < player.berryList.length; i++ ){ 
    211209                             var img = document.createElement('img'); 
    212                               img.src = 'interfaces/default/images/berry3.png'; 
    213                               img.height = 15; 
    214                               img.width = 15; 
    215                               img.border = 0;               
     210                              img.src = 'interfaces/oran/images/berry.png'; 
    216211                              berries.appendChild(img); 
    217212                       } 
     213 
     214                correctBerryExpandCollapseButtons(); 
    218215                                            
    219216              } 
     
    273270     
    274271 
    275     var  delurl = delurlPath + el.id;    
     272    var  delurl = delurlPath + el.id; 
    276273     var delSuccess = function(o){  
    277274         var result = o.responseXML; 
     
    318315     
    319316 
    320   if (id == 'berrybasket'){ 
    321        YAHOO.util.Connect.asyncRequest(request_type , addurl , addcallback);          
    322   } 
    323   else{ 
    324         if (id == 'trashbin'){ 
    325              YAHOO.util.Connect.asyncRequest(request_type , delurl , delcallback);  
    326          } 
    327    } 
    328  
    329    this.resetTargets();      
    330    this.slot = oDD;  
    331    this.slot.player = this; 
     317    if (id == 'berrybasket'){ 
     318        YAHOO.util.Connect.asyncRequest(request_type , addurl , addcallback);          
     319    } else { 
     320        if (id == 'trashbin'){ 
     321            YAHOO.util.Connect.asyncRequest(request_type , delurl , delcallback);  
     322        } 
     323    } 
     324 
     325    this.resetTargets();     
     326    this.slot = oDD;     
     327    this.slot.player = this; 
    332328  
    333329};