Changeset 19854


Ignore:
Timestamp:
2009-06-16T13:45:45+12:00 (15 years ago)
Author:
oranfry
Message:

reorganised javascript for the new interface

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

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};
Note: See TracChangeset for help on using the changeset viewer.