Ignore:
Timestamp:
06/16/09 18:29:16 (15 years ago)
Author:
rafaelraymundo
Message:

Ticket #550 - Unificação de funcionalidade do SERPRO referentes ao arquivamento local.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/expressoMail1_2/js/local_messages.js

    r670 r1000  
    5959         
    6060        local_messages.prototype.insert_mail = function(msg_info,msg_header,anexos,folder) { 
    61  
    6261                try { 
    6362                        this.init_local_messages(); 
     
    8281                        msg_info.cc = null; 
    8382                        msg_header.Size=null; 
    84                          
    8583                        //If the mail was archieved in the same date the user received it, the date cames with the time. 
    8684                        //here I solved it 
     
    109107                         
    110108                        var rs = this.dbGears.execute("select rowid from folder where folder=? and uid_usuario=?",[folder,account_id]); 
    111                          
    112                         if(rs.isValidRow()) 
     109                        if(rs.isValidRow()) 
    113110                                id_folder=rs.field(0); 
    114111                        else { 
     
    119116                        if(msg_info.Unseen=="U") 
    120117                                unseen = 1; 
    121                         this.dbGears.execute("insert into mail (mail,original_id,original_folder,header,timestamp,uid_usuario,unseen,id_folder,ffrom,subject,fto,cc,body,size) values (?,?,?,?,?,?,?,?,?,?,?,?,?,?)",[mail,original_id,original_folder,header,timestamp,login,unseen,id_folder,from,subject,to,cc,body,size]); 
     118            this.dbGears.execute("insert into mail (mail,original_id,original_folder,header,timestamp,uid_usuario,unseen,id_folder,ffrom,subject,fto,cc,body,size) values (?,?,?,?,?,?,?,?,?,?,?,?,?,?)",[mail,original_id,original_folder,header,timestamp,login,unseen,id_folder,from,subject,to,cc,body,size]); 
    122119                        var call_back = function() { 
    123120                        } 
     
    148145                retorno['subject'] = rs.field(3); 
    149146                retorno['body'] = rs.field(4); 
     147                //Codigo que as imagens embutidas em emails (com multipart/related ou multipart/mixed) sejam corretamente mostradas em emails arquivados. Os links do 
     148                //tipo "./inc/show_embedded_attach.php?msg_folder=[folder]&msg_num=[msg_num]&msg_part=[part]" 
     149                //são substituidos pelos links dos anexos capturados pelo gears. 
     150 
     151                var thumbs= retorno.thumbs; 
     152                var anexos= retorno.array_attach; 
     153                for (i in anexos) 
     154                { 
     155                    nomeArquivo = anexos[i]['name'].substring(0,anexos[i]['name'].length - 4); 
     156                    if(nomeArquivo.match('jpg')||anexos[i]['name'].match('gif')||anexos[i]['name'].match('png')) 
     157                        { 
     158                            var er_imagens = new RegExp("\\.\\/inc\\/show_embedded_attach.php\\?msg_folder=[\\w/]+\\&msg_num=[0-9]+\\&msg_part="+anexos[i]['pid']); 
     159                            var Result_imagens = er_imagens.exec(retorno['body']); 
     160                            retorno['body'] = retorno['body'].replace(Result_imagens,anexos[i]['url']); 
     161                            if(thumbs && thumbs[i]){ 
     162                                er_imagens = new RegExp("\\.\\/inc\\/show_thumbs.php\\?file_type=image\\/[\\w]+\\&msg_num=[0-9]+\\&msg_folder=[\\w/%]+\\&msg_part="+anexos[i]['pid']); 
     163                                Result_imagens = er_imagens.exec(thumbs[i]); 
     164                                thumbs[i] = thumbs[i].replace(Result_imagens,"'"+anexos[i]['url']+"'"); 
     165                                er_imagens = new RegExp("\\.\\/inc\\/show_img.php\\?msg_num=[0-9]+\\&msg_folder=[\\w/%]+\\&msg_part="+anexos[i]['pid']); 
     166                                Result_imagens = er_imagens.exec(thumbs[i]); 
     167                                thumbs[i] = thumbs[i].replace(Result_imagens,"'"+anexos[i]['url']+"'"); 
     168                                thumbs[i] = thumbs[i].replace(/<IMG/i,'<img width="120"'); 
     169                            } 
     170                        } 
     171                } 
     172 
    150173                retorno['to'] = connector.unserialize(rs.field(5)); 
    151174                retorno['cc'] = connector.unserialize(rs.field(6)); 
     
    508531                                                sql += " and"; 
    509532                                } 
    510                                 sql+=" mail."+this.aux_convert_filter_field(friendly_filters[z])+" like '%"+friendly_filters[z+1]+"%'"; 
     533                                sql+=" mail."+this.aux_convert_filter_field(friendly_filters[z])+" like '%"+url_decode(friendly_filters[z+1])+"%'"; 
    511534                        } 
    512535                } 
     
    559582                return retorno; 
    560583        } 
     584 
     585     //Por Bruno Costa(bruno.vieira-costa@serpro.gov.br - Essa função é um AJAX simples que serve apenas para pegar o fonte de uma msg local (no formato RFC 822). 
     586    local_messages.prototype.get_src = function(url){ 
     587        AJAX = false; 
     588        if (window.XMLHttpRequest) { // Mozilla, Safari,... 
     589            AJAX = new XMLHttpRequest(); 
     590            if (AJAX.overrideMimeType) { 
     591                AJAX.overrideMimeType('text/xml'); 
     592            } 
     593        } else if (window.ActiveXObject) { // IE 
     594            try { 
     595                AJAX = new ActiveXObject("Msxml2.XMLHTTP"); 
     596            } catch (e) { 
     597                try { 
     598                AJAX = new ActiveXObject("Microsoft.XMLHTTP"); 
     599                } catch (e) {} 
     600            } 
     601        } 
     602 
     603        if (!AJAX) { 
     604            alert('ERRO :(Seu navegador não suporta a aplicação usada neste site'); 
     605            return false; 
     606        } 
     607 
     608        AJAX.onreadystatechange = function() { 
     609            if (AJAX.readyState == 4) { 
     610                AJAX.src=AJAX.responseText; 
     611                if (AJAX.status == 200) { 
     612                    return AJAX.responseText; 
     613                    } else { 
     614                    return false; 
     615                } 
     616            } 
     617        } 
     618 
     619        AJAX.open('get', url, false); 
     620        AJAX.send(null); 
     621        return AJAX.responseText; 
     622    }; 
     623 
     624  //Por Bruno Costa(bruno.vieira-costa@serpro.gov.br - Dessarquiva msgs locais pegando o codigo fonte das mesmas e mandando via POST para o servidor 
     625  //para que elas sejam inseridas no imap pela função  imap_functions.unarchive_mail. 
     626    local_messages.prototype.unarchive_msgs = function (folder,new_folder,msgs_number){ 
     627 
     628        if(!new_folder) 
     629            new_folder='INBOX'; 
     630        this.init_local_messages(); 
     631       // alert(folder+new_folder+msgs_number); 
     632        var handler_unarchive = function(data) 
     633        { 
     634            if(data.error == '') 
     635                write_msg(get_lang('All messages are successfully unarchived')); 
     636            else 
     637                alert(data.error); 
     638        } 
     639        if(msgs_number =='selected' || !msgs_number) 
     640        { 
     641            msgs_number = get_selected_messages() 
     642            if (!msgs_number){ 
     643                write_msg(get_lang('No selected message.')); 
     644                return; 
     645            } 
     646            var rs = this.dbGears.execute("select mail,timestamp from mail where rowid in ("+msgs_number+")"); 
     647            var source=""; 
     648            var timestamp=""; 
     649            while(rs.isValidRow()) { 
     650                mail=connector.unserialize(rs.field(0)); 
     651                source_tmp=escape(this.get_src(mail.url_export_file)); 
     652                    source+="#@#@#@"+source_tmp; 
     653                    timestamp+="#@#@#@"+rs.field(1); 
     654                rs.next(); 
     655            } 
     656            rs.close(); 
     657            this.finalize(); 
     658        } 
     659        else 
     660        { 
     661            var rs = this.dbGears.execute("select mail,timestamp from mail where rowid="+msgs_number); 
     662            mail=connector.unserialize(rs.field(0)); 
     663            var source =""; 
     664            source = this.get_src(mail.url_export_file); 
     665            timestamp=rs.field(1); 
     666             rs.close(); 
     667             this.finalize(); 
     668        } 
     669            params="&folder="+new_folder+"&source="+source+"&timestamp="+timestamp; 
     670            cExecute ("$this.imap_functions.unarchive_mail&", handler_unarchive, params); 
     671    } 
     672 
     673 
     674    local_messages.prototype.download_all_local_attachments = function(folder,id){ 
     675        this.init_local_messages(); 
     676        var rs = this.dbGears.execute("select mail from mail where rowid="+id); 
     677        var tmp = connector.unserialize(rs.field(0)); 
     678        rs.close(); 
     679        this.finalize(); 
     680        source = this.get_src(tmp.url_export_file); 
     681        source = escape(source); 
     682        var handler_source = function(data){ 
     683            download_attachments(null, null, data, null,null,'anexos.zip'); 
     684        } 
     685        cExecute("$this.imap_functions.download_all_local_attachments",handler_source,"source="+source); 
     686    } 
     687 
     688    /*************************************************************************/ 
     689/* Funcao usada para exportar mensagens arquivadas localmente. 
     690 * Rommel de Brito Cysne (rommel.cysne@serpro.gov.br) 
     691 * em 22/12/2008. 
     692 */ 
     693    local_messages.prototype.local_messages_to_export = function(){ 
     694 
     695        if (openTab.type[currentTab] > 1){ 
     696            var msgs_to_export_id = currentTab.substring(0,currentTab.length-2,currentTab); 
     697        }else{ 
     698            var msgs_to_export_id = get_selected_messages(); 
     699        } 
     700        var handler_local_mesgs_to_export = function(data){ 
     701            download_attachments(null, null, data, null,null,'mensagens.zip'); 
     702        } 
     703        if(msgs_to_export_id){ 
     704            this.init_local_messages(); 
     705            var l_msg = "t"; 
     706            var mesgs =""; 
     707            var subjects =""; 
     708            var rs = this.dbGears.execute("select mail,subject from mail where rowid in ("+msgs_to_export_id+")"); 
     709            while(rs.isValidRow()){ 
     710                mail = connector.unserialize(rs.field(0)); 
     711                src = this.get_src(mail.url_export_file); 
     712                subject = rs.field(1); 
     713                mesgs += src; 
     714                mesgs += "@@"; 
     715                subjects += subject; 
     716                subjects += "@@"; 
     717                rs.next(); 
     718            } 
     719            rs.close(); 
     720            this.finalize(); 
     721            mesgs = escape(mesgs); 
     722            subjects = escape(subjects); 
     723            params = "subjects="+subjects+"&mesgs="+mesgs+"&l_msg="+l_msg+"&msgs_to_export="+msgs_to_export_id; 
     724            cExecute ("$this.exporteml.makeAll&", handler_local_mesgs_to_export, params); 
     725        } 
     726        return true; 
     727    } 
     728 
     729    local_messages.prototype.get_all_local_folder_messages= function(folder_name){ 
     730 
     731 
     732         var mesgs = new Array(); 
     733         var subjects = new Array(); 
     734         var hoje = new Date(); 
     735         var msgs_to_export = new Array(); 
     736         var l_msg="t"; 
     737 
     738        this.init_local_messages(); 
     739        var query = "select mail,subject,mail.rowid from mail inner join folder on (mail.id_folder=folder.rowid) where folder.folder='" + folder_name + "'"; 
     740 
     741        var rs = this.dbGears.execute(" "+query) 
     742 
     743            var handler_local_mesgs_to_export = function(data){ 
     744                    //alert("data - " + data + " - tipo - " + typeof(data)); 
     745                    download_attachments(null, null, data, null,null,'mensagens.zip'); 
     746            } 
     747        var j=0; 
     748        while (rs.isValidRow()){ 
     749              msgs_to_export[j]=rs.field(2) 
     750              mail = connector.unserialize(rs.field(0)); 
     751                      msg=this.get_src(mail.url_export_file); 
     752                      subject = rs.field(1); 
     753                      mesgs += msg; 
     754                      mesgs += "@@"; 
     755                      subjects += subject; 
     756                      subjects += "@@"; 
     757                      rs.next(); 
     758              j++; 
     759 
     760        } 
     761           rs.close(); 
     762           this.finalize(); 
     763           source = escape(mesgs); 
     764           subjects = escape(subjects); 
     765           params = "folder="+folder_name+"&subjects="+subjects+"&mesgs="+source+"&l_msg="+l_msg+"&msgs_to_export="+msgs_to_export; 
     766           cExecute ("$this.exporteml.makeAll&", handler_local_mesgs_to_export, params); 
     767           
     768 
     769    } 
     770 
     771 
     772    /*************************************************************************/ 
     773 
    561774         
    562775        var expresso_local_messages; 
Note: See TracChangeset for help on using the changeset viewer.