Changeset 7948 for trunk


Ignore:
Timestamp:
03/04/13 12:06:01 (11 years ago)
Author:
marcosw
Message:

Ticket #3349 - Adicionado melhoria de pesquisa de mensagens ao anexar no diretório trunk

Location:
trunk
Files:
7 edited
1 copied

Legend:

Unmodified
Added
Removed
  • trunk/expressoMail1_2/inc/class.imap_functions.inc.php

    r7915 r7948  
    52175217        function searchSieveRule( $params ) 
    52185218        { 
    5219  
    5220                 $imap = $this->open_mbox( 'INBOX' ); 
     5219                $imap = $this->open_mbox( $params['folder']['criteria'] ? $params['folder']['criteria'] : 'INBOX' ); 
    52215220                $msgs = imap_sort( $imap , SORTDATE , 0 , SE_UID); 
    5222                  
     5221         
    52235222                $rr = array(); 
    52245223 
     
    52925291                        if(isset($params['body'])) 
    52935292                        {                        
    5294                                 $this->mbox = $this->open_mbox( 'INBOX' ); 
    5295                                 $b = $this->get_body_msg( $v , 'INBOX' ); 
     5293                                $this->mbox = $this->open_mbox( $params['folder']['criteria'] ? $params['folder']['criteria'] : 'INBOX' ); 
     5294                                $b = $this->get_body_msg( $v , $params['folder']['criteria'] ? $params['folder']['criteria'] : 'INBOX' ); 
    52965295                                 
    52975296                                if( $this->filterCheck( $b['body'] , $params['body']['criteria'] , $params['body']['filter'] )) 
  • trunk/expressoMail1_2/js/mail_archiver.js

    r7907 r7948  
    21412141            var filters = eval('(' + expresso_mail_archive.queryconfig.pharseSearchFields(fields) + ')'); 
    21422142 
     2143 
     2144 
    21432145            if(folderlist.indexOf("#") != -1) 
    21442146                filters.folder = folderlist.substr(0, folderlist.indexOf("#")); 
     
    21512153 
    21522154            expresso_mail_archive.querydata = expresso_mail_archive.search_queryconfig.query(filters); 
    2153              
     2155 
     2156 
     2157 
    21542158            //var query_data = '<?xml version="1.0" encoding="UTF-8"?><query subject="teste"><folder id="inbox"/><order asc="date"/></query>'; 
    21552159            ArchiveServices.listMessages(expresso_mail_archive.searchOperationOK, expresso_mail_archive.searchOperationFailure, expresso_mail_archive.session.id, expresso_mail_archive.querydata);         
     
    21852189             
    21862190        //expresso_mail_archive.queryresult = msglist;         
    2187         expresso_mail_archive.search_queryresult = msglist;     
     2191        expresso_mail_archive.search_queryresult = msglist;  
    21882192        //expresso_mail_archive.messageslisted = msglist2; 
    21892193        expresso_mail_archive.search_message_list = msglist2; 
     
    23192323        var ExpSerialized2 = expresso_mail_archive.pattern.toExpressoHeader(serviceReturn.getReturn()); 
    23202324        var msgitem2 = connector.unserialize(ExpSerialized2); 
     2325        if(!expresso_mail_archive.messageslisted){ 
     2326            expresso_mail_archive.messageslisted = []; 
     2327        } 
    23212328        expresso_mail_archive.messageslisted.push(msgitem2);     
    23222329        expresso_mail_archive.getMessageHeaders(serviceReturn.getReturn().getId()); 
  • trunk/expressoMail1_2/setup/phpgw_pt-br.lang

    r7907 r7948  
    975975Sending the message...  expressoMail1_2 pt-br   Enviando a mensagem... 
    976976Please, Wait the messages from archieve be ready.       expressoMail1_2 pt-br   Por favor, Aguarde as mensagens arquivadas ficarem prontas. 
     977take on this option to regard the message body in the search.   expressoMail1_2 pt-br   Considerar o corpo da mensagem como filtro na busca 
     978take off this option to disregard the message body in the search.       expressoMail1_2 pt-br   Desconsiderar o corpo da mensagem como filtro na busca 
  • trunk/prototype/modules/attach_message/attach_message.js

    r7908 r7948  
    297297} 
    298298 
     299function archive_flag_search( flagObj ){ 
     300    var flags = {}; 
     301    var returns = ''; 
     302 
     303    flagObj = flagObj.split(""); 
     304    $.each( flagObj , function(i, flag){ 
     305        flags[ flag ] = true; 
     306    }); 
     307 
     308    returns += (flags['U'] ? '1,' : '0,') ; 
     309    returns += (flags['A'] && !flags['X'] ? '1,' : '0,') ; 
     310    returns += (flags['X'] ? '1,' : '0,') ; 
     311    returns += (flags['F'] ? '1,' : '0,') ; 
     312    returns += '0,0'; 
     313             
     314    return returns; 
     315} 
     316 
     317 
    299318$mailpreview_tabs_label_length = 15; 
    300319 
     
    404423                    var message = {}; 
    405424                     
     425                     
    406426                    message['msg_number'] = id; 
    407427                    message['flags'] = archive_flag( flag ); 
     
    428448                    .jqGrid('setCaption', '<span class="'+child.attr('class')+'">'+child.attr('title')+'</span>'); 
    429449            } 
    430  
    431  
    432450                }) 
    433451                .find('span:first-child'); 
     
    458476                        ], 
    459477                        jsonReader : { 
    460                                   root:"rows", 
     478                                  root: function(obj){ 
     479                                        obj['data'] = {}; 
     480                            obj.data = {rows : obj.rows}; 
     481                                        if(obj.rows){ 
     482                                                if(!obj.rows[0].flag){ 
     483                                                        var msgs = []; 
     484                                                        $.each(obj.rows, function(i, msg){ 
     485                                                                flag = msg['flags']; 
     486                                        id = msg['msg_number']; 
     487                                        var message = {}; 
     488                                      
     489                                        message['msg_number'] = id; 
     490                                        message['flags'] = flag; 
     491                                        message['to'] = { 
     492                                                name: msg['toaddress2'], 
     493                                                email: msg['toaddress2'] 
     494                                        }; 
     495                 
     496                                        if(msg['from'] != undefined &&  msg['header']['from'] != undefined){ 
     497                                                message['from'] = { 
     498                                                        'email' : msg['from']['email'], 
     499                                                        'name' : msg['header']['from']['name'] 
     500                                                } 
     501                                            }else{ 
     502                                                message['from'] = { 
     503                                                        'email' : '', 
     504                                                        'name' : 'Rascunho' 
     505                                                } 
     506                                            } 
     507                                        //message['from']['name'] = msg['from']['name']; 
     508                                        message['subject'] = msg['subject'] ? msg['subject'] : "(sem assunto)"; 
     509                                        message['timestamp'] = parseInt(msg['timestamp']); 
     510                                        message['size'] = msg['size']; 
     511                                        message['id'] = id; 
     512                                        msgs.push( message ); 
     513                                        }); 
     514                                                        obj['data'] = {}; 
     515                                        obj.data = {rows : msgs}; 
     516                                    } 
     517                        } 
     518                                        return obj.data.rows; 
     519                                  }, 
    461520                                  page: "page", 
    462521                                  total: "total", 
     
    465524                                  id: "0" 
    466525                        }, 
     526                        hidegrid:false, 
    467527                        rowNum:10, 
    468528                        rowList:[10,25,50], 
     
    473533                        multiselect: true, 
    474534                        autowidth: true, 
    475                         loadComplete: function(data) { 
     535                        loadComplete: function(data) {                   
    476536                                lastLoadedMessages = data.rows; 
    477                                  
     537                                $("#mailgrid-container").find(".loading").hide(); 
     538                        //$(".attach-message-search-input").val(""); 
    478539                                // aplica o contador 
    479540                                jQuery('.timable').each(function (i) { 
     
    512573                                if (selected) {  
    513574                   if(selectedFolder['id'].indexOf("local_messages_") != -1){ 
    514  
    515575                        expresso_mail_archive.getPreviewToAttach(id); 
    516576 
    517577                        var body = expresso_mail_archive.bodyPreview; 
    518578                        var subject = expresso_mail_archive.subjectPreview; 
     579 
     580 
    519581                        tabPanelTemplateLabel =  subject.substring(0, $mailpreview_tabs_label_length) + '...'; 
    520582 
     
    648710                }); 
    649711                //.jqGrid('navGrid','#message_attacher_grid_pager',{edit:false,add:false,del:false}); 
     712 
     713        var search_local_messsages = function(param, folder){ 
     714            if(preferences.use_local_messages != 0) 
     715            { 
     716                folder = folder.split("_")[2]; 
     717                folder = "messages_"+folder; 
     718 
     719                var local_folders   = []; 
     720                expresso_mail_archive.search_queryresult = null; 
     721                 
     722                local_folders.push(folder); 
     723                 
     724                tmp = []; 
     725 
     726                groupResult = []; 
     727                    expresso_mail_archive.search(local_folders, "SUBJECT " +  "<=>" +url_encode(param) + "##"); 
     728                        groupResult.push( expresso_mail_archive.search_queryresult ); 
     729                    expresso_mail_archive.search(local_folders, "FROM " + "<=>" + url_encode(param) + "##"); 
     730                        groupResult.push( expresso_mail_archive.search_queryresult ); 
     731                    expresso_mail_archive.search(local_folders, "TO " + "<=>" + url_encode(param) + "##"); 
     732                        groupResult.push( expresso_mail_archive.search_queryresult ); 
     733                    expresso_mail_archive.search(local_folders, "CC " + "<=>" + url_encode(param) + "##"); 
     734                        groupResult.push( expresso_mail_archive.search_queryresult ); 
     735                     
     736                if($("#gbox_message_attacher_grid .attach-message-search-checkbox").is(":checked")){ 
     737                    expresso_mail_archive.search(local_folders, "BODY " + "<=>" + url_encode(param) + "##"); 
     738                        groupResult.push( expresso_mail_archive.search_queryresult ); 
     739                } 
     740 
     741                 
     742                 $.each(groupResult, function(i, result){ 
     743                        if(result != null){ 
     744 
     745                                var existsMessage = true; 
     746 
     747                                $.each(result, function(i, each){ 
     748 
     749                                        $.each(tmp, function(i, ids){ 
     750 
     751                                            if(each.msg_number == ids.msg_number){ 
     752 
     753                                                    existsMessage = false; 
     754                                                    return false; 
     755 
     756                                            } 
     757 
     758                                        }); 
     759 
     760                                        if(existsMessage) tmp.push(each); 
     761                                }); 
     762 
     763                        } 
     764                }); 
     765 
     766 
     767                if(tmp == null) 
     768                { 
     769                    tmp = new Object(); 
     770                    tmp.length = 0; 
     771                } 
     772 
     773                msgs = []; 
     774 
     775                $.each(tmp, function(i, msg){ 
     776 
     777                    flag = msg['flag']; 
     778                    id = msg['msg_number']; 
     779 
     780                    var message = {}; 
     781 
     782                    var stamp =  msg['timestamp']; 
     783                    stamp = stamp.toString() + "000"; 
     784                    stamp = parseInt(stamp); 
     785 
     786                    message['msg_number'] = id; 
     787                    message['flags'] = archive_flag_search(flag);//"1,1,1,1,1,1";// 
     788                    message['from.name'] = msg['from']; 
     789                    message['subject'] = msg['subject']; 
     790                    message['timestamp'] = stamp; 
     791                    message['size'] = msg['size']; 
     792                    message['id'] = id; 
     793                    msgs.push( message ); 
     794                }); 
     795                return msgs; 
     796            } 
     797        } 
     798        var search_imap_messages = function(param, folder){ 
     799                var grid = $("#message_attacher_grid"); 
     800 
     801                DataLayer.storage.cache = {}; 
     802                if( $(".attach-message-search-checkbox:checked").length > 0 ){ 
     803                    var filters = [ 
     804                                [ 
     805                                        'from', 
     806                                        '*', 
     807                                        param 
     808                                ],               
     809                                [ 
     810                                'OR', 
     811                                'to', 
     812                                '*', 
     813                                param 
     814                        ], 
     815                                [ 
     816                                'OR', 
     817                                'subject', 
     818                                '*', 
     819                                param 
     820                        ], 
     821                        [ 
     822                                'OR', 
     823                                'folder', 
     824                                '*', 
     825                                folder 
     826                        ], 
     827                        [ 
     828                                'OR', 
     829                                'body', 
     830                                '*', 
     831                                param 
     832                        ] 
     833                    ]; 
     834                }else{ 
     835                        var filters = [ 
     836                                [ 
     837                                        'from', 
     838                                        '*', 
     839                                        param 
     840                                ],               
     841                                [ 
     842                                'OR', 
     843                                'to', 
     844                                '*', 
     845                                param 
     846                        ], 
     847                                [ 
     848                                'OR', 
     849                                'subject', 
     850                                '*', 
     851                                param 
     852                        ], 
     853                        [ 
     854                                'OR', 
     855                                'folder', 
     856                                '*', 
     857                                folder 
     858                        ] 
     859                    ]; 
     860                } 
     861                         
     862            var data = DataLayer.get( 'message', { filter: filters, criteria: { properties: { context: { folder: folder } } } }, true ); 
     863 
     864            if(DataLayer.criterias['message:jqGridSearch']){ 
     865                                delete DataLayer.criterias['message:jqGridSearch'];      
     866                        } 
     867 
     868                DataLayer.register( 'criterias', 'message:jqGridSearch', function( crit ){ 
     869                            crit.properties = { context: { folder: folder } }; 
     870 
     871                            return { filter: [ "msgNumber", "IN", data ], criteria: crit }; 
     872                        }); 
     873            if(typeof(data) == 'object'){ 
     874                                grid.jqGrid("clearGridData", true); 
     875                                grid.jqGrid('setGridParam',{datatype: "json", url: 'message:jqGridSearch'}).trigger("reloadGrid"); 
     876 
     877            }else{ 
     878                $("#mailgrid-container").find(".loading").hide(); 
     879                grid.jqGrid("clearGridData", true); 
     880            } 
     881        } 
     882 
     883                var search_messages = function(param){ 
     884            var grid = $("#message_attacher_grid"); 
     885            var folder = $("#foldertree li span.selected").parent().attr("id"); 
     886             
     887            if(param == ""){ 
     888                $('#foldertree [id="'+folder+'"]').trigger("click"); 
     889                return; 
     890            } 
     891            $(".attach-message-search-input").val(""); 
     892            if(folder.indexOf("local_messages_") == 0){ 
     893                // Pesquisa pelas mensagens locais... 
     894                msgs = search_local_messsages(param, folder); 
     895            } else { 
     896                // Pesquisa pelo Imap... 
     897                return search_imap_messages(param, folder); 
     898            } 
     899 
     900            // Monta as mensagens na grid... 
     901            grid.jqGrid("clearGridData", true); 
     902            grid.jqGrid('setGridParam',{datatype: "local",data: msgs}) 
     903            .trigger("reloadGrid"); 
     904            //.jqGrid('setCaption', '<span class="'+child.attr('class')+'">'+child.attr('title')+'</span>'); 
     905                } 
     906 
    650907                var title = [get_lang("First page"), get_lang("Prev page"), get_lang("Next page"), get_lang("Last page")]; 
    651908                $("#first_message_attacher_grid_pager").attr("title",title[0]); 
     
    653910                $("#next_message_attacher_grid_pager").attr("title",title[2]); 
    654911                $("#last_message_attacher_grid_pager").attr("title",title[3]); 
     912                $("#mailgrid-container .ui-jqgrid-titlebar") 
     913                .append( DataLayer.render("../prototype/modules/attach_message/attachment_search.ejs") ).find(".ui-jqgrid-titlebar-close").hide() 
     914                .end().find(".attach-message-search-input").Watermark("Pesquisa...").keydown(function(e){ 
     915                        var param = $(this).val(); 
     916                        if($.ui.keyCode.ENTER == e.keyCode){ 
     917                                $("#mailgrid-container").find(".loading").show("fast", function(){ 
     918                                        search_messages(param); 
     919                                }); 
     920                        } 
     921                         
     922                }).end().find(".attach-message-search-checkbox").click(function(){ 
     923            var msg; 
     924            if($(this).is(":checked")){ 
     925                msg = get_lang("take off this option to disregard the message body in the search."); 
     926            } else { 
     927                msg = get_lang("take on this option to regard the message body in the search."); 
     928            } 
     929            $(".attach-message-search-div .button-body-msg-title").attr("title",msg); 
     930        }); 
     931 
     932                $("#attach-message-search").button({ 
     933                        text: false, 
     934                        icons: { 
     935                                primary: "ui-icon-search" 
     936                        } 
     937                }).next().button({ 
     938                        text: false, 
     939                        icons: { 
     940                                primary: "ui-icon-script" 
     941                        } 
     942                }); 
     943                $("#attach-message-search").parent().buttonset(); 
     944 
     945                $("#attach-message-search").click(function(){ 
     946                        var param = $(this).parents(".attach-message-search-div:first").find(".attach-message-search-input").val(); 
     947                        $("#mailgrid-container").find(".loading").show("fast", function(){ 
     948                                search_messages(param); 
     949                        });      
     950                }); 
    655951        } 
    656952}); 
  • trunk/prototype/modules/filters/filters.js

    r7903 r7948  
    461461 
    462462DataLayer.codec( 'message', 'jqGrid', { 
     463 
     464      encoder: function( data ){ 
     465 
     466          return( data ); 
     467 
     468      } 
     469}); 
     470 
     471DataLayer.codec( 'message', 'jqGridSearch', { 
    463472 
    464473      encoder: function( data ){ 
  • trunk/prototype/modules/mail/templates/detailedfoldertree.ejs

    r7887 r7948  
    5656             <% if(expresso_mail_archive.enabled && data.folders[2].length > 0) { /*MailArchive ativado*/ %> 
    5757                <li> 
    58                         <span class="folder local-folder head_folder" style="display: inline;">Pastas locais</span> 
     58                        <span class="folder local-folder head_folder" >Pastas locais</span> 
    5959                        <% recursive_forest(data.folders[2]); %> 
    6060                </li> 
  • trunk/prototype/services/ImapServiceAdapter.php

    r7856 r7948  
    178178                            $criteria[ $filter[$i][0] ] = array( 'criteria' => $filter[$i][2], 'filter' => $filter[$i][1] ); 
    179179                        } 
    180  
    181180                        return $this->searchSieveRule($criteria); 
    182181                                        } 
Note: See TracChangeset for help on using the changeset viewer.