Ignore:
Timestamp:
11/03/11 13:24:28 (12 years ago)
Author:
wmerlotto
Message:

Ticket #2305 - Enviando alteracoes, desenvolvidas internamente na Prognus, do modulo ExpressoMail?.

File:
1 edited

Legend:

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

    r4939 r5134  
    88    this.store = null; 
    99    this.filterSerch = ""; 
    10     this.folders = []; 
    1110    this.sortType = ""; 
    1211} 
     
    122121 
    123122local_messages.prototype.installGears = function (){ 
    124     temp = confirm(get_lang("To use local messages you have to install google gears. Would you like to install it now?")); 
    125     if (temp && typeof(preferences.googlegears_url) != 'undefined'){ 
    126         if (is_ie) 
    127             location.href = preferences.googlegears_url + "/gears.exe"; 
     123     
     124    var ua = navigator.userAgent.toLowerCase(); // captura o userAgent 
     125//     alert( parseFloat(ua.substring(ua.indexOf("firefox") + 8))  ); 
     126    var is_ff = ( ua.indexOf("linux") != -1 || ua.indexOf("windows") != -1) && 
     127                  ua.indexOf("mozilla") != -1 && 
     128                ( ua.indexOf("firefox") != -1 && parseFloat(ua.substring(ua.indexOf("firefox") + 8)) <= 3.6 ); 
     129 
     130    if ( is_ff ) 
     131      ext = "xpi"; 
     132    else 
     133    if( typeof is_ie !== "undefined" && is_ie ) 
     134      ext = "exe" 
    128135        else 
    129             location.href = preferences.googlegears_url + "/gears.xpi"; 
    130136        return false; 
    131     } 
    132     if (temp) { 
    133         location.href = "http://gears.google.com/?action=install&message="+ 
    134         get_lang("To use local messages, install Google Gears")+"&return=" + document.location.href; 
    135     } 
    136     else return false; 
     137       
     138    var confirmation = confirm(get_lang("To use local messages you have to install google gears. Would you like to install it now?")); 
     139 
     140    if ( confirmation && typeof(preferences.googlegears_url) != 'undefined' ) 
     141            location.href = preferences.googlegears_url + "/gears." + ext; 
     142 
     143 
     144    return false; 
    137145} 
    138146 
     
    171179    this.dbGears.execute('create table if not exists mail' + 
    172180        ' (mail blob,original_id int,original_folder text,header blob,timestamp int,uid_usuario int,unseen int,id_folder int,' + 
    173         ' ffrom text, subject text, fto text, cc text, body text, size int,unique (original_id,original_folder,uid_usuario,id_folder))'); 
     181        ' ffrom text, subject text, fto text, cc text, body text, size int, visible bool default true, unique (original_id,original_folder,uid_usuario,id_folder))'); 
    174182    this.dbGears.execute('create table if not exists anexo' + 
    175         ' (id_mail int,nome_anexo text,url text,pid int)'); 
     183        ' (id_mail int,nome_anexo text,url text,pid int, contentType text)'); 
    176184    this.dbGears.execute('create table if not exists folders_sync' + 
    177185        ' (id_folder text,folder_name text,uid_usuario int)'); 
     
    184192    try { 
    185193        this.dbGears.execute('alter table mail add column size int'); 
    186     }catch(Exception) { 
     194    } 
     195    catch(Exception) { 
    187196                         
    188197    } 
     198    try { 
     199        this.dbGears.execute('alter table mail add column visible bool default true'); 
     200    } 
     201    catch(Exception) { 
     202    } 
     203    try { 
     204        this.dbGears.execute('alter table anexo add column contentType text'); 
     205    } 
     206    catch(Exception) { 
     207    } 
     208 
     209 
    189210    var rs = this.dbGears.execute('select rowid,header from mail where size is null'); 
    190211    while(rs.isValidRow()) { 
     
    246267} 
    247268         
     269sync = { length: 0, fails: [], success: [], mails: {}, archived: [] }; 
     270 
     271local_messages.prototype.insert_mails = function( msgs_info, folder, complete ){ 
     272   
     273    sync.length += msgs_info.length; 
     274     
     275    write_msg( ( sync.archived.length ?  sync.archived.length + " mensagens ja arquivadas anteriormente, " : "" ) 
     276              + "Preparando o arquivamento de "+sync.length+ " mensagens...", true ); 
     277 
     278    for( var i = 0; i < msgs_info.length; i++ ) 
     279    {       
     280        var original = url = DEFAULT_URL + "$this.exporteml.export_eml.raw&folder=" + msgs_info[i].msg_folder 
     281        + "&msgs_to_export=" + msgs_info[i].msg_number; 
     282 
     283        msgs_info[i].url_export_file = url; 
     284        msgs_info[i].dest_folder = folder; 
     285 
     286        for( var ii = 0; ii < msgs_info[i].array_attach.length; ii++ ) 
     287        { 
     288            var anexo = msgs_info[i].array_attach[ii]; 
     289 
     290            anexo.url = "inc/get_archive.php?msgFolder=" + msgs_info[i].msg_folder + "&msgNumber=" + msgs_info[i].msg_number + "&indexPart=" + anexo.pid; 
     291 
     292            msgs_info[i].array_attach[ii] = anexo; 
     293 
     294            sync.mails[ anexo.url ] = url; 
     295 
     296            url = anexo.url; 
     297        } 
     298 
     299        sync.mails[ original ] = parseInt( this.store_mail( msgs_info[i] ) ); 
     300 
     301        this.capture( url, complete ); 
     302    } 
     303     
     304    write_msg( ( sync.archived.length ?  sync.archived.length + " mensagens ja arquivadas anteriormente, " : "" ) 
     305              + "arquivando " + sync.length + " mensagens...", true ); 
     306} 
     307 
     308local_messages.prototype.checkArchived = function( msgsNumber, folder ){ 
     309     
     310    var levels = [], newtree = []; 
     311     
     312    for( var i = 0; i < oldtree.length; i++ ){ 
     313       
     314      var element = oldtree[i]; 
     315       
     316      var current = element.parent, hierarchy = []; 
     317       
     318      while( !levels[ current.id ] ) 
     319      { 
     320          levels[ current.id ] = []; 
     321           
     322          hierarchy.push( current.id ); 
     323 
     324          for( var ii = 0; ii < hierarchy.length; ii++ ) 
     325            levels[ hierarchy[ii] ].push( 0 ); 
     326 
     327          current = current.parent; 
     328      } 
     329       
     330      var parent = newtree; 
     331           
     332      for( var ii = 0; ii < levels[ element.parent ].length; ii++ ) 
     333            parent = parent[ levels[element.parent][ii] ]; 
     334       
     335      parent[ levels[ element.id ] = parent.length ] = element; 
     336    } 
     337} 
     338 
     339local_messages.prototype.checkArchived = function( msgsNumber, folder ){ 
     340     
     341    var isArray = false; 
     342   
     343    if( msgsNumber.join ){ 
     344        isArray = true; 
     345        msgsNumber = msgsNumber.join(","); 
     346    } 
     347 
     348    var archived = this.isArchived( msgsNumber, folder ); 
     349     
     350    if( !archived ) 
     351        return( isArray ? msgsNumber.split(",") : msgsNumber ); 
     352 
     353    msgsNumber = "," + msgsNumber; 
     354     
     355    for( var i = 0; i < archived.length; i++ ){ 
     356        sync.archived[ sync.archived.length ] = archived[i]; 
     357        msgsNumber = msgsNumber.replace( "," + archived[i], "" ); 
     358    } 
     359     
     360    if( !msgsNumber ) 
     361        this.cleanup(); 
     362 
     363    return( isArray ? msgsNumber.substr(1).split(",") :  
     364                    ( msgsNumber ? msgsNumber.substr(1) : msgsNumber )); 
     365} 
     366 
     367local_messages.prototype.isArchiving = function( msgsNumber, folder ){ 
     368    return this.isArchived( msgsNumber, folder, true ); 
     369} 
     370 
     371local_messages.prototype.isArchived = function( msgsNumber, folder, archiving ){ 
     372   
     373    if( msgsNumber.join ) 
     374        msgsNumber = msgsNumber.join(","); 
     375     
     376    folder = this.get_folder_id( folder ); 
     377     
     378    var archived = []; 
     379   
     380  try{ 
     381      this.init_local_messages(); 
     382 
     383      var sql = "select original_id from mail where id_folder = ? and original_id IN ("+msgsNumber+")" + ( archiving ? " and visible = ?" : "" ); 
     384      var params = archiving ? [ folder, false ]: [ folder ]; 
     385       
     386      if(folder != false){ 
     387                for( var rs = this.dbGears.execute(sql, params); rs.isValidRow() || rs.close(); rs.next() ){ 
     388                        archived[ archived.length ] = rs.field(0); 
     389                } 
     390        } 
     391    } 
     392    catch( error ){ 
     393                //Removido alert pois o método 
     394                //é usado quando move mensagens entre pastas 
     395 //     alert( error ); 
     396      return( false ); 
     397    } 
     398    finally{ 
     399      this.finalize(); 
     400    } 
     401     
     402    return( archived.length ? archived : false ); 
     403} 
     404 
     405local_messages.prototype.capture = function( uri, complete ){ 
     406 
     407    var _this = this; 
     408 
     409    var callback = function( url, ok ){ 
     410 
     411        //check if its a chained attachment url.  
     412        if( typeof sync.mails[url] === "string" ) 
     413        { 
     414            var content = _this.get_src( url ); 
     415 
     416            //if its successful, continue to capture the chain 
     417            if( ok = ok || content ) 
     418                return _this.capture( sync.mails[url], complete ); 
     419 
     420            //If it's not, don't need to continue loading the attachments.  
     421            //Just break the chain, search the last one chained (the message url) and finalize the process 
     422            while( sync.mails[url].length ) 
     423                    url = sync.mails[url]; 
     424        } 
     425 
     426        sync[ ok ? 'success' : 'fails' ].push( sync.mails[url] ); 
     427 
     428        sync.length--; 
     429 
     430        if( sync.length ) 
     431            return write_msg( ( sync.archived.length ?  sync.archived.length + " mensagens ja arquivadas anteriormente, " : "" ) 
     432                              + "arquivando " + sync.length + " mensagens...", true ); 
     433 
     434        clean_msg(); 
     435        write_msg( ( sync.success.length ? "Foram arquivadas corretamente " + sync.success.length + " mensagens" : "Nenhuma mensagem arquivada" ) 
     436                 + ( sync.archived.length ? ", " + sync.archived.length + " mensagens ja arquivadas anteriormente" : "" ) 
     437                 + ( sync.fails.length ? ", " + sync.fails.length + " falharam" : "" ) + "." ); 
     438 
     439        _this.update_mails( sync.success, sync.fails, complete ); 
     440    } 
     441 
     442    try{ 
     443        this.init_local_messages(); 
     444        this.store.capture( uri, callback ); 
     445    } 
     446    catch( error ){ 
     447        console && console.log(error); 
     448    } 
     449    finally{ 
     450        this.finalize(); 
     451    } 
     452} 
     453 
     454local_messages.prototype.store_mail = function( msg_info ){ 
     455 
     456    var id_mail = false; 
     457   
     458    try { 
     459 
     460            var id_folder = this.get_folder_id( msg_info.dest_folder ); 
     461       
     462            this.init_local_messages(); 
     463 
     464            //This fields needs to be separeted to search. 
     465            var msg_header = msg_info.header; 
     466            var anexos = msg_info.array_attach; 
     467            var login = msg_info.login; 
     468            var original_id = msg_info.msg_number; 
     469            var original_folder = msg_info.msg_folder; 
     470            var subject = msg_info.subject; 
     471            var body = msg_info.body; 
     472            var timestamp = msg_info.timestamp; 
     473            var size = msg_header.Size; 
     474            var from = connector.serialize(msg_info.from); 
     475            var to = connector.serialize(msg_info.toaddress2); 
     476            var cc = connector.serialize(msg_info.cc); 
     477            var unseen = (msg_info.Unseen == "U" )? 1 : 0; 
     478 
     479            //If the mail was archieved in the same date the user received it, the date cames with the time. 
     480            //here I solved it 
     481            msg_header.udate = (String(msg_header.udate).indexOf(":")==-1)? msg_header.udate : msg_header.aux_date; 
     482            // The importance attribute can be empty, and javascript consider as null causing nullpointer. 
     483            msg_header.Importance = msg_header.Importance || "Normal"; 
     484 
     485            //do not duplicate this information 
     486            msg_info.from = null; 
     487            msg_info.subject = null; 
     488            msg_info.body = null; 
     489            msg_info.to = null; 
     490            msg_info.cc = null; 
     491            msg_header.Size=null; 
     492            msg_header.aux_date = null; 
     493 
     494            var mail = connector.serialize(msg_info); 
     495            var header = connector.serialize(msg_header); 
     496 
     497            //parse header 
     498            var parser = new FlagsParser(msg_header); 
     499            var flags = parser.parse(); 
     500 
     501            this.dbGears.execute("insert into mail (mail,original_id,original_folder,header,timestamp,uid_usuario,unseen,id_folder,ffrom,subject,fto,cc,body,size,answered,flagged,recent, visible) values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)", 
     502                                                   [mail,original_id,original_folder,header,timestamp,login,unseen,id_folder,from,subject,to,cc,body,size,flags.getAnswered(),flags.getFlagged(),flags.getRecent(), false]); 
     503 
     504            id_mail = this.dbGears.lastInsertRowId; 
     505 
     506            //insert_mail already close and open gears. 
     507            for (var i = 0; i < anexos.length; i++) 
     508                this.dbGears.execute("insert into anexo (id_mail,nome_anexo,url,pid) values (?,?,?,?)",  
     509                                                        [id_mail, anexos[i]['name'],anexos[i]['url'],anexos[i]['pid']]); 
     510    } 
     511    catch (error) { 
     512        return( false ); 
     513    } 
     514    finally{ 
     515        this.finalize(); 
     516    } 
     517 
     518    return( id_mail ); 
     519} 
     520 
     521local_messages.prototype.get_folder_id = function( folder ){ 
     522 
     523    var id_folder; 
     524     
     525    folder = ( folder && folder != "local_root" )? folder.substr(6) : "Inbox"; 
     526   
     527    try 
     528    { 
     529        this.init_local_messages(); 
     530 
     531        var rs = this.dbGears.execute("select rowid from folder where folder=? and uid_usuario=?",[folder,account_id]); 
     532 
     533        if(rs.isValidRow()) 
     534              id_folder = rs.field(0); 
     535        else { 
     536              this.dbGears.execute("insert into folder (folder,uid_usuario) values (?,?)",["Inbox",account_id]); 
     537              id_folder = this.dbGears.lastInsertRowId; 
     538        } 
     539         
     540        rs.close(); 
     541    } 
     542    catch( error ){ 
     543        return( false ); 
     544    } 
     545    finally{ 
     546        this.finalize(); 
     547    } 
     548 
     549    return( id_folder ); 
     550} 
     551 
     552local_messages.prototype.update_mails = function( success, fails, callback ){ 
     553    try 
     554    {            
     555      this.init_local_messages(); 
     556       
     557      this.dbGears.execute('update mail set visible=? where rowid IN (' + success.join(",") + ')',[ true ]); 
     558 
     559      var sql = 'select url, contentType from anexo where id_mail = ' +success; 
     560 
     561      for( var rs = this.dbGears.execute(sql); rs.isValidRow() || rs.close(); rs.next() ) 
     562      { 
     563                var url = rs.field(0), contentType = rs.field(1); 
     564                var blob = this.store.getAsBlob( url ); 
     565           
     566                this.store.captureBlob( blob, url + "&image=thumbnail", "image/jpeg" ); 
     567                this.store.captureBlob( blob, url + "&image=true", "image/jpeg" ); 
     568      }  
     569    } 
     570    catch (error) { 
     571                status = false; 
     572    } 
     573    finally{ 
     574                this.finalize(); 
     575    } 
     576     
     577    if( callback ) 
     578                callback( success, fails ); 
     579                this.cleanup(); 
     580     
     581    return( status ); 
     582} 
     583 
     584local_messages.prototype.cleanup = function(){ 
     585 
     586  try{ 
     587    this.init_local_messages(); 
     588     
     589    this.dbGears.execute('delete from mail where visible=?', [ false ]); 
     590     
     591    sync.success = [], sync.fails = [], sync.archived = [], sync.mails = {}; 
     592  } 
     593  catch(error){ 
     594    return( false ); 
     595  } 
     596  finally{ 
     597    this.finalize(); 
     598  } 
     599   
     600  return( true ); 
     601} 
     602 
     603 
     604 
     605local_messages.prototype.select_mail = function( columns, rowIds ){ 
     606   
     607    try 
     608    { 
     609        this.init_local_messages(); 
     610         
     611        if( rowIds.join ) 
     612            rowIds = rowIds.join( "," );  
     613         
     614        if( columns.join ) 
     615            columns = columns.join( "," ); 
     616 
     617        var sql = 'select '+columns+' from mail where rowid IN (' + rowIds + ')'; 
     618         
     619        var result = []; 
     620 
     621        for( var i = 0, rs = this.dbGears.execute(sql); rs.isValidRow() || rs.close() || delete ii; rs.next( i++ ) ) 
     622 
     623            for( ii = 0, result[i] = {}; ii < rs.fieldCount(); ii++ ) 
     624 
     625                  result[i][ rs.fieldName( ii ) ] = rs.field( ii ); 
     626 
     627    } 
     628    catch (error) { 
     629        status = false; 
     630    } 
     631    finally{ 
     632        this.finalize(); 
     633    } 
     634   
     635    if( result.length === 1 ) 
     636        result = result[0]; 
     637     
     638    return( result ); 
     639} 
     640 
    248641local_messages.prototype.insert_mail = function(msg_info,msg_header,anexos,folder) { 
    249642    try { 
     
    391784            if(anexos[i]['url'] && anexos[i]['url'].match(/((jpg)|(jpeg)|(png)|(gif)|(bmp))/gi)) 
    392785            { 
    393                 var er_imagens = new RegExp("\\.\\/inc\\/show_embedded_attach.php\\?msg_folder=[\\w/]+\\&msg_num=[0-9]+\\&msg_part="+anexos[i]['pid']); 
     786                var er_imagens = new RegExp("\\.\\/get_archive.php\\?msgFolder=[\\w/]+\\&msgNumber=[0-9]+\\&indexPart="+(anexos[i]['pid']-1)); 
    394787                var Result_imagens = er_imagens.exec(retorno['body']); 
    395788                retorno['body'] = retorno['body'].replace(Result_imagens,anexos[i]['url']); 
    396789                if(thumbs && thumbs[i]){ 
    397                     er_imagens = new RegExp("\\.\\/inc\\/show_thumbs.php\\?file_type=image\\/[\\w]+\\&msg_num=[0-9]+\\&msg_folder=[\\w/%]+\\&msg_part="+anexos[i]['pid']); 
     790                    er_imagens = new RegExp("\\.\\/inc\\/get_archive.php\\?&&msgFolder=[\\w/%]+\\msgNumber=[0-9]+\\&indexPart=0."+(anexos[i]['pid']-1)+"&image=thumbnail"); 
    398791                    Result_imagens = er_imagens.exec(thumbs[i]); 
    399792                    thumbs[i] = thumbs[i].replace(Result_imagens,"'"+anexos[i]['url']+"'"); 
    400                     er_imagens = new RegExp("\\.\\/inc\\/show_img.php\\?msg_num=[0-9]+\\&msg_folder=[\\w/%]+\\&msg_part="+anexos[i]['pid']); 
     793                    er_imagens = new RegExp("\\.\\/inc\\/get_archive.php\\?&msgFolder=[\\w/%]+\\msgNumber=[0-9]+\\&indexPart=0."+(anexos[i]['pid']-1)+"&image=true"); 
    401794                    Result_imagens = er_imagens.exec(thumbs[i]); 
    402795                    thumbs[i] = thumbs[i].replace(Result_imagens,anexos[i]['url']); 
     
    475868    'ltrim(ltrim(substr(UPPER(ffrom),21,length(ffrom)),\':\'),\'"\') ' + 
    476869    'end ' + 
    477     'end as order_from,mail.subject from mail inner join folder on mail.id_folder=folder.rowid where mail.uid_usuario=? and folder.folder=? ' + 
     870    'end as order_from,mail.subject from mail inner join folder on mail.id_folder=folder.rowid where mail.uid_usuario=? and folder.folder=? and mail.visible=? ' + 
    478871    mail_filter + ' order by '; 
    479872                 
     
    496889 
    497890 
    498     var rs = this.dbGears.execute(sql,['%'+Element("user_email").value+'%',account_id,folder,msg_range_begin,emails_per_page]); 
     891    var rs = this.dbGears.execute(sql,['%'+Element("user_email").value+'%',account_id,folder,true,msg_range_begin,emails_per_page]); 
    499892    var cont = 0; 
    500893                 
    501     var rs3 = this.dbGears.execute('select count(*) from mail inner join folder on mail.id_folder=folder.rowid where mail.uid_usuario=? and folder.folder=?'+mail_filter,[account_id,folder]); 
     894    var rs3 = this.dbGears.execute('select count(*) from mail inner join folder on mail.id_folder=folder.rowid where mail.uid_usuario=? and folder.folder=? and mail.visible=?'+mail_filter,[account_id,folder,true]); 
    502895                                 
    503896    while (rs.isValidRow()) { 
     
    528921 
    529922        retorno[cont]['msg_sample'] = new Array(); 
    530  
    531         if( (preview_msg_subject == 0) && (preview_msg_tip == 0) ) 
    532         { 
    533923            retorno[cont]['msg_sample']['body'] = ""; 
    534         } 
    535         else 
    536         { 
    537             msg_body += ">"; 
    538             msg_body=this.strip_tags(msg_body); 
    539             msg_body=msg_body.replace(/\&nbsp;/ig," "); 
    540             retorno[cont]['msg_sample']['body'] = " - " + msg_body.substr(2,msg_body.length-1); 
    541         } 
     924 
    542925 
    543926        cont++; 
     
    562945    var retorno; 
    563946    var rs = this.dbGears.execute("select url from anexo where id_mail="+msg_number+" and pid = '"+pid+"'"); 
    564     retorno = rs.field(0) 
     947    retorno = rs.field(0); 
    565948    this.finalize(); 
    566949                 
     
    576959 
    577960local_messages.prototype.finalize = function() { 
     961    if(this.dbGears) 
    578962    this.dbGears.close(); 
    579963    this.dbGears = null; 
    580964} 
    581965 
    582 local_messages.prototype.delete_msgs = function(msgs_number,border_ID) { 
    583     this.init_local_messages(); 
     966local_messages.prototype.remove_msgs = function(msgs_number) 
     967{ 
     968    this.init_local_messages(); 
     969          
    584970    var rs = this.dbGears.execute("select url from anexo where id_mail in ("+msgs_number+")"); 
    585971    while(rs.isValidRow()) { 
     
    590976    this.dbGears.execute("delete from mail where rowid in ("+msgs_number+")"); 
    591977    this.finalize(); 
    592     if (msgs_number.length == 1) 
    593         write_msg(get_lang("The message was deleted.")); 
    594     else 
    595         write_msg(get_lang("The messages were deleted.")); 
    596                  
    597     mail_msg = Element("tbody_box"); 
    598  
     978} 
     979                 
     980local_messages.prototype.delete_msgs = function(msgs_number,border_ID) { 
     981 
     982        if(!msgs_number) 
     983                msgs_number = currentTab.toString().substr(0,currentTab.toString().indexOf("_r"));  
     984     
     985        if(msgs_number === ""){ 
     986                 write_msg(get_lang('No selected message.'));  
     987                 return; 
     988        } 
     989 
     990    this.remove_msgs( msgs_number ); 
     991         
     992    mail_msg = Element("tbody_box");     
    599993    try { 
    600994        msgs_exploded = msgs_number.split(","); 
     
    603997        msgs_exploded[0] = msgs_number; 
    604998    } 
     999        this.previous = 0; 
    6051000    var msg_to_delete; 
    6061001    for (var i=0; i<msgs_exploded.length; i++){ 
     
    6091004            if ( (msg_to_delete.style.backgroundColor != '') && (preferences.use_shortcuts == '1') ) 
    6101005                select_msg('null', 'down'); 
     1006            if (parseInt(preferences.delete_and_show_previous_message) && msg_to_delete && currentTab.toString().indexOf("_r") > 0) 
     1007                for(var ii=0; ii < mail_msg.rows.length; ii++){ 
     1008                        if(mail_msg.rows[ii] === msg_to_delete){ 
     1009                                if(ii == 0){ 
     1010                                        break; 
     1011                                }else{ 
     1012                                        this.previous = mail_msg.rows[(ii - 1)].attributes[0]; 
     1013                                        this.previous = parseInt(this.previous.value);  
     1014                                        break; 
     1015                                } 
     1016                        } 
     1017                } 
     1018                 
    6111019            mail_msg.removeChild(msg_to_delete); 
    612             decrement_folder_unseen(); 
    613         } 
    614     } 
     1020                Element('tot_m').innerHTML = parseInt(Element('tot_m').innerHTML) - 1; 
     1021        } 
     1022        } 
     1023        if (msgs_exploded.length == 1){ 
     1024        write_msg(get_lang("The message was deleted.")); 
     1025    } 
     1026    else 
     1027        write_msg(get_lang("The messages were deleted.")); 
    6151028    Element('chk_box_select_all_messages').checked = false; 
    616     if (border_ID != 'null') 
    617         delete_border(border_ID,'false'); 
    618                  
     1029                 
     1030         if (parseInt(preferences.delete_and_show_previous_message) && msg_to_delete && this.previous){ 
     1031                proxy_mensagens.get_msg(this.previous, folder, true, show_msg); 
     1032        }else if(currentTab != 0){ 
     1033                delete_border(currentTab,'false'); 
     1034        } 
    6191035} 
    6201036         
     
    6351051    this.init_local_messages(); 
    6361052        var no_errors = true; 
    637         var rowids_to_set; // rows ids 
    638     var msgs_to_set; // messages ids 
     1053    var msgs_to_set; 
    6391054        var one_message = false; 
    6401055    if (msgs_number == 'get_selected_messages') { 
    641                 msgs_to_set = get_selected_messages(); 
    642                 rowids_to_set = msgs_to_set.split(","); 
    643                 msgs_to_set = msgs_to_set.replace(/_s[^,]*/g,"").split(","); 
    644     } 
    645     else { 
    646         if(isNaN(parseInt(msgs_number))){       //message(s) sent to function 
    647             rowids_to_set = msgs_number.split(","); 
    648             msgs_to_set = msgs_number.replace(/_s[^,]*/g,"").split(","); 
    649             if (msgs_to_set.length==1) { 
    650                             //Just one message 
    651                 one_message = true; 
    652             } 
    653         }else{ 
    654             rowids_to_set = new Array(); 
    655             msgs_to_set = new Array() 
    656             msgs_to_set[0] = parseInt(msgs_number); 
    657             rowids_to_set[0] = parseInt(msgs_number); 
     1056                var msgs_to_set = get_selected_messages(); 
     1057                msgs_to_set= msgs_to_set.split(","); 
     1058    } 
     1059    else { //Just one message 
    6581060            one_message = true; 
    659         } 
     1061                msgs_to_set = new Array(); 
     1062                msgs_to_set[0] = msgs_number; 
    6601063    } 
    6611064    for (var i in msgs_to_set) { 
    6621065                         
    6631066        var matches = '';//Messages comming from other tabs. 
    664         if(matches === this.parse_id_mail(msgs_to_set[i])) { 
     1067        if(matches = this.parse_id_mail(msgs_to_set[i])) { 
    6651068            msgs_to_set[i] = matches[1]; 
    6661069        } 
     
    6741077        switch(flag) { 
    6751078            case "unseen": 
    676                         set_msg_as_unread(rowids_to_set[i]); 
     1079                        set_msg_as_unread(msgs_to_set[i]); 
    6771080                        header["Unseen"] = "U"; 
    6781081                        mail["Unseen"] = "U"; 
     
    6811084                        break; 
    6821085            case "flagged": 
    683                         set_msg_as_flagged(rowids_to_set[i]); 
     1086                        set_msg_as_flagged(msgs_to_set[i]); 
    6841087                        header["Flagged"] = "F"; 
    6851088                        mail["Flagged"] = "F"; 
     
    6911094                                no_errors = false; 
    6921095                        else { 
    693                             set_msg_as_unflagged(rowids_to_set[i]); 
     1096                            set_msg_as_unflagged(msgs_to_set[i]); 
    6941097                            header["Flagged"] = "N"; 
    6951098                                mail["Flagged"] = "N"; 
     
    7021105                        mail["Unseen"] = "N"; 
    7031106                        mail["header"]["Unseen"] = "N"; 
    704                         set_msg_as_read(rowids_to_set[i],true); 
     1107                        set_msg_as_read(msgs_to_set[i],true); 
    7051108                        unseen = 0; 
    7061109                        break; 
     
    7291132        rs.close(); 
    7301133                         
    731         if(Element("check_box_message_" + rowids_to_set[i])) 
    732             Element("check_box_message_" + rowids_to_set[i]).checked = false; 
     1134        if(Element("check_box_message_" + msgs_to_set[i])) 
     1135            Element("check_box_message_" + msgs_to_set[i]).checked = false; 
    7331136        var smail=connector.serialize(mail); 
    7341137        smail =smail.replace(/([^'])'([^'])('?)/g,"$1''$2$3$3"); 
     
    8151218            temp[2] = 0; 
    8161219 
    817         if(sentfolder ==  preferences.save_in_folder.replace("INBOX/","") || preferences.save_in_folder.replace("INBOX/","") == trashfolder || preferences.save_in_folder.replace("INBOX/","") == draftsfolder) 
     1220        if(sentfolder ==  preferences.save_in_folder.replace("INBOX" + cyrus_delimiter,"") || preferences.save_in_folder.replace("INBOX" + cyrus_delimiter,"") == trashfolder || preferences.save_in_folder.replace("INBOX" + cyrus_delimiter,"") == draftsfolder) 
    8181221            achouSentConf= true; 
    8191222 
     
    8351238                achouDrafts = true; 
    8361239                break; 
    837             case preferences.save_in_folder.replace("INBOX/",""): 
     1240            case preferences.save_in_folder.replace("INBOX" + cyrus_delimiter,""): 
    8381241                retorno_defaults[2] = temp; 
    8391242                achouSentConf = true; 
     
    8621265            this.create_folder(draftsfolder); 
    8631266        if(!achouSentConf) 
    864             this.create_folder(preferences.save_in_folder.replace("INBOX/","")); 
     1267            this.create_folder(preferences.save_in_folder.replace("INBOX" + cyrus_delimiter,"")); 
    8651268        return this.list_local_folders(); 
    8661269    } 
     
    9301333 
    9311334local_messages.prototype.move_messages = function(new_folder,msgs_number) { 
     1335     
     1336        if(!msgs_number) 
     1337                msgs_number = currentTab.toString().substr(0,currentTab.toString().indexOf("_r"));  
     1338         
    9321339    this.init_local_messages(); 
    9331340    var rs = this.dbGears.execute("select rowid from folder where folder=? and uid_usuario=?",[new_folder,account_id]); 
     
    9381345} 
    9391346 
    940 local_messages.prototype.setFolders = function(sFolders) 
    941 { 
    942     this.folders = sFolders; 
    943 } 
    944  
    945 local_messages.prototype.getFolders = function() 
    946 { 
    947     return this.folders; 
    948 } 
    949  
    9501347local_messages.prototype.setFilter = function(sFilter) 
    9511348{ 
     
    9721369local_messages.prototype.search = function(folders,sFilter) { 
    9731370    this.init_local_messages(); 
    974     //sFilter = unescape(sFilter); 
    9751371    this.setFilter(sFilter); 
    976     this.setFolders(folders); 
    9771372    var filters = sFilter.replace(/^##|##$/g,"").split('##'); 
    9781373    var friendly_filters = new Array(); 
     
    10171412        } 
    10181413    } 
    1019     var sql = "select mail.header,folder.folder,mail.rowid,size from mail inner join folder on mail.id_folder=folder.rowid where mail.uid_usuario="+account_id + " and folder.folder in ("; 
     1414    var sql = "select mail.header,folder.folder,mail.rowid,size from mail inner join folder on mail.id_folder=folder.rowid where visible=? and mail.uid_usuario="+account_id + " and folder.folder in ("; 
    10201415    for(var fnum in folders) { 
    10211416        sql+="'"+folders[fnum]+"'"; 
     
    10691464    sql += this.getSortType().match('^.*_REVERSE$') ? ' asc' : ' desc'; 
    10701465 
    1071     var rs = this.dbGears.execute(sql); 
     1466    var rs = this.dbGears.execute(sql,[true]); 
    10721467    var retorno = []; 
    10731468    var numRec = 0; 
     
    12261621    } 
    12271622 
    1228     AJAX.open('get', url, false); 
     1623    AJAX.open('get', encodeURI(url), false); 
    12291624    AJAX.send(null); 
    12301625    return AJAX.responseText; 
     
    12331628//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 
    12341629//para que elas sejam inseridas no imap pela função  imap_functions.unarchive_mail. 
    1235 local_messages.prototype.unarchive_msgs = function (folder,new_folder,msgs_number){ 
    1236  
    1237     if(!new_folder) 
    1238         new_folder='INBOX'; 
    1239     this.init_local_messages(); 
    1240     // alert(folder+new_folder+msgs_number); 
    1241     var handler_unarchive = function(data) 
    1242     { 
    1243                 if(data.error == '') 
    1244                     write_msg(get_lang('All messages are successfully unarchived')); 
    1245                 else 
    1246                     alert(data.error); 
    1247     } 
    1248  
    1249         if(currentTab.toString().indexOf("_r") != -1){ 
     1630    local_messages.prototype.unarchive_msgs = function (folder,new_folder,msgs_number){ 
     1631 
     1632    this.init_local_messages(); 
     1633 
     1634        // se a aba estiver aberta e selecionada, apenas a msg da aba é movida 
     1635        if(currentTab.toString().indexOf("_r") != -1) 
    12501636            msgs_number = currentTab.toString().substr(0,currentTab.toString().indexOf("_r")); 
    1251     } 
    1252          
    1253     if(msgs_number =='selected' || !msgs_number) 
    1254     { 
    1255                 msgs_number = get_selected_messages() 
    1256                 if (!msgs_number){ 
    1257                     write_msg(get_lang('No selected message.')); 
    1258                     return; 
    1259                 } 
    1260                 var rs = this.dbGears.execute("select mail,timestamp from mail where rowid in ("+msgs_number+")"); 
    1261                 var source=""; 
    1262                 var flags=""; 
    1263                 var timestamp=""; 
     1637         
     1638        if( msgs_number =='selected' || !msgs_number ) 
     1639            msgs_number = get_selected_messages(); 
     1640 
     1641        if( !msgs_number ) 
     1642            return write_msg(get_lang('No selected message.')); 
     1643 
     1644        document.getElementById("overlay").style.visibility = ""; 
     1645 
     1646        var rs = this.dbGears.execute("select mail,timestamp from mail where rowid in (" + msgs_number + ")"); 
     1647 
     1648        var source = [], flags = [], timestamp = []; 
    12641649                 
    12651650                while(rs.isValidRow()) { 
    1266                         mail=connector.unserialize(rs.field(0)); 
    1267                         mail.msg_source?source_tmp = escape(mail.msg_source):source_tmp = escape(this.get_src(mail.url_export_file)); 
    1268                         flags+="#@#@#@"+mail["Answered"]+":"+mail["Draft"]+":"+mail["Flagged"]+":"+mail["Unseen"]; 
    1269                         source+="#@#@#@"+source_tmp; 
    1270                         timestamp+="#@#@#@"+rs.field(1); 
     1651 
     1652            var mail = connector.unserialize(rs.field(0)); 
     1653 
     1654            flags.push( mail["Answered"]+":"+mail["Draft"]+":"+mail["Flagged"]+":"+mail["Unseen"] ); 
     1655            source.push( escape( mail.msg_source || this.get_src( mail.url_export_file ) ) ); 
     1656            timestamp.push( rs.field(1) ); 
     1657 
    12711658                        rs.next(); 
    12721659                } 
     1660 
    12731661                rs.close(); 
    12741662                this.finalize(); 
    1275     } 
    1276     else 
    1277     { 
    1278                 var rs = this.dbGears.execute("select mail,timestamp from mail where rowid="+msgs_number); 
    1279                 mail=connector.unserialize(rs.field(0)); 
    1280                 var source =""; 
    1281  
    1282                 mail.msg_source?source = escape(mail.msg_source):source = escape(this.get_src(mail.url_export_file)); 
    1283                 flags = mail["Answered"]+":"+mail["Draft"]+":"+mail["Flagged"]+":"+mail["Unseen"]; 
    1284                 timestamp=rs.field(1); 
    1285                 rs.close(); 
    1286                 this.finalize(); 
    1287     } 
    1288     params="&folder="+new_folder+"&source="+source+"&timestamp="+timestamp+"&flags="+flags; 
    1289     cExecute ("$this.imap_functions.unarchive_mail&", handler_unarchive, params); 
    1290 } 
     1663 
     1664        write_msg( "Desarquivando " + source.length + " mensagens... ", true ); 
     1665 
     1666        var sep = "#@#@#@"; 
     1667 
     1668        var params = "&folder=" + ( new_folder || 'INBOX' ) + 
     1669                     "&source=" + source.join(sep) + 
     1670                     "&timestamp=" + timestamp.join(sep) + 
     1671                     "&flags=" + flags.join(sep); 
     1672 
     1673        cExecute ("$this.imap_functions.unarchive_mail&", function(data){ 
     1674 
     1675            clean_msg(); 
     1676            document.getElementById("overlay").style.visibility = "hidden"; 
     1677            write_msg( get_lang( data.error || 'All messages are successfully unarchived' ) ); 
     1678 
     1679        }, params); 
     1680         
     1681        update_menu();  
     1682    } 
    12911683 
    12921684local_messages.prototype.get_msg_date = function (original_id, is_local){ 
     
    13091701        rs = this.dbGears.execute("select mail from mail where original_id="+original_id); 
    13101702    } 
    1311         if(!rs.field(0)){ 
    1312           ret=null; 
    1313     } 
    1314     else 
    1315         { 
    13161703    var tmp = connector.unserialize(rs.field(0)); 
    13171704    var ret = new Array(); 
     
    13201707    ret.msg_day = tmp.msg_day; 
    13211708    ret.msg_hour = tmp.msg_day; 
    1322         } 
     1709 
    13231710    rs.close(); 
    13241711    this.finalize(); 
     
    13561743    var flag = true; 
    13571744    var handler_local_mesgs_to_export = function(data){ 
     1745                        var filename = 'mensagens.zip'; 
     1746 
     1747                        if (data.match(/\.eml$/gi)) { 
     1748                                fn_regex = /[^\/]*\.eml$/i; 
     1749                                filename = fn_regex.exec(data); 
     1750                        } 
     1751 
    13581752        document.getElementById('lertOverlay').style.display='none'; 
    13591753        document.getElementById('lertContainer').style.display='none'; 
    13601754        document.getElementById('lertContainer').innerHTML = ''; 
    13611755        flag = false; 
    1362         download_attachments(null, null, data, null,null,'mensagens.zip'); 
     1756 
     1757                        download_attachments(null, null, data, null, null, filename); 
    13631758    } 
    13641759 
     
    15101905} 
    15111906         
     1907local_messages.prototype.as_trash = function(){//verifica se o usuario tem a pasta lixeira no arquivamento local 
     1908        this.init_local_messages(); 
     1909    var rs = this.dbGears.execute("select folder from folder where uid_usuario="+account_id+" and folder = \"Trash\""); 
     1910        var check = rs.isValidRow(); 
     1911        this.finalize(); 
     1912    if(check) 
     1913                return true; 
     1914        else 
     1915                return false; 
     1916} 
     1917 
    15121918local_messages.prototype.get_folders_to_sync = function() {//Precisa ter visibilidade ao array de linguagens. 
    15131919    this.init_local_messages(); 
     
    15171923        temp = new Array(); 
    15181924        temp[0] = rs.field(0); 
    1519         if(temp[0]=='INBOX/Drafts' ||temp[0]=='INBOX/Trash' || temp[0]=='INBOX/Sent') { 
     1925        if(temp[0]=='INBOX' + cyrus_delimiter + 'Drafts' ||temp[0]=='INBOX' + cyrus_delimiter + 'Trash' || temp[0]=='INBOX' + cyrus_delimiter + 'Sent') { 
    15201926            temp[1] = array_lang[rs.field(1).toLowerCase()]; 
    15211927        } 
     
    15331939local_messages.prototype.install_offline = function(urlOffline,urlIcone,uid_usuario,login,pass,redirect) { 
    15341940    if (!window.google || !google.gears) { 
    1535         temp = confirm(document.getElementById('lang_gears_redirect').value); 
    1536         if (temp) { 
    15371941            expresso_local_messages.installGears(); 
    1538         } 
    15391942        return; 
    1540  
    15411943    } 
    15421944                 
Note: See TracChangeset for help on using the changeset viewer.