Changeset 1622 for trunk/expressoMail1_2/js/local_messages.js
- Timestamp:
- 11/11/09 17:13:52 (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/expressoMail1_2/js/local_messages.js
r1595 r1622 9 9 this.fileSubmitter = null; 10 10 } 11 12 function HeaderFlags() 13 { 14 this.Answered = 0; 15 //this.Draft = 0; 16 this.Flagged = 0; 17 this.Recent = 0; 18 } 19 20 HeaderFlags.prototype.getAnswered = function() 21 { 22 return this.Answered; 23 } 24 25 HeaderFlags.prototype.setAnswered = function(answered) 26 { 27 this.Answered = answered; 28 } 29 30 //HeaderFlags.prototype.getDraft = function() 31 //{ 32 // return this.Draft; 33 //} 34 35 HeaderFlags.prototype.setDraft = function(draft) 36 { 37 this.Draft = draft; 38 } 39 40 HeaderFlags.prototype.getFlagged = function() 41 { 42 return this.Flagged; 43 } 44 45 HeaderFlags.prototype.setFlagged = function(flagged) 46 { 47 this.Flagged = flagged; 48 } 49 50 HeaderFlags.prototype.getRecent = function() 51 { 52 return this.Recent; 53 } 54 55 HeaderFlags.prototype.setRecent = function(recent) 56 { 57 this.Recent = recent; 58 } 59 60 function FlagsParser(headerObj) 61 { 62 this.Header = headerObj; 63 } 64 65 FlagsParser.prototype.parse = function() 66 { 67 var tmp = null; 68 if (typeof this.Header == 'string') 69 { 70 tmp = connector.unserialize(this.Header); 71 } 72 else 73 { 74 tmp = this.Header; 75 } 76 77 flags = new HeaderFlags(); 78 79 if (tmp.Answered && tmp.Answered.match(/^A$/)) 80 { 81 flags.setAnswered(1); 82 //if (tmp.Draft && tmp.Draft.match(/^X$/)) 83 //{ 84 // flags.setDraft(1); 85 //} 86 } 87 88 if (tmp.Flagged && tmp.Flagged.match(/^F$/)){ 89 flags.setFlagged(1); 90 } 91 92 if (tmp.Forwarded && tmp.Forwarded.match(/^F$/)){ 93 flags.setAnswered(1); 94 //flags.setDraft(1); 95 } 96 97 if (tmp.Recent && tmp.Recent.match(/^R$/)){ 98 flags.setRecent(1); 99 } 100 101 return flags; 102 103 } 104 11 105 local_messages.prototype.installGears = function (){ 12 106 temp = confirm(get_lang("To use local messages you have to install google gears. Would you like to install it now?")); … … 83 177 } 84 178 //end of temporary code 179 180 try { 181 this.dbGears.execute('begin transaction'); 182 this.dbGears.execute('alter table mail add column answered int'); 183 //this.dbGears.execute('alter table mail add column draft int'); 184 this.dbGears.execute('alter table mail add column flagged int'); 185 this.dbGears.execute('alter table mail add column recent int'); 186 //this.dbGears.execute('commit transaction'); 187 //transaction_ended = true; 188 //if (transaction_ended){ 189 rs = null; 190 rs = this.dbGears.execute('select rowid,header from mail'); 191 192 // Popular os valores das novas colunas. 193 var tmp = null; 194 //this.dbGears.execute('begin transaction'); 195 while(rs.isValidRow()) { 196 //tmp = connector.unserialize(rs.field(1)); 197 parser = new FlagsParser(rs.field(1)); 198 flags = parser.parse(); 199 200 this.dbGears.execute('update mail set answered='+flags.getAnswered()+ 201 ',flagged='+flags.getFlagged()+',recent='+flags.getRecent()+ 202 //',draft='+flags.getDraft()+' where rowid='+rs.field(0)); 203 ' where rowid='+rs.field(0)); 204 205 rs.next(); 206 } 207 this.dbGears.execute('commit transaction'); 208 209 //tmp = null; 210 211 }catch(Exception) { 212 this.dbGears.execute('rollback transaction'); 213 } 214 85 215 } 86 216 … … 156 286 if(msg_info.Unseen=="U") 157 287 unseen = 1; 158 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]); 288 289 //parse header 290 parser = new FlagsParser(msg_header); 291 flags = parser.parse(); 292 293 //insere o e-mail 294 //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]); 295 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) values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)",[mail,original_id,original_folder,header,timestamp,login,unseen,id_folder,from,subject,to,cc,body,size,flags.getAnswered(),flags.getFlagged(),flags.getRecent()]); 159 296 var call_back = function() { 160 297 } … … 571 708 } 572 709 573 local_messages.prototype.search = function(folders,filter) { 574 this.init_local_messages(); 575 var filters = filter.replace(/##/g," "); 576 filters = filters.replace(/^ +| +$/g,""); 577 filters = filters.split("<=>"); 710 local_messages.prototype.search = function(folders,sFilter) { 711 this.init_local_messages(); 712 var filters = sFilter.replace(/^##|##$/g,"").split('##'); 578 713 var friendly_filters = new Array(); 579 if (filters[0].indexOf('ALL') != -1) { //all filters... 580 friendly_filters.push("SUBJECT"); 581 friendly_filters.push(filters[1]); 582 friendly_filters.push("BODY"); 583 friendly_filters.push(filters[1]); 584 friendly_filters.push("FROM"); 585 friendly_filters.push(filters[1]); 586 friendly_filters.push("TO"); 587 friendly_filters.push(filters[1]); 588 friendly_filters.push("CC"); 589 friendly_filters.push(filters[1]); 714 715 if (sFilter.indexOf('ALL') != -1) { //all filters... 716 filters[0] = sFilter.replace(/##/g,""); 717 tmp = filters[0].split("<=>"); 718 719 searchKey = new Array(); 720 searchKey.push("SUBJECT"); 721 searchKey.push(tmp[1]); 722 friendly_filters.push(searchKey); 723 724 searchKey = new Array(); 725 searchKey.push("BODY"); 726 searchKey.push(tmp[1]); 727 friendly_filters.push(searchKey); 728 729 searchKey = new Array(); 730 searchKey.push("FROM"); 731 searchKey.push(tmp[1]); 732 friendly_filters.push(searchKey); 733 734 searchKey = new Array(); 735 searchKey.push("TO"); 736 searchKey.push(tmp[1]); 737 friendly_filters.push(searchKey); 738 739 searchKey = new Array(); 740 searchKey.push("CC"); 741 searchKey.push(tmp[1]); 742 friendly_filters.push(searchKey); 590 743 } 591 744 else { 592 friendly_filters[0] = filters[0]; 593 for (var i in filters){594 if (i != 0){595 var temp = filters[i].split("");596 friendly_filters.push(temp[0]);597 friendly_filters.push(temp[1]);598 599 745 for (var i=0; i<filters.length; i++) 746 { 747 if (filters[i] != ""){ 748 //tmp[0] = tmp[0].replace(/^\s+|\s+$/g,""); 749 //tmp[1] = tmp[1].replace(/^\s+|\s+$/g,""); 750 friendly_filters.push(filters[i].split("<=>")); 751 } 752 } 600 753 } 601 754 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 ("; … … 607 760 sql += ") and ("; 608 761 for (var z=0;z<friendly_filters.length-1;z++) { 609 if(z%2==0) { 610 if (z != 0) { 611 if (filters[0].indexOf('ALL') != -1) 612 sql += " or"; 613 else 614 sql += " and"; 615 } 616 sql+=" mail."+this.aux_convert_filter_field(friendly_filters[z])+" like '%"+url_decode(friendly_filters[z+1])+"%'"; 617 } 762 if (z != 0) { 763 if (sFilter.indexOf('ALL') != -1) 764 sql += " or"; 765 else 766 sql += " and"; 767 } 768 var cond = friendly_filters[z][0].replace(/^\s+|\s+$/g,""); 769 if (cond == "SINCE" || cond == "BEFORE" | cond == "ON"){ 770 771 tmpDate = url_decode(friendly_filters[z][1]).split('/'); 772 773 // Date = url_decode(friendly_filters[z][1]); 774 sql+=" mail.timestamp " + this.aux_convert_filter_field(friendly_filters[z][0], tmpDate); 775 } 776 else if (!friendly_filters[z][1]) 777 { 778 sql+=" mail."+this.aux_convert_filter_field(friendly_filters[z][0]); 779 } 780 else 781 { 782 sql+=" mail."+this.aux_convert_filter_field(friendly_filters[z][0])+" like '%"+url_decode(friendly_filters[z][1])+"%'"; 783 } 618 784 } 619 785 sql += ")"; … … 621 787 var retorno = ""; 622 788 while(rs.isValidRow()) { 623 624 retorno+="##"+"local_"+rs.field(1)+"--"+header["from"]["name"]+"--"+header["subject"]+"--"+header["udate"]+"--"+this.aux_convert_size(rs.field(3))+"--"+header["Unseen"]+header["Recent"]+header["Flagged"]+header["Draft"]+"--"+rs.field(2)+"##";625 789 var header = connector.unserialize(rs.field(0)); 790 retorno+="##"+"local_"+rs.field(1)+"--"+"local_"+rs.field(1)+"--"+header["from"]["name"]+"--"+header["subject"]+"--"+header["udate"]+"--"+this.aux_convert_size(rs.field(3))+"--"+header["Unseen"]+header["Recent"]+header["Flagged"]+header["Draft"]+"--"+rs.field(2)+"##"; 791 rs.next(); 626 792 } 627 793 … … 641 807 } 642 808 643 local_messages.prototype.aux_convert_filter_field = function(filter) { 809 local_messages.prototype.aux_convert_filter_field = function(filter,date) { 810 if (typeof date != 'undefined'){ 811 var dateObj=new Date(); 812 dateObj.setFullYear(date[2],date[1]-1,date[0]); 813 } 814 644 815 if((filter=="SUBJECT ") || (filter=="SUBJECT")) 645 816 return "subject"; … … 652 823 else if((filter=="CC ") || (filter=="CC")) 653 824 return "cc"; 825 else if (filter.replace(/^\s+|\s+$/g,"") == "SINCE"){ 826 dateObj.setHours(0, 0, 0, 0); 827 return ">= " + dateObj.getTime().toString(10).substr(0, 10); 828 } 829 else if (filter.replace(/^\s+|\s+$/g,"") == "BEFORE"){ 830 dateObj.setHours(23, 59, 59, 999); 831 return "<= " + dateObj.getTime().toString(10).substr(0, 10); 832 } 833 else if (filter.replace(/^\s+|\s+$/g,"") == "ON"){ 834 dateObj.setHours(0, 0, 0, 0); 835 var ts1 = dateObj.getTime().toString(10).substr(0, 10); 836 dateObj.setHours(23, 59, 59, 999); 837 var ts2 = dateObj.getTime().toString(10).substr(0, 10); 838 return ">= " + ts1 + ") and (timestamp <= " + ts2; 839 } 840 else if (filter.replace(/^\s+|\s+$/g,"") == "FLAGGED") 841 return "flagged = 1"; 842 else if (filter.replace(/^\s+|\s+$/g,"") == "UNFLAGGED") 843 return "flagged = 0"; 844 else if (filter.replace(/^\s+|\s+$/g,"") == "UNSEEN") 845 return "unseen = 1"; 846 else if (filter.replace(/^\s+|\s+$/g,"") == "SEEN") 847 return "unseen = 0"; 848 else if (filter.replace(/^\s+|\s+$/g,"") == "ANSWERED") 849 return "answered = 1"; 850 else if (filter.replace(/^\s+|\s+$/g,"") == "UNANSWERED") 851 return "answered = 0"; 852 else if (filter.replace(/^\s+|\s+$/g,"") == "RECENT") 853 return "recent = 1"; 854 else if (filter.replace(/^\s+|\s+$/g,"") == "OLD") 855 return "recent = 0"; 856 654 857 } 655 858
Note: See TracChangeset
for help on using the changeset viewer.