Changeset 5134 for trunk/expressoMail1_2/js/local_messages.js
- Timestamp:
- 11/03/11 13:24:28 (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/expressoMail1_2/js/local_messages.js
r4939 r5134 8 8 this.store = null; 9 9 this.filterSerch = ""; 10 this.folders = [];11 10 this.sortType = ""; 12 11 } … … 122 121 123 122 local_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" 128 135 else 129 location.href = preferences.googlegears_url + "/gears.xpi";130 136 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; 137 145 } 138 146 … … 171 179 this.dbGears.execute('create table if not exists mail' + 172 180 ' (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))'); 174 182 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)'); 176 184 this.dbGears.execute('create table if not exists folders_sync' + 177 185 ' (id_folder text,folder_name text,uid_usuario int)'); … … 184 192 try { 185 193 this.dbGears.execute('alter table mail add column size int'); 186 }catch(Exception) { 194 } 195 catch(Exception) { 187 196 188 197 } 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 189 210 var rs = this.dbGears.execute('select rowid,header from mail where size is null'); 190 211 while(rs.isValidRow()) { … … 246 267 } 247 268 269 sync = { length: 0, fails: [], success: [], mails: {}, archived: [] }; 270 271 local_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 308 local_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 339 local_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 367 local_messages.prototype.isArchiving = function( msgsNumber, folder ){ 368 return this.isArchived( msgsNumber, folder, true ); 369 } 370 371 local_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 405 local_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 454 local_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 521 local_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 552 local_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 584 local_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 605 local_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 248 641 local_messages.prototype.insert_mail = function(msg_info,msg_header,anexos,folder) { 249 642 try { … … 391 784 if(anexos[i]['url'] && anexos[i]['url'].match(/((jpg)|(jpeg)|(png)|(gif)|(bmp))/gi)) 392 785 { 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)); 394 787 var Result_imagens = er_imagens.exec(retorno['body']); 395 788 retorno['body'] = retorno['body'].replace(Result_imagens,anexos[i]['url']); 396 789 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"); 398 791 Result_imagens = er_imagens.exec(thumbs[i]); 399 792 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"); 401 794 Result_imagens = er_imagens.exec(thumbs[i]); 402 795 thumbs[i] = thumbs[i].replace(Result_imagens,anexos[i]['url']); … … 475 868 'ltrim(ltrim(substr(UPPER(ffrom),21,length(ffrom)),\':\'),\'"\') ' + 476 869 '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=? ' + 478 871 mail_filter + ' order by '; 479 872 … … 496 889 497 890 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]); 499 892 var cont = 0; 500 893 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]); 502 895 503 896 while (rs.isValidRow()) { … … 528 921 529 922 retorno[cont]['msg_sample'] = new Array(); 530 531 if( (preview_msg_subject == 0) && (preview_msg_tip == 0) )532 {533 923 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(/\ /ig," "); 540 retorno[cont]['msg_sample']['body'] = " - " + msg_body.substr(2,msg_body.length-1); 541 } 924 542 925 543 926 cont++; … … 562 945 var retorno; 563 946 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); 565 948 this.finalize(); 566 949 … … 576 959 577 960 local_messages.prototype.finalize = function() { 961 if(this.dbGears) 578 962 this.dbGears.close(); 579 963 this.dbGears = null; 580 964 } 581 965 582 local_messages.prototype.delete_msgs = function(msgs_number,border_ID) { 583 this.init_local_messages(); 966 local_messages.prototype.remove_msgs = function(msgs_number) 967 { 968 this.init_local_messages(); 969 584 970 var rs = this.dbGears.execute("select url from anexo where id_mail in ("+msgs_number+")"); 585 971 while(rs.isValidRow()) { … … 590 976 this.dbGears.execute("delete from mail where rowid in ("+msgs_number+")"); 591 977 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 980 local_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"); 599 993 try { 600 994 msgs_exploded = msgs_number.split(","); … … 603 997 msgs_exploded[0] = msgs_number; 604 998 } 999 this.previous = 0; 605 1000 var msg_to_delete; 606 1001 for (var i=0; i<msgs_exploded.length; i++){ … … 609 1004 if ( (msg_to_delete.style.backgroundColor != '') && (preferences.use_shortcuts == '1') ) 610 1005 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 611 1019 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.")); 615 1028 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 } 619 1035 } 620 1036 … … 635 1051 this.init_local_messages(); 636 1052 var no_errors = true; 637 var rowids_to_set; // rows ids 638 var msgs_to_set; // messages ids 1053 var msgs_to_set; 639 1054 var one_message = false; 640 1055 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 658 1060 one_message = true; 659 } 1061 msgs_to_set = new Array(); 1062 msgs_to_set[0] = msgs_number; 660 1063 } 661 1064 for (var i in msgs_to_set) { 662 1065 663 1066 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])) { 665 1068 msgs_to_set[i] = matches[1]; 666 1069 } … … 674 1077 switch(flag) { 675 1078 case "unseen": 676 set_msg_as_unread( rowids_to_set[i]);1079 set_msg_as_unread(msgs_to_set[i]); 677 1080 header["Unseen"] = "U"; 678 1081 mail["Unseen"] = "U"; … … 681 1084 break; 682 1085 case "flagged": 683 set_msg_as_flagged( rowids_to_set[i]);1086 set_msg_as_flagged(msgs_to_set[i]); 684 1087 header["Flagged"] = "F"; 685 1088 mail["Flagged"] = "F"; … … 691 1094 no_errors = false; 692 1095 else { 693 set_msg_as_unflagged( rowids_to_set[i]);1096 set_msg_as_unflagged(msgs_to_set[i]); 694 1097 header["Flagged"] = "N"; 695 1098 mail["Flagged"] = "N"; … … 702 1105 mail["Unseen"] = "N"; 703 1106 mail["header"]["Unseen"] = "N"; 704 set_msg_as_read( rowids_to_set[i],true);1107 set_msg_as_read(msgs_to_set[i],true); 705 1108 unseen = 0; 706 1109 break; … … 729 1132 rs.close(); 730 1133 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; 733 1136 var smail=connector.serialize(mail); 734 1137 smail =smail.replace(/([^'])'([^'])('?)/g,"$1''$2$3$3"); … … 815 1218 temp[2] = 0; 816 1219 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) 818 1221 achouSentConf= true; 819 1222 … … 835 1238 achouDrafts = true; 836 1239 break; 837 case preferences.save_in_folder.replace("INBOX /",""):1240 case preferences.save_in_folder.replace("INBOX" + cyrus_delimiter,""): 838 1241 retorno_defaults[2] = temp; 839 1242 achouSentConf = true; … … 862 1265 this.create_folder(draftsfolder); 863 1266 if(!achouSentConf) 864 this.create_folder(preferences.save_in_folder.replace("INBOX /",""));1267 this.create_folder(preferences.save_in_folder.replace("INBOX" + cyrus_delimiter,"")); 865 1268 return this.list_local_folders(); 866 1269 } … … 930 1333 931 1334 local_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 932 1339 this.init_local_messages(); 933 1340 var rs = this.dbGears.execute("select rowid from folder where folder=? and uid_usuario=?",[new_folder,account_id]); … … 938 1345 } 939 1346 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 950 1347 local_messages.prototype.setFilter = function(sFilter) 951 1348 { … … 972 1369 local_messages.prototype.search = function(folders,sFilter) { 973 1370 this.init_local_messages(); 974 //sFilter = unescape(sFilter);975 1371 this.setFilter(sFilter); 976 this.setFolders(folders);977 1372 var filters = sFilter.replace(/^##|##$/g,"").split('##'); 978 1373 var friendly_filters = new Array(); … … 1017 1412 } 1018 1413 } 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 ("; 1020 1415 for(var fnum in folders) { 1021 1416 sql+="'"+folders[fnum]+"'"; … … 1069 1464 sql += this.getSortType().match('^.*_REVERSE$') ? ' asc' : ' desc'; 1070 1465 1071 var rs = this.dbGears.execute(sql );1466 var rs = this.dbGears.execute(sql,[true]); 1072 1467 var retorno = []; 1073 1468 var numRec = 0; … … 1226 1621 } 1227 1622 1228 AJAX.open('get', url, false);1623 AJAX.open('get', encodeURI(url), false); 1229 1624 AJAX.send(null); 1230 1625 return AJAX.responseText; … … 1233 1628 //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 1234 1629 //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) 1250 1636 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 = []; 1264 1649 1265 1650 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 1271 1658 rs.next(); 1272 1659 } 1660 1273 1661 rs.close(); 1274 1662 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+"×tamp="+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 "×tamp=" + 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 } 1291 1683 1292 1684 local_messages.prototype.get_msg_date = function (original_id, is_local){ … … 1309 1701 rs = this.dbGears.execute("select mail from mail where original_id="+original_id); 1310 1702 } 1311 if(!rs.field(0)){1312 ret=null;1313 }1314 else1315 {1316 1703 var tmp = connector.unserialize(rs.field(0)); 1317 1704 var ret = new Array(); … … 1320 1707 ret.msg_day = tmp.msg_day; 1321 1708 ret.msg_hour = tmp.msg_day; 1322 } 1709 1323 1710 rs.close(); 1324 1711 this.finalize(); … … 1356 1743 var flag = true; 1357 1744 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 1358 1752 document.getElementById('lertOverlay').style.display='none'; 1359 1753 document.getElementById('lertContainer').style.display='none'; 1360 1754 document.getElementById('lertContainer').innerHTML = ''; 1361 1755 flag = false; 1362 download_attachments(null, null, data, null,null,'mensagens.zip'); 1756 1757 download_attachments(null, null, data, null, null, filename); 1363 1758 } 1364 1759 … … 1510 1905 } 1511 1906 1907 local_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 1512 1918 local_messages.prototype.get_folders_to_sync = function() {//Precisa ter visibilidade ao array de linguagens. 1513 1919 this.init_local_messages(); … … 1517 1923 temp = new Array(); 1518 1924 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') { 1520 1926 temp[1] = array_lang[rs.field(1).toLowerCase()]; 1521 1927 } … … 1533 1939 local_messages.prototype.install_offline = function(urlOffline,urlIcone,uid_usuario,login,pass,redirect) { 1534 1940 if (!window.google || !google.gears) { 1535 temp = confirm(document.getElementById('lang_gears_redirect').value);1536 if (temp) {1537 1941 expresso_local_messages.installGears(); 1538 }1539 1942 return; 1540 1541 1943 } 1542 1944
Note: See TracChangeset
for help on using the changeset viewer.