Ignore:
Timestamp:
09/09/10 15:34:47 (14 years ago)
Author:
amuller
Message:

Ticket #428 - Implementação da paginação da busca

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2.2/expressoMail1_2/js/search.js

    r3074 r3223  
    55        { 
    66                this.searchW   = new Array; 
     7                this.condition = ""; 
     8                this.sort_type = ""; 
     9                this.page = 0; 
    710                this.name_box_search = ""; 
    811                this.all_boxes = new Array; 
     
    203206                ttree.make_tree(folders,"div_folders_search","_folders_tree_search","","","",""); 
    204207        } 
    205  
     208        function openpage(data){ 
     209                delete_border(currentTab,false); 
     210                EsearchE.mount_result(data); 
     211        } 
     212 
     213        searchE.prototype.show_paging = function(size){ 
     214                if (size > preferences.max_email_per_page) 
     215                { 
     216                        if (Element("span_paging"+currentTab)){ 
     217                                Element("span_paging"+currentTab).style.display = ''; 
     218                                Element("span_paging"+currentTab).innerHTML = ""; 
     219                        } 
     220                        else{ 
     221                                var span_paging = document.createElement('SPAN'); 
     222                                span_paging.id = "span_paging"+currentTab; 
     223                                Element("div_menu_c3").appendChild(span_paging); 
     224                        } 
     225                        if(this.page > 1){ 
     226                                var fLink = document.createElement('A'); 
     227                                fLink.innerHTML = '< <'; 
     228                                fLink.href = 'javascript:EsearchE.page=0;'+ 
     229                                        'cExecute("$this.imap_functions.search_msg",openpage,'+ 
     230                                        '"condition='+this.condition+'&sort_type='+this.sort_type+'&page=0");'; 
     231                                Element("span_paging"+currentTab).appendChild(fLink); 
     232                        } 
     233                        if(this.page > 2){ 
     234                                var prevLink = document.createElement('A'); 
     235                                prevLink.innerHTML = '...'; 
     236                                prevLink.href = 'javascript:EsearchE.page='+ 
     237                                        (this.page-1)+';'+ 
     238                                        'cExecute("$this.imap_functions.search_msg",openpage,'+ 
     239                                        '"condition='+this.condition+'&sort_type='+this.sort_type+'&page='+(this.page-1)+'");'; 
     240                                Element("span_paging"+currentTab).appendChild(prevLink); 
     241                        } 
     242                        for (var i=(this.page > 2 ? this.page-2 : 0); i <= parseInt(this.page)+4; i+= 1){ 
     243                                if (i*preferences.max_email_per_page > size) 
     244                                        break; 
     245                                if (this.page == i) 
     246                                        Element("span_paging"+currentTab).innerHTML += "<b> "+(this.page+1)+" </b>"; 
     247                                else 
     248                                { 
     249                                        var pageLink = document.createElement('A'); 
     250                                        pageLink.innerHTML = (i+1)+" "; 
     251                                        pageLink.href = 'javascript:EsearchE.page='+i+';'+ 
     252                                                'cExecute("$this.imap_functions.search_msg",openpage,'+ 
     253                                                '"condition='+this.condition+'&sort_type='+this.sort_type+'&page='+this.page+'");'; 
     254                                        Element("span_paging"+currentTab).appendChild(pageLink); 
     255                                } 
     256                        } 
     257                        if (size > preferences.max_email_per_page) 
     258                        { 
     259                                var lLink = document.createElement('A'); 
     260                                lLink.innerHTML = '&gt; &gt;'; 
     261                                lLink.href = 'javascript:EsearchE.page='+parseInt(size/preferences.max_email_per_page)+';'+ 
     262                                        'cExecute("$this.imap_functions.search_msg",openpage,'+ 
     263                                        '"condition='+this.condition+'&sort_type='+this.sort_type+'&page=0");'; 
     264                                Element("span_paging"+currentTab).appendChild(lLink); 
     265                        } 
     266                } 
     267 
     268        } 
    206269        // Form resultado 
    207         searchE.prototype.mount_result = function(data,sort_type){ 
     270        searchE.prototype.mount_result = function(Rdata,sort_type){ 
     271                var data = Rdata['data']; 
    208272                if (data == undefined) 
    209273                        return; 
     274                if(this.page == 0) 
     275                        write_msg(Rdata['num_msgs']+" "+get_lang("results found")); 
    210276                var cont = parseInt(0); 
    211277 
    212                 //This func returns the comparison between criterias  
    213                 var date_comp = function(a,b){ return a.udate > b.udate;};  
    214                 var date_comp_reverse = function(a,b){ return date_comp(b,a);};  
    215                 var box_comp = function(a,b){   return a.boxname > b.boxname; }  
    216                 var box_comp_reverse = function(a,b){   return box_comp(b,a); }  
    217                 var who_comp = function(a,b){ return a.from > b.from; }  
    218                 var who_comp_reverse = function(a,b){ return who_comp(b,a); }  
    219                 var subject_comp = function(a,b){ return a.subject > b.subject; }  
    220                 var subject_comp_reverse = function(a,b){ return subject_comp(b,a); }  
    221                 var size_comp = function(a,b){ return a.size > b.size; }  
    222                 var size_comp_reverse = function(a,b){ return size_comp(b,a); } 
    223  
    224                 switch (sort_type) 
    225                 { 
    226                         case 'SORTDATE': 
    227                                 data.sort(date_comp); 
    228                                 break; 
    229                         case 'SORTDATE_REVERSE': 
    230                                 data.sort(date_comp_reverse); 
    231                                 break; 
    232                         case 'SORTBOX': 
    233                                 data.sort(box_comp); 
    234                                 break; 
    235                         case 'SORTBOX_REVERSE': 
    236                                 data.sort(box_comp_reverse); 
    237                                 break; 
    238                         case 'SORTSUBJECT': 
    239                                 data.sort(subject_comp); 
    240                                 break; 
    241                         case 'SORTSUBJECT_REVERSE': 
    242                                 data.sort(subject_comp_reverse); 
    243                                 break; 
    244                         case 'SORTWHO': 
    245                                 data.sort(who_comp); 
    246                                 break; 
    247                         case 'SORTWHO_REVERSE': 
    248                                 data.sort(who_comp_reverse); 
    249                                 break; 
    250                         case 'SORTSIZE': 
    251                                 data.sort(size_comp); 
    252                                 break; 
    253                         case 'SORTSIZE_REVERSE': 
    254                                 data.sort(size_comp_reverse); 
    255                                 break; 
    256                         default: 
    257                                 var showMsg = 1; 
    258                 } 
    259  
    260                 if(data.length > 0 && showMsg)  
    261                                 write_msg(data.length + " "+ get_lang('results found'));  
     278                if (typeof(sort_type) != 'undefined') 
     279                        this.sort_type = sort_type; 
     280                else 
     281                        sort_type = this.sort_type; 
    262282 
    263283                numBox++; 
     
    270290                openTab.content_id[currentTab] = Element('content_id_search_' + numBox); 
    271291                openTab.type[currentTab] = 1; 
     292 
    272293                var table = document.createElement("TABLE"); 
    273294                table.id    = "table_resultsearch_" + numBox; 
     
    280301                var tbody = document.createElement("TBODY"); 
    281302                tbody.id    = "tbody_box_" + numBox; 
    282  
    283303                for( var i=0; i < data.length; i++){ 
    284304                        var tr = document.createElement("TR"); 
    285305                        tr.style.height = preferences.line_height; 
    286                         var aux = data[i];  
     306                        var aux = data[i]; 
    287307                        var mailbox = aux.boxname;  
    288308                        var uid_msg = aux.uid;  
     
    470490                if (sort_type == 'SORTBOX') 
    471491                { 
    472                         td_element1.onclick = function () { EsearchE.mount_result(data,'SORTBOX_REVERSE'); delete_border(border_id,false);}; 
     492                        td_element1.onclick = function () { 
     493                                var handler = function(data){ delete_border(border_id,false); EsearchE.mount_result(data,'SORTBOX_REVERSE'); }; 
     494                                var args   = "$this.imap_functions.search_msg"; 
     495                                var params = "condition="+EsearchE.condition+"&page="+EsearchE.page+"&sort_type=SORTBOX_REVERSE"; 
     496                                cExecute(args,handler,params); 
     497                        }; 
    473498                        td_element1.innerHTML ="<b>"+get_lang("Folder")+"</b><img src='templates/"+template+"/images/arrow_descendant.gif'>"; 
    474499                } 
    475500                else 
    476501                { 
    477                         td_element1.onclick = function () { EsearchE.mount_result(data,'SORTBOX'); delete_border(border_id,false);}; 
     502                        td_element1.onclick = function () { 
     503                                var handler = function(data){ delete_border(border_id,false); EsearchE.mount_result(data,'SORTBOX'); }; 
     504                                var args   = "$this.imap_functions.search_msg"; 
     505                                var params = "condition="+EsearchE.condition+"&page="+EsearchE.page+"&sort_type=SORTBOX"; 
     506                                cExecute(args,handler,params); 
     507                        }; 
    478508                        if  (sort_type == 'SORTBOX_REVERSE') 
    479509                                td_element1.innerHTML ="<b>"+get_lang("Folder")+"</b><img src='templates/"+template+"/images/arrow_ascendant.gif'>"; 
     
    486516                if (sort_type == 'SORTWHO') 
    487517                { 
    488                         td_element2.onclick = function () { EsearchE.mount_result(data,'SORTWHO_REVERSE'); delete_border(border_id,false);}; 
     518                        td_element2.onclick = function () { 
     519                                var handler = function(data){ delete_border(border_id,false); EsearchE.mount_result(data,'SORTWHO_REVERSE'); }; 
     520                                var args   = "$this.imap_functions.search_msg"; 
     521                                var params = "condition="+EsearchE.condition+"&page="+EsearchE.page+"&sort_type=SORTWHO_REVERSE"; 
     522                                cExecute(args,handler,params); 
     523                        }; 
    489524                        td_element2.innerHTML ="<b>"+get_lang("who")+"</b><img src='templates/"+template+"/images/arrow_descendant.gif'>"; 
    490525                } 
    491526                else 
    492527                { 
    493                         td_element2.onclick = function () { EsearchE.mount_result(data,'SORTWHO'); delete_border(border_id,false);}; 
     528                        td_element2.onclick = function () { 
     529                                var handler = function(data){ delete_border(border_id,false); EsearchE.mount_result(data,'SORTWHO'); }; 
     530                                var args   = "$this.imap_functions.search_msg"; 
     531                                var params = "condition="+EsearchE.condition+"&page="+EsearchE.page+"&sort_type=SORTWHO"; 
     532                                cExecute(args,handler,params); 
     533                        }; 
    494534                        if  (sort_type == 'SORTWHO_REVERSE') 
    495535                                td_element2.innerHTML ="<b>"+get_lang("who")+"</b><img src='templates/"+template+"/images/arrow_ascendant.gif'>"; 
     
    502542                if (sort_type == 'SORTSUBJECT') 
    503543                { 
    504                         td_element3.onclick = function () { EsearchE.mount_result(data,'SORTSUBJECT_REVERSE'); delete_border(border_id,false);}; 
     544                        td_element3.onclick = function () { 
     545                                var handler = function(data){ delete_border(border_id,false); EsearchE.mount_result(data,'SORTSUBJECT_REVERSE'); }; 
     546                                var args   = "$this.imap_functions.search_msg"; 
     547                                var params = "condition="+EsearchE.condition+"&page="+EsearchE.page+"&sort_type=SORTSUBJECT_REVERSE"; 
     548                                cExecute(args,handler,params); 
     549                        }; 
    505550                        td_element3.innerHTML ="<b>"+get_lang("subject")+"</b><img src='templates/"+template+"/images/arrow_descendant.gif'>"; 
    506551                } 
    507552                else 
    508553                { 
    509                         td_element3.onclick = function () { EsearchE.mount_result(data,'SORTSUBJECT'); delete_border(border_id,false);}; 
     554                        td_element3.onclick = function () { 
     555                                var handler = function(data){ delete_border(border_id,false); EsearchE.mount_result(data,'SORTSUBJECT'); }; 
     556                                var args   = "$this.imap_functions.search_msg"; 
     557                                var params = "condition="+EsearchE.condition+"&page="+EsearchE.page+"&sort_type=SORTSUBJECT"; 
     558                                cExecute(args,handler,params); 
     559                        }; 
    510560                        if  (sort_type == 'SORTSUBJECT_REVERSE') 
    511561                                td_element3.innerHTML ="<b>"+get_lang("subject")+"</b><img src='templates/"+template+"/images/arrow_ascendant.gif'>"; 
     
    518568                if (sort_type == 'SORTDATE') 
    519569                { 
    520                         td_element4.onclick = function () { EsearchE.mount_result(data,'SORTDATE_REVERSE'); delete_border(border_id,false);}; 
     570                        td_element4.onclick = function () { 
     571                                var handler = function(data){ delete_border(border_id,false); EsearchE.mount_result(data,'SORTDATE_REVERSE'); }; 
     572                                var args   = "$this.imap_functions.search_msg"; 
     573                                var params = "condition="+EsearchE.condition+"&page="+EsearchE.page+"&sort_type=SORTDATE_REVERSE"; 
     574                                cExecute(args,handler,params); 
     575                        }; 
    521576                        td_element4.innerHTML ="<b>"+get_lang("Date")+"</b><img src='templates/"+template+"/images/arrow_descendant.gif'>"; 
    522577                } 
    523578                else 
    524579                { 
    525                         td_element4.onclick = function () { EsearchE.mount_result(data,'SORTDATE'); delete_border(border_id,false);}; 
     580                        td_element4.onclick = function () { 
     581                                var handler = function(data){ delete_border(border_id,false); EsearchE.mount_result(data,'SORTDATE'); }; 
     582                                var args   = "$this.imap_functions.search_msg"; 
     583                                var params = "condition="+EsearchE.condition+"&page="+EsearchE.page+"&sort_type=SORTDATE"; 
     584                                cExecute(args,handler,params); 
     585                        }; 
    526586                        if  (sort_type == 'SORTDATE_REVERSE') 
    527587                                td_element4.innerHTML ="<b>"+get_lang("Date")+"</b><img src='templates/"+template+"/images/arrow_ascendant.gif'>"; 
     
    534594                if (sort_type == 'SORTSIZE') 
    535595                { 
    536                         td_element5.onclick = function () { EsearchE.mount_result(data,'SORTSIZE_REVERSE'); delete_border(border_id,false);}; 
     596                        td_element5.onclick = function () { 
     597                                var handler = function(data){ delete_border(border_id,false); EsearchE.mount_result(data,'SORTSIZE_REVERSE'); }; 
     598                                var args   = "$this.imap_functions.search_msg"; 
     599                                var params = "condition="+EsearchE.condition+"&page="+EsearchE.page+"&sort_type=SORTSIZE_REVERSE"; 
     600                                cExecute(args,handler,params); 
     601                        }; 
    537602                        td_element5.innerHTML ="<b>"+get_lang("size")+"</b><img src='templates/"+template+"/images/arrow_descendant.gif'>"; 
    538603                } 
    539604                else 
    540605                { 
    541                         td_element5.onclick = function () { EsearchE.mount_result(data,'SORTSIZE'); delete_border(border_id,false);}; 
     606                        td_element5.onclick = function () { 
     607                                var handler = function(data){ delete_border(border_id,false); EsearchE.mount_result(data,'SORTSIZE'); }; 
     608                                var args   = "$this.imap_functions.search_msg"; 
     609                                var params = "condition="+EsearchE.condition+"&page="+EsearchE.page+"&sort_type=SORTSIZE"; 
     610                                cExecute(args,handler,params); 
     611                        }; 
    542612                        if  (sort_type == 'SORTSIZE_REVERSE') 
    543613                                td_element5.innerHTML ="<b>"+get_lang("size")+"</b><img src='templates/"+template+"/images/arrow_ascendant.gif'>"; 
     
    576646                        content_search.appendChild(div_scroll_result); 
    577647                } 
    578                 resizeWindow();  
     648                resizeWindow(); 
     649                EsearchE.show_paging(Rdata['num_msgs']); 
     650 
    579651        } 
    580652 
     
    788860                } 
    789861                var handler = function(data){ 
    790                         var tmp; 
    791  
    792                         if (local_folders.length > 0) { 
    793                                 tmp = expresso_local_messages.search(local_folders, fields); 
    794                                 if (tmp!=false) { 
    795                                         var tmp2 = tmp.substr(2, data.length - 4); 
    796                                         }  
    797                                 }  
    798                                 if((data == "none") || (data.length==0)){alert(get_lang("None result was found."));}  
    799                                 else if(data.length > preferences.search_result_number){alert(get_lang("More than %1 results. Please, try to refine your search.",1000));} 
    800                         else if(data == "many results"){alert(get_lang("More than %1 results. Please, try to refine your search.",preferences.search_result_number));}  
    801                         else{EsearchE.mount_result(data);} 
     862                        if (data == "none") 
     863                                alert(get_lang('no results found')); 
     864                        else 
     865                                EsearchE.mount_result(data,'SORTDATE'); 
    802866 
    803867                } 
    804868                var args   = "$this.imap_functions.search_msg"; 
    805                 var params = "condition=" + nm_box; 
     869                this.condition = nm_box; 
     870                var params = "condition=" + nm_box+ 
     871                        "&page=0"+ 
     872                        "&sort_type=SORTDATE"; 
     873                this.page = 0; 
    806874                if(expresso_offline) 
    807875                        handler('none'); 
Note: See TracChangeset for help on using the changeset viewer.