Ignore:
Timestamp:
10/08/13 16:20:46 (11 years ago)
Author:
douglas
Message:

Ticket #0000 - Copiadas as alterações do Trunk. Versão final 2.5.1.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2.5/prototype/modules/attach_message/attach_message.js

    r7543 r8232  
    216216                for (var message in selectedMessages[folder]) { 
    217217                        if (selectedMessages[folder][message]) { 
    218                                 byte_size += parseInt(onceOpenedMessages[folder][message].size); 
     218                                byte_size += parseInt(onceOpenedHeadersMessages[folder][message].size); 
    219219                                total_messages++; 
    220220                        } 
     
    227227var msgAttacherGrid = $("#message_attacher_grid"), msgsTotal = $("#selected_messages_number"); 
    228228var lastLoadedMessages = []; 
    229 var onceOpenedMessages = []; 
    230229var selectedMessages   = {}; 
    231230var selectedFolder     = {}; 
    232231 
     232function mount_children_localfolders_list(folder){  
     233    folder.children = new Array(); 
     234    folder.id_search = folder.id; 
     235    folder.id = 'local_messages_'+folder.id, 
     236    folder.commonName =  folder.name, 
     237    folder.parentId = folder.parentid, 
     238    folder.type = 'localFolder', 
     239    folder.name = folder.id, 
     240    folder.messageCount = { 
     241                             total: folder.messages, 
     242                             unseen: folder.unseen 
     243                          } 
     244 
     245    if(folder.haschild){ 
     246        expresso_mail_archive.getFoldersList(folder.id_search); 
     247        folder.children = expresso_mail_archive.folders; 
     248 
     249        for(var i = 0; i < folder.children.length; i++){ 
     250            mount_children_localfolders_list(folder.children[i]); 
     251        } 
     252 
     253    } 
     254} 
    233255function adaptOffline( data ) 
    234256{ 
     
    254276         
    255277    return( data ); 
    256          
    257 } 
     278} 
     279 
     280function archive_flag( flagObj ){ 
     281 
     282    var flags = {}; 
     283    var returns = ''; 
     284 
     285    $.each( flagObj.tag , function(i, flag){ 
     286        flags[ flag['@value'] ] = true; 
     287    }); 
     288 
     289        returns += (flags['seen'] ? '0,' : '1,') ; 
     290        returns += (flags['answered'] && !flags['forwarded'] ? '1,' : '0,') ; 
     291        returns += (flags['forwarded'] ? '1,' : '0,') ; 
     292        returns += (flags['flagged'] || flags['importance_high'] ? '1,' : '0,') ; 
     293        returns += '0,0'; 
     294             
     295    return returns; 
     296} 
     297 
     298function archive_flag_search( flagObj ){ 
     299    var flags = {}; 
     300    var returns = ''; 
     301 
     302    flagObj = flagObj.split(""); 
     303    $.each( flagObj , function(i, flag){ 
     304        flags[ flag ] = true; 
     305    }); 
     306 
     307    returns += (flags['U'] ? '1,' : '0,') ; 
     308    returns += (flags['A'] && !flags['X'] ? '1,' : '0,') ; 
     309    returns += (flags['X'] ? '1,' : '0,') ; 
     310    returns += (flags['F'] ? '1,' : '0,') ; 
     311    returns += '0,0'; 
     312             
     313    return returns; 
     314} 
     315 
    258316 
    259317$mailpreview_tabs_label_length = 15; 
     
    271329                var tree2 = new Array(); 
    272330                var tree3 = new Array(); 
     331 
     332        if(preferences.use_local_messages == 1){ 
     333            if(expresso_mail_archive.folders && !expresso_offline && expresso_mail_archive.enabled == true) { //MailArchive 
     334                //pega pastas locais do mailarchiver e insere no array de pastas 
     335                    expresso_mail_archive.getFoldersList("home"); 
     336                    treeFolders = expresso_mail_archive.folders; 
     337 
     338                    for(var i=0; i<treeFolders.length; i++ ){ 
     339                        mount_children_localfolders_list(treeFolders[i]); 
     340                    } 
     341                     
     342                    for(var i = 0; i < treeFolders.length; i++){ 
     343                        data.push(treeFolders[i]); 
     344                    } 
     345            } 
     346        } 
     347 
    273348                for (var i=0; i<data.length; i++) { 
    274349 
     
    286361                        } 
    287362                        else if (/^local_messages/.test(data[i].id)) { 
    288                                 if (!unorphanize(tree3, data[i])) { 
    289                                         data[i].children = new Array(); 
    290363                                        tree3.push(data[i]); 
    291                                 } 
    292364                        } 
    293365                         
     
    299371                .find("#foldertree").treeview() 
    300372                .click(function(event){ 
     373 
    301374                        //request new selected folder messages 
    302375                        var target = $(event.target); 
     
    325398                        var grid = $("#message_attacher_grid"), offlineCase = ""; 
    326399                         
    327                         if( !targetId.indexOf( 'local_messages/' ) ) 
    328                             offlineCase = ":offline"; 
    329                          
    330  
    331                         grid.jqGrid('setGridParam',{url:BASE_PATH + 'REST.php'+offlineCase+'?q=folder/'+targetId.replace(dashes, '.')+'/message'}) 
    332                             .trigger("reloadGrid") 
    333                             .jqGrid('setCaption', '<span class="'+child.attr('class')+'">'+child.attr('title')+'</span>'); 
     400            if(targetId.indexOf( 'local_messages' ) == 0){ 
     401                 //Entrar caso: Clicar em uma pasta que seja do arquivamento local 
     402                targetId = targetId.split("_")[2]; 
     403 
     404                expresso_mail_archive.getMessagesByFolder(targetId,"ALL"); 
     405 
     406                msgAll = expresso_mail_archive.msgAll;                 
     407 
     408                var msgs = new Array(); 
     409                var from = ''; 
     410                var flag = ''; 
     411                 
     412                $.each(msgAll, function(i, msg){ 
     413                    from = $.parseJSON(msg['_from']); 
     414 
     415                    if(!from){ 
     416                        from = {"mailbox":{"name":"null","route":"null","localPart":"null","domain":"null"}}; 
     417                    } 
     418 
     419                    flag = $.parseJSON(msg['_tags']); 
     420                    id = msg['_id']; 
     421 
     422                    var message = {}; 
     423                     
     424                     
     425                    message['msg_number'] = id; 
     426                    message['flags'] = archive_flag( flag ); 
     427                    message['from.name'] = from['mailbox']['@name']; 
     428                    message['subject'] = msg['_subject']; 
     429                    message['timestamp'] = msg['_receivedDate']; 
     430                    message['size'] = msg['_size']; 
     431                    message['id'] = id; 
     432                    msgs.push( message ); 
     433 
     434                }); 
     435 
     436            grid.jqGrid("clearGridData", true); 
     437            grid.jqGrid('setGridParam',{datatype: "local",data: msgs}) 
     438                    .trigger("reloadGrid") 
     439                    .jqGrid('setCaption', '<span class="'+child.attr('class')+'">'+child.attr('title')+'</span>'); 
     440 
     441            } else { 
     442                if( !targetId.indexOf( 'local_messages/' ) ) 
     443                    offlineCase = ":offline"; 
     444 
     445                grid.jqGrid('setGridParam',{datatype: "json", url:BASE_PATH + 'REST.php'+offlineCase+'?q=folder/'+targetId.replace(dashes, '.')+'/message'}) 
     446                    .trigger("reloadGrid") 
     447                    .jqGrid('setCaption', '<span class="'+child.attr('class')+'">'+child.attr('title')+'</span>'); 
     448            } 
    334449                }) 
    335450                .find('span:first-child'); 
    336                 $('span.folder.inbox').addClass('selected'); 
     451                $('span.folder.inbox').parents(".ui-dialog").find("li#INBOX span").addClass('selected'); 
    337452                selectedFolder = { 
    338453                        id: firstFolder.parent().attr('id'),  
     
    360475                        ], 
    361476                        jsonReader : { 
    362                                   root:"rows", 
     477                                  root: function(obj){ 
     478                                        obj['data'] = {}; 
     479                            obj.data = {rows : obj.rows}; 
     480                                        if(obj.rows){ 
     481                                                if(!obj.rows[0].flag){ 
     482                                                        var msgs = []; 
     483                                                        $.each(obj.rows, function(i, msg){ 
     484                                                                flag = msg['flags']; 
     485                                        id = msg['msg_number']; 
     486                                        var message = {}; 
     487                                      
     488                                        message['msg_number'] = id; 
     489                                        message['flags'] = flag; 
     490                                        message['to'] = { 
     491                                                name: msg['toaddress2'], 
     492                                                email: msg['toaddress2'] 
     493                                        }; 
     494                 
     495                                        if(msg['from'] != undefined &&  msg['header']['from'] != undefined){ 
     496                                                message['from'] = { 
     497                                                        'email' : msg['from']['email'], 
     498                                                        'name' : msg['header']['from']['name'] 
     499                                                } 
     500                                            }else{ 
     501                                                message['from'] = { 
     502                                                        'email' : '', 
     503                                                        'name' : 'Rascunho' 
     504                                                } 
     505                                            } 
     506                                        //message['from']['name'] = msg['from']['name']; 
     507                                        message['subject'] = msg['subject'] ? msg['subject'] : "(sem assunto)"; 
     508                                        message['timestamp'] = parseInt(msg['timestamp']); 
     509                                        message['size'] = msg['size']; 
     510                                        message['id'] = id; 
     511                                        msgs.push( message ); 
     512                                        }); 
     513                                                        obj['data'] = {}; 
     514                                        obj.data = {rows : msgs}; 
     515                                    } 
     516                        } 
     517                                        return obj.data.rows; 
     518                                  }, 
    363519                                  page: "page", 
    364520                                  total: "total", 
     
    367523                                  id: "0" 
    368524                        }, 
     525                        hidegrid:false, 
    369526                        rowNum:10, 
    370527                        rowList:[10,25,50], 
     
    377534                        loadComplete: function(data) { 
    378535                                lastLoadedMessages = data.rows; 
    379                                  
     536                                $("#mailgrid-container").find(".loading").hide(); 
     537 
    380538                                // aplica o contador 
    381539                                jQuery('.timable').each(function (i) { 
     
    401559                                 
    402560                        }, 
    403                         onSelectRow: function (id, selected) { 
    404                                 var message = false; 
    405                                 for (var i=0; i<lastLoadedMessages.length; i++){ 
    406                                         if (lastLoadedMessages[i].msg_number == id) { 
    407                                                 message = lastLoadedMessages[i]; 
    408                                                 break; 
    409                                         } 
    410                                 } 
    411                                  
    412                                 var tabPanelTemplateId = 'mailpreview_tab_' + selectedFolder.id.replace(/[.\/]/g, '_') + '_' + message.msg_number; 
    413                                 var tabPanelTemplateId = tabPanelTemplateId.replace(/[\s\/]/g, '-');  
    414                                  
    415                                 if (selected) {  
    416                                         if (onceOpenedMessages[selectedFolder.id] && onceOpenedMessages[selectedFolder.id][message.msg_number]) { 
    417                                                 if (!selectedMessages[selectedFolder.id]) 
    418                                                         selectedMessages[selectedFolder.id] = {}; 
    419                                                          
    420                                                 selectedMessages[selectedFolder.id][message.msg_number] = true; 
    421                                                 $('#mailpreview-container').unblock();                                           
    422  
    423                                                 var tabPanelTemplateLabel = html_entities(onceOpenedMessages[selectedFolder.id][message.msg_number].subject); 
    424                                                 if (tabPanelTemplateLabel.length > $mailpreview_tabs_label_length + 3) 
    425                                                         tabPanelTemplateLabel = tabPanelTemplateLabel.substring(0, $mailpreview_tabs_label_length) + '...'; 
    426                                                  
    427                                                 if (!$('#' + tabPanelTemplateId).length) {                                                               
    428                                                         $mailpreview_tabs.tabs("add", '#' + tabPanelTemplateId, tabPanelTemplateLabel) 
    429                                                         .find('.message.empty-container').hide().end() 
    430                                                         .find('#' + tabPanelTemplateId).html(onceOpenedMessages[selectedFolder.id][message.msg_number].body); 
    431                                                 } else { 
    432                                                         $mailpreview_tabs.tabs('select', '#' + tabPanelTemplateId) 
    433                                                         .find('#' + tabPanelTemplateId + ', [href="#' + tabPanelTemplateId + '"]').removeClass('preview-message-unselected'); 
    434                                                 } 
    435                                                  
    436                                         } else { 
    437                                                 jQuery('#mailpreview_container').block({   
    438                                                         message: '<div id="loading-content"><div class="image"></div></div>',   
    439                                                         css: {   
    440                                                                 backgroundImage: 'url('+BASE_PATH+'modules/attach_message/images/loading.gif)',   
    441                                                                 backgroundRepeat: 'no-repeat',  
    442                                                                 backgroundPosition: 'center',  
    443                                                                 backgroundColor: 'transparent',  
    444                                                                 width: '32px',  
    445                                                                 height: '32px',  
    446                                                                 border:'none'   
    447                                                         },  
    448                                                         overlayCSS: {   
    449                                                                 backgroundColor: '#CCC',   
    450                                                                 opacity:         0.5  
    451                                                         }   
    452                                                 });  
    453  
    454                                                 var offlineCase = ""; 
    455                                                  
    456                                                 if( !selectedFolder.id.indexOf( 'local_messages/' ) ) 
    457                                                     offlineCase = ":offline"; 
    458                                            
    459                                                 if (!selectedMessages[selectedFolder.id]) 
    460                                                         selectedMessages[selectedFolder.id] = {}; 
    461                                                 selectedMessages[selectedFolder.id][message.msg_number] = true; 
    462                                                 $.ajax({ 
    463                                                         accepts: 'text/html', 
    464                                                         url: BASE_PATH + 'REST.php'+offlineCase+'?q=folder/'+selectedFolder.id.replace(dashes, '.')+'/message/'+id, 
    465                                                         dataType: 'json', 
    466                                                         success: function( mail_preview ){               
    467                                                                 //selectedMessagesCount(); 
    468                                                                 if (!onceOpenedMessages[selectedFolder.id]) 
    469                                                                         onceOpenedMessages[selectedFolder.id] = {}; 
    470                                                                 onceOpenedMessages[selectedFolder.id][message.msg_number] = jQuery.extend(true, message, mail_preview); 
    471  
    472                                                                 $('#mailpreview_container').unblock(); 
    473  
    474                                                                 var tabPanelTemplateLabel = html_entities(onceOpenedMessages[selectedFolder.id][message.msg_number].subject); 
    475                                                                 if (tabPanelTemplateLabel.length > $mailpreview_tabs_label_length + 3) 
    476                                                                         tabPanelTemplateLabel = tabPanelTemplateLabel.substring(0, $mailpreview_tabs_label_length) + '...'; 
    477                                                         selectedMessagesCount(); 
    478                                                                  
    479                                                                 if (!$('#' + tabPanelTemplateId).length) {                                                               
    480                                                                         $mailpreview_tabs.tabs("add", '#' + tabPanelTemplateId, tabPanelTemplateLabel) 
    481                                                                         .find('.message.empty-container').hide().end() 
    482                                                                         .find('#' + tabPanelTemplateId).html(onceOpenedMessages[selectedFolder.id][message.msg_number].body) 
    483                                                                         .prepend( 
    484                                                                                 '<div class="mailpreview-message-info">' +  
    485                                                                                         get_lang('Subject') + ': ' + 
    486                                                                                         html_entities(onceOpenedMessages[selectedFolder.id][message.msg_number].subject) +  
    487                                                                                 '</div>' 
    488                                                                         ) 
    489                                                                         .find('[class^="ExpressoCssWrapper"]').addClass("mailpreview-message-body"); 
    490                                                                 } else { 
    491                                                                         $mailpreview_tabs.tabs('select', '#' + tabPanelTemplateId) 
    492                                                                         .find('#' + tabPanelTemplateId + ', [href="#' + tabPanelTemplateId + '"]').removeClass('preview-message-unselected'); 
    493                                                                 } 
    494                                                         } 
    495                                                 }); 
    496                                         } 
    497                                 } else { 
    498                                         /** 
    499                                          * if you wants to remove tab on unselect message, 
    500                                          * but still needs to uselect message on remove tab. 
    501                                          *  
    502                                          */ 
    503                                         /* 
    504                                         if ($('#' + tabPanelTemplateId).length) { 
    505                                                 $mailpreview_tabs.tabs('remove', '#' + tabPanelTemplateId); 
    506                                         } 
    507                                          */ 
    508                                         selectedMessages[selectedFolder.id][message.msg_number] = false; 
    509                                         $mailpreview_tabs.find('#' + tabPanelTemplateId + ', [href="#' + tabPanelTemplateId + '"]').addClass('preview-message-unselected'); 
    510                                 } 
    511                                  
    512                                 if (onceOpenedMessages[selectedFolder.id] && onceOpenedMessages[selectedFolder.id][message.msg_number]) 
    513                                         selectedMessagesCount(); 
    514                         }, 
     561            onSelectRow: function(id, selected) 
     562            { 
     563                /* Funções auxiliares:*/ 
     564 
     565                /* 
     566                    Marca a mensagem como selecionada no grid de anexar mensagena. 
     567                    Parâmetros: 
     568                        folder: folder em que a mensagem a ser selecionada se encontra. 
     569                        msg_number: id da mensagem a ser selecionada. 
     570                */ 
     571                var mark_as_selected = function (folder, msg_number) { 
     572                    if(!selectedMessages[folder]) 
     573                    { 
     574                        selectedMessages[folder] = {}; 
     575                    } 
     576                    selectedMessages[folder][msg_number] = true; 
     577                } 
     578 
     579                /* 
     580                    Adiciona uma mensagem ao cache de mensagens. 
     581                        cache: vetor de cache de mensagens. 
     582                        msg: mensagem a ser armazenada. 
     583                */ 
     584                var add_msg_to_cache = function (cache, msg) { 
     585                    if(!cache[selectedFolder.id]) 
     586                    { 
     587                        cache[selectedFolder.id] = {}; 
     588                    } 
     589                    cache[selectedFolder.id][msg.msg_number] = msg; 
     590                } 
     591 
     592                /* 
     593                    Adiciona uma aba de preview para cada mensagem selecionada. 
     594                        subject: assunto da mensagem. 
     595                        body: corpo da mensagem. 
     596                */ 
     597                var add_preview_tab = function (subject, body) { 
     598                    // Trunca o assunto, para caber na aba de preview: 
     599                    var tabPanelTemplateLabel = html_entities(subject); 
     600                    if(tabPanelTemplateLabel.length > $mailpreview_tabs_label_length + 3) 
     601                    { 
     602                        tabPanelTemplateLabel = tabPanelTemplateLabel.substring(0, $mailpreview_tabs_label_length) + '...'; 
     603                    } 
     604 
     605                    // Se a aba não tiver sido adicionada: 
     606                    if(!$('#' + tabPanelTemplateId).length) 
     607                    { 
     608                        // adiciona-a: 
     609                        $mailpreview_tabs 
     610                        .tabs("add", '#' + tabPanelTemplateId, tabPanelTemplateLabel) 
     611                        .find('.message.empty-container') 
     612                        .hide() 
     613                        .end() 
     614                        .find('#' + tabPanelTemplateId) 
     615                        .html(body) 
     616                        .prepend('<div class="mailpreview-message-info">' + get_lang('Subject') + ': ' + html_entities(subject) + '</div>') 
     617                        .find('[class^="ExpressoCssWrapper"]') 
     618                        .addClass("mailpreview-message-body"); 
     619                    } 
     620                    else 
     621                    { 
     622                        // Senão, só a seleciona: 
     623                        $mailpreview_tabs 
     624                        .tabs('select', '#' + tabPanelTemplateId) 
     625                        .find('#' + tabPanelTemplateId + ', [href="#' + tabPanelTemplateId + '"]') 
     626                        .removeClass('preview-message-unselected'); 
     627                    } 
     628                } 
     629 
     630                var message = false; 
     631                for(var i = 0; i < lastLoadedMessages.length; i++) 
     632                { 
     633                    if(lastLoadedMessages[i].msg_number == id) 
     634                    { 
     635                        message = lastLoadedMessages[i]; 
     636                        break; 
     637                    } 
     638                } 
     639                var tabPanelTemplateId = 'mailpreview_tab_' + selectedFolder.id.replace(/[.\/]/g, '_') + '_' + message.msg_number; 
     640                var tabPanelTemplateId = tabPanelTemplateId.replace(/[\s\/]/g, '-'); 
     641 
     642                if(selected) 
     643                { 
     644                    // Se a já mensagem (com preview) já estiver no cache: 
     645                    if(onceOpenedHeadersMessages[selectedFolder.id] && onceOpenedHeadersMessages[selectedFolder.id][message.msg_number]  && onceOpenedHeadersMessages[selectedFolder.id][message.msg_number].body) 
     646                    { 
     647 
     648                        mark_as_selected(selectedFolder.id, message.msg_number); 
     649 
     650                        add_preview_tab( 
     651                            onceOpenedHeadersMessages[selectedFolder.id][message.msg_number].subject, 
     652                            onceOpenedHeadersMessages[selectedFolder.id][message.msg_number].body 
     653                        ); 
     654                    } 
     655                    else // Mensagem não está no cache: 
     656                    { 
     657                        jQuery('#mailpreview_container').block( 
     658                        { 
     659                            message: '<div id="loading-content"><div class="image"></div></div>', 
     660                            css: { 
     661                                backgroundImage: 'url(' + BASE_PATH + 'modules/attach_message/images/loading.gif)', 
     662                                backgroundRepeat: 'no-repeat', 
     663                                backgroundPosition: 'center', 
     664                                backgroundColor: 'transparent', 
     665                                width: '32px', 
     666                                height: '32px', 
     667                                border: 'none' 
     668                            }, 
     669                            overlayCSS: { 
     670                                backgroundColor: '#CCC', 
     671                                opacity: 0.5 
     672                            } 
     673                        }); 
     674 
     675                        mark_as_selected(selectedFolder.id, message.msg_number); 
     676 
     677                        // Se for mensagem local: 
     678                        if(selectedFolder['id'].indexOf("local_messages_") != -1) 
     679                        { 
     680                            expresso_mail_archive.getPreviewToAttach(id); 
     681 
     682                            var body = expresso_mail_archive.bodyPreview; 
     683                            var subject = expresso_mail_archive.subjectPreview; 
     684 
     685                            add_preview_tab(subject, body); 
     686 
     687                            $('#mailpreview_container').unblock(); 
     688 
     689                            add_msg_to_cache(onceOpenedHeadersMessages, message); 
     690                        } 
     691                        else 
     692                        { 
     693                            proxy_mensagens.get_msg(id, selectedFolder.id, '', function (data) { 
     694                                message = $.extend(true, message, data); 
     695 
     696                                add_preview_tab(message.subject, message.body); 
     697 
     698                                $('#mailpreview_container').unblock(); 
     699 
     700                                add_msg_to_cache(onceOpenedHeadersMessages, message); 
     701 
     702 
     703                            }) 
     704                        } 
     705                    } 
     706                } 
     707                else 
     708                { 
     709                    /** 
     710                     * if you wants to remove tab on unselect message, 
     711                     * but still needs to uselect message on remove tab. 
     712                     * 
     713                     */ 
     714                    selectedMessages[selectedFolder.id][message.msg_number] = false; 
     715                    $mailpreview_tabs 
     716                    .find('#' + tabPanelTemplateId + ', [href="#' + tabPanelTemplateId + '"]') 
     717                    .addClass('preview-message-unselected'); 
     718                } 
     719 
     720                selectedMessagesCount(); 
     721            }, 
     722             
    515723                        caption: '<span class="'+selectedFolder['class']+'">'+selectedFolder.name+'</span>' 
    516724                }); 
    517                 //.jqGrid('navGrid','#message_attacher_grid_pager',{edit:false,add:false,del:false}); 
     725 
     726        var search_local_messsages = function(param, folder){ 
     727            if(preferences.use_local_messages != 0) 
     728            { 
     729                folder = folder.split("_")[2]; 
     730 
     731                var local_folders   = []; 
     732                expresso_mail_archive.search_queryresult = null; 
     733                 
     734                local_folders.push(folder); 
     735                 
     736                tmp = []; 
     737 
     738                groupResult = []; 
     739                    expresso_mail_archive.search(local_folders, "SUBJECT " +  "<=>" +url_encode(param) + "##"); 
     740                        groupResult.push( expresso_mail_archive.search_queryresult ); 
     741                    expresso_mail_archive.search(local_folders, "FROM " + "<=>" + url_encode(param) + "##"); 
     742                        groupResult.push( expresso_mail_archive.search_queryresult ); 
     743                    expresso_mail_archive.search(local_folders, "TO " + "<=>" + url_encode(param) + "##"); 
     744                        groupResult.push( expresso_mail_archive.search_queryresult ); 
     745                    expresso_mail_archive.search(local_folders, "CC " + "<=>" + url_encode(param) + "##"); 
     746                        groupResult.push( expresso_mail_archive.search_queryresult ); 
     747                     
     748                if($("#gbox_message_attacher_grid .attach-message-search-checkbox").is(":checked")){ 
     749                    expresso_mail_archive.search(local_folders, "BODY " + "<=>" + url_encode(param) + "##"); 
     750                        groupResult.push( expresso_mail_archive.search_queryresult ); 
     751                } 
     752 
     753                 
     754                 $.each(groupResult, function(i, result){ 
     755                        if(result != null){ 
     756 
     757                                var existsMessage = true; 
     758 
     759                                $.each(result, function(i, each){ 
     760 
     761                                        $.each(tmp, function(i, ids){ 
     762 
     763                                            if(each.msg_number == ids.msg_number){ 
     764 
     765                                                    existsMessage = false; 
     766                                                    return false; 
     767 
     768                                            } 
     769 
     770                                        }); 
     771 
     772                                        if(existsMessage) tmp.push(each); 
     773                                }); 
     774 
     775                        } 
     776                }); 
     777 
     778 
     779                if(tmp == null) 
     780                { 
     781                    tmp = new Object(); 
     782                    tmp.length = 0; 
     783                } 
     784 
     785                msgs = []; 
     786 
     787                $.each(tmp, function(i, msg){ 
     788 
     789                    flag = msg['flag']; 
     790                    id = msg['msg_number']; 
     791 
     792                    var message = {}; 
     793 
     794                    var stamp =  msg['timestamp']; 
     795                    stamp = stamp.toString() + "000"; 
     796                    stamp = parseInt(stamp); 
     797 
     798                    message['msg_number'] = id; 
     799                    message['flags'] = archive_flag_search(flag);//"1,1,1,1,1,1";// 
     800                    message['from.name'] = msg['from']; 
     801                    message['subject'] = msg['subject']; 
     802                    message['timestamp'] = stamp; 
     803                    message['size'] = msg['size']; 
     804                    message['id'] = id; 
     805                    msgs.push( message ); 
     806                }); 
     807                return msgs; 
     808            } 
     809        } 
     810        var search_imap_messages = function(param, folder){ 
     811                var grid = $("#message_attacher_grid"); 
     812 
     813                DataLayer.storage.cache = {}; 
     814                if( $(".attach-message-search-checkbox:checked").length > 0 ){ 
     815                    var filters = [ 
     816                                [ 
     817                                        'from', 
     818                                        '*', 
     819                                        param 
     820                                ],               
     821                                [ 
     822                                'OR', 
     823                                'to', 
     824                                '*', 
     825                                param 
     826                        ], 
     827                                [ 
     828                                'OR', 
     829                                'subject', 
     830                                '*', 
     831                                param 
     832                        ], 
     833                        [ 
     834                                'OR', 
     835                                'folder', 
     836                                '*', 
     837                                folder 
     838                        ], 
     839                        [ 
     840                                'OR', 
     841                                'body', 
     842                                '*', 
     843                                param 
     844                        ] 
     845                    ]; 
     846                }else{ 
     847                        var filters = [ 
     848                                [ 
     849                                        'from', 
     850                                        '*', 
     851                                        param 
     852                                ],               
     853                                [ 
     854                                'OR', 
     855                                'to', 
     856                                '*', 
     857                                param 
     858                        ], 
     859                                [ 
     860                                'OR', 
     861                                'subject', 
     862                                '*', 
     863                                param 
     864                        ], 
     865                        [ 
     866                                'OR', 
     867                                'folder', 
     868                                '*', 
     869                                folder 
     870                        ] 
     871                    ]; 
     872                } 
     873                         
     874            var data = DataLayer.get( 'message', { filter: filters, criteria: { properties: { context: { folder: folder } } } }, true ); 
     875 
     876            if(DataLayer.criterias['message:jqGridSearch']){ 
     877                                delete DataLayer.criterias['message:jqGridSearch'];      
     878                        } 
     879 
     880                DataLayer.register( 'criterias', 'message:jqGridSearch', function( crit ){ 
     881                            crit.properties = { context: { folder: folder } }; 
     882 
     883                            return { filter: [ "msgNumber", "IN", data ], criteria: crit }; 
     884                        }); 
     885            if(typeof(data) == 'object'){ 
     886                                grid.jqGrid("clearGridData", true); 
     887                                grid.jqGrid('setGridParam',{datatype: "json", url: 'message:jqGridSearch'}).trigger("reloadGrid"); 
     888 
     889            }else{ 
     890                $("#mailgrid-container").find(".loading").hide(); 
     891                grid.jqGrid("clearGridData", true); 
     892            } 
     893        } 
     894 
     895                var search_messages = function(param){ 
     896            var grid = $("#message_attacher_grid"); 
     897            var folder = $("#foldertree li span.selected").parent().attr("id"); 
     898             
     899            if(param == ""){ 
     900                $('#foldertree [id="'+folder+'"]').trigger("click"); 
     901                return; 
     902            } 
     903            $(".attach-message-search-input").val(""); 
     904            if(folder.indexOf("local_messages_") == 0){ 
     905                // Pesquisa pelas mensagens locais... 
     906                msgs = search_local_messsages(param, folder); 
     907            } else { 
     908                // Pesquisa pelo Imap... 
     909                return search_imap_messages(param, folder); 
     910            } 
     911 
     912            // Monta as mensagens na grid... 
     913            grid.jqGrid("clearGridData", true); 
     914            grid.jqGrid('setGridParam',{datatype: "local",data: msgs}) 
     915            .trigger("reloadGrid"); 
     916            //.jqGrid('setCaption', '<span class="'+child.attr('class')+'">'+child.attr('title')+'</span>'); 
     917                } 
     918 
    518919                var title = [get_lang("First page"), get_lang("Prev page"), get_lang("Next page"), get_lang("Last page")]; 
    519920                $("#first_message_attacher_grid_pager").attr("title",title[0]); 
     
    521922                $("#next_message_attacher_grid_pager").attr("title",title[2]); 
    522923                $("#last_message_attacher_grid_pager").attr("title",title[3]); 
     924                $("#mailgrid-container .ui-jqgrid-titlebar") 
     925                .append( DataLayer.render("../prototype/modules/attach_message/attachment_search.ejs") ).find(".ui-jqgrid-titlebar-close").hide() 
     926                .end().find(".attach-message-search-input").Watermark("Pesquisa...").keydown(function(e){ 
     927                        var param = $(this).val(); 
     928                        if($.ui.keyCode.ENTER == e.keyCode){ 
     929                                $("#mailgrid-container").find(".loading").show("fast", function(){ 
     930                                        search_messages(param); 
     931                                }); 
     932                        } 
     933                         
     934                }).end().find(".attach-message-search-checkbox").click(function(){ 
     935            var msg; 
     936            if($(this).is(":checked")){ 
     937                msg = get_lang("take off this option to disregard the message body in the search."); 
     938            } else { 
     939                msg = get_lang("take on this option to regard the message body in the search."); 
     940            } 
     941            $(".attach-message-search-div .button-body-msg-title").attr("title",msg); 
     942        }); 
     943 
     944                $("#attach-message-search").button({ 
     945                        text: false, 
     946                        icons: { 
     947                                primary: "ui-icon-search" 
     948                        } 
     949                }).next().button({ 
     950                        text: false, 
     951                        icons: { 
     952                                primary: "ui-icon-script" 
     953                        } 
     954                }); 
     955                $("#attach-message-search").parent().buttonset(); 
     956 
     957                $("#attach-message-search").click(function(){ 
     958                        var param = $(this).parents(".attach-message-search-div:first").find(".attach-message-search-input").val(); 
     959                        $("#mailgrid-container").find(".loading").show("fast", function(){ 
     960                                search_messages(param); 
     961                        });      
     962                }); 
    523963        } 
    524964}); 
Note: See TracChangeset for help on using the changeset viewer.