Changeset 1000
- Timestamp:
- 06/16/09 18:29:16 (15 years ago)
- Location:
- trunk/expressoMail1_2
- Files:
-
- 1 added
- 12 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/expressoMail1_2/inc/class.exporteml.inc.php
r711 r1000 44 44 45 45 // create EML File. 46 function createFileEml($sEMLData, $tempDir, $id) 46 // Funcao alterada para tratar a exportacao 47 // de mensagens arquivadas localmente. 48 // Rommel Cysne (rommel.cysne@serpro.gov.br) 49 // em 17/12/2008. 50 function createFileEml($sEMLData, $tempDir, $id, $subject=false, $i) 47 51 { 48 52 if($id) … … 54 58 $subject = substr($subject, 0, 59); 55 59 56 $subject = ereg_replace('/', '\'', $subject); 60 //$subject = ereg_replace('/', '\'', $subject); 61 $from = "áàâãäéèêëíìîïóòôõöúùûüç?\"!@#$%š&*()-=+Ž`[]{}~^,<>;:/?\\|¹²³£¢¬§ªº°ÁÀÂÃÄÉÈÊËÍÌÎÏÓÒÔÕÖÚÙÛÜÇ"; 62 $to = "aaaaaeeeeiiiiooooouuuuc__________________________________________AAAAAEEEEIIIIOOOOOUUUUC"; 63 $subject = strtr($subject,$from,$to); 57 64 $file = $subject."_".$id.".eml"; 65 } else{ 66 // Se mensagem for arquivada localmente, $subject (assunto da mensagem) 67 // sera passado para compor o nome do arquivo .eml; 68 69 if($subject){ 70 $from = "áàâãäéèêëíìîïóòôõöúùûüç?\"!@#$%š&*()-=+Ž`[]{}~^,<>;:/?\\|¹²³£¢¬§ªº°ÁÀÂÃÄÉÈÊËÍÌÎÏÓÒÔÕÖÚÙÛÜÇ"; 71 $to = "aaaaaeeeeiiiiooooouuuuc__________________________________________AAAAAEEEEIIIIOOOOOUUUUC"; 72 $subject = strtr($subject,$from,$to); 73 //$subject = ereg_replace(':', '_', $subject); 74 //$subject = ereg_replace('/', '_', $subject); 75 $file = $subject."_".$i.".eml"; 76 } else{ 77 $file = "email_".md5(microtime()).".eml"; 58 78 } 59 else{60 $file = "email_".md5(microtime()).".eml";61 79 } 62 80 … … 124 142 } 125 143 144 // Funcao alterada para tratar a exportacao 145 // de mensagens arquivadas localmente. 146 // Rommel Cysne (rommel.cysne@serpro.gov.br) 147 // em 17/12/2008. 126 148 function makeAll($params) { 127 128 $this-> folder = $params['folder']; 129 $this->folder = mb_convert_encoding($this->folder, "UTF7-IMAP","UTF-8"); 130 $array_ids = explode(',', $params['msgs_to_export']); 131 $error = False; 132 $fileNames = ""; 133 $tempDir = ini_get("session.save_path"); 134 $this->connectImap(); 135 136 for($i = 0; $i < count($array_ids); $i++) { 137 149 // Exportacao de mensagens arquivadas localmente 150 if($params['l_msg'] == "t"){ 151 // Recebe todos os subjects e bodies das mensagens locais selecionadas para exportacao 152 // e gera arrays com os conteudos separados; 153 $array_mesgs = explode('@@',$params['mesgs']); 154 $array_subjects = explode('@@',$params['subjects']); 155 $array_ids = explode(',', $params['msgs_to_export']); 156 $tempDir = ini_get("session.save_path"); 157 // Para cada mensagem selecionada sera gerado um arquivo .eml cujo titulo sera o assunto (subject) da mesma; 158 include_once("class.imap_functions.inc.php"); 159 $imapf = new imap_functions(); 160 foreach($array_ids as $i=>$id) { 161 $sEMLData=$imapf->treat_base64_from_post($array_mesgs[$i]); 162 $fileName=$this->CreateFileEml($sEMLData, $tempDir,'',$array_subjects[$i],$i); 163 if(!$fileName){ 164 $error = True; 165 break; 166 } else{ 167 $fileNames .= "\"".$fileName."\" "; 168 } 169 } 170 $nameFileZip = 'False'; 171 if($fileNames && !$error) { 172 $nameFileZip = $this -> createFileZip($fileNames, $tempDir); 173 if($nameFileZip){ 174 $file = $tempDir.'/'.$nameFileZip; 175 } else{ 176 $file = false; 177 } 178 179 } else{ 180 $file = false; 181 } 182 183 return $file; 184 185 // Exportacao de mensagens da caixa de entrada (imap) - processo original do Expresso 186 } else{ 187 $this-> folder = $params['folder']; 188 $this->folder = mb_convert_encoding($this->folder, "UTF7-IMAP","UTF-8"); 189 $array_ids = explode(',', $params['msgs_to_export']); 190 $error = False; 191 $fileNames = ""; 192 $tempDir = ini_get("session.save_path"); 193 $this->connectImap(); 194 for($i = 0; $i < count($array_ids); $i++) { 138 195 $header = $this-> getHeader($array_ids[$i]); 139 196 $body = $this-> getBody($array_ids[$i]); … … 165 222 166 223 return $file; 167 } 224 } 225 } 168 226 169 227 function export_msg($params) { … … 209 267 imap_close($this->mbox_stream); 210 268 return $urlPath; 211 269 } 212 270 213 271 function remove_accents($string) { … … 241 299 $imap_attachment = new imap_attachment(); 242 300 $attachments = $imap_attachment->download_attachment($this->mbox_stream, $id_number); 243 244 245 246 301 foreach($attachments as $i => $attachment){ 247 302 if($i && $i == 'names') … … 280 335 imap_close($this->mbox_stream); 281 336 return $return_attachments; 282 337 } 283 338 284 339 private function getFileType($nameFile) { -
trunk/expressoMail1_2/inc/class.imap_functions.inc.php
r990 r1000 209 209 * com .emls gerados pelo expresso, e o arquivo pode ser um zip contendo vários emls ou um .eml. 210 210 */ 211 /** 212 * Função que importa arquivos .eml exportados pelo expresso para a caixa do usuário. Testado apenas 213 * com .emls gerados pelo expresso, e o arquivo pode ser um zip contendo vários emls ou um .eml. 214 */ 211 215 function import_msgs($params) { 212 if(!$this->mbox) 216 if(!$this->mbox) 213 217 $this->mbox = $this->open_mbox(); 218 219 if( preg_match('/local_/',$params["folder"]) ) 220 { 221 222 $tmp_box = mb_convert_encoding('INBOX/Lixeira/tmpMoveToLocal', "UTF7-IMAP", "UTF-8"); 223 if ( ! imap_createmailbox( $this -> mbox,"{".$this -> imap_server."}$tmp_box" ) ) 224 return $this->functions->getLang( 'Import to Local : fail...' ); 225 imap_reopen($this->mbox, "{".$this->imap_server.":".$this->imap_port.$this->imap_options."}".$tmp_box); 226 $params["folder"] = $tmp_box; 227 } 214 228 $errors = array(); 215 229 $invalid_format = false; … … 218 232 if((($quota['limit'] - $quota['usage'])*1024) <= $params['FILES'][0]['size']){ 219 233 return array( 'error' => $this->functions->getLang("fail in import:"). 220 " ".$this->functions->getLang("Over quota")); 234 " ".$this->functions->getLang("Over quota")); 221 235 } 222 236 if(substr($filename,strlen($filename)-4)==".zip") { … … 225 239 if ($zip) { 226 240 while ($zip_entry = zip_read($zip)) { 227 241 228 242 if (zip_entry_open($zip, $zip_entry, "r")) { 229 243 $email = zip_entry_read($zip_entry, zip_entry_filesize($zip_entry)); … … 239 253 zip_close($zip); 240 254 } 255 256 if ( isset( $tmp_box ) && ! sizeof( $errors ) ) 257 { 258 259 $mc = imap_check($this->mbox); 260 261 $result = imap_fetch_overview( $this -> mbox, "1:{$mc -> Nmsgs}", 0 ); 262 263 $ids = array( ); 264 foreach ($result as $overview) 265 $ids[ ] = $overview -> uid; 266 267 return implode( ',', $ids ); 268 } 241 269 } 242 270 else if(substr($filename,strlen($filename)-4)==".eml") { … … 251 279 } 252 280 } 253 else 254 { 281 else 282 { 283 if ( isset( $tmp_box ) ) 284 imap_deletemailbox( $this->mbox,"{".$this -> imap_server."}$tmp_box" ); 285 255 286 return array("error" => $this->functions->getLang("wrong file format")); 256 287 $invalid_format = true; 257 288 } 258 289 259 290 if(!$invalid_format) { 260 291 if(count($errors)>0) { … … 266 297 } 267 298 else 268 return $this->functions->getLang("The import was executed successfully."); 269 } 270 } 271 299 return $this->functions->getLang("The import was executed successfully."); 300 } 301 } 302 /* 272 303 Remove os anexos de uma mensagem. A estratégia para isso é criar uma mensagem nova sem os anexos, mantendo apenas 273 304 a primeira parte do e-mail, que é o texto, sem anexos. … … 2851 2882 return $header; 2852 2883 } 2884 2885 //Por Bruno Costa(bruno.vieira-costa@serpro.gov.br - Insere emails no imap a partir do fonte do mesmo. Se o argumento timestamp for passado ele utiliza do script python 2886 ///expressoMail1_2/imap.py para inserir uma msg com o horário correto pois isso não é porssível com a função imap_append do php. 2887 2888 function insert_email($source,$folder,$timestamp){ 2889 $username = $_SESSION['phpgw_info']['expressomail']['user']['userid']; 2890 $password = $_SESSION['phpgw_info']['expressomail']['user']['passwd']; 2891 $imap_server = $_SESSION['phpgw_info']['expressomail']['email_server']['imapServer']; 2892 $imap_port = $_SESSION['phpgw_info']['expressomail']['email_server']['imapPort']; 2893 $imap_options = '/notls/novalidate-cert'; 2894 $mbox_stream = imap_open("{".$imap_server.":".$imap_port.$imap_options."}".$folder, $username, $password); 2895 if(imap_last_error()) 2896 { 2897 imap_createmailbox($mbox_stream,imap_utf7_encode("{".$imap_server."}".$folder)); 2898 } 2899 if($timestamp){ 2900 $tempDir = ini_get("session.save_path"); 2901 $file = $tempDir."imap_".md5(microtime()); 2902 $f = fopen($file,"w"); 2903 fputs($f,base64_encode($source)); 2904 fclose($f); 2905 $command = "python ".$_SERVER['DOCUMENT_ROOT']."expressoMail1_2/imap.py ".$imap_server." ".$imap_port." ".$username." ".$password." ".$timestamp." ".$folder." ".$file; 2906 $return['command']=exec($command); 2907 }else{ 2908 $return['append'] = imap_append($mbox_stream, "{".$imap_server.":".$imap_port."}".$folder, $source, "\\Seen"); 2909 } 2910 $status = imap_status($mbox_stream, "{".$this->imap_server.":".$this->imap_port."}".$folder, SA_UIDNEXT); 2911 $return['msg_no'] = $status->uidnext - 1; 2912 $return['error'] = imap_last_error(); 2913 if($mbox_stream) 2914 imap_close($mbox_stream); 2915 return $return; 2916 2917 } 2918 2919 //Por Bruno Costa(bruno.vieira-costa@serpro.gov.br - Trata fontes de emails enviados via POST para o servidor por um xmlhttprequest, as partes codificados com 2920 //Base64 os "+" são substituidos por " " no envio e essa função arruma esse efeito. 2921 2922 function treat_base64_from_post($source){ 2923 $offset = 0; 2924 do 2925 { 2926 if($inicio = strpos($source, 'Content-Transfer-Encoding: base64', $offset)) 2927 { 2928 $inicio = strpos($source, "\n\r", $inicio); 2929 $fim = strpos($source, '--', $inicio); 2930 if(!$fim) 2931 $fim = strpos($source,"\n\r", $inicio); 2932 $length = $fim-$inicio; 2933 $parte = substr( $source,$inicio,$length-1); 2934 $parte = str_replace(" ", "+", $parte); 2935 $source = substr_replace($source, $parte, $inicio, $length-1); 2936 } 2937 if($offset > $inicio) 2938 $offset=FALSE; 2939 else 2940 $offset = $inicio; 2941 } 2942 while($offset); 2943 return $source; 2944 } 2945 2946 //Por Bruno Costa(bruno.vieira-costa@serpro.gov.br - Recebe os fontes dos emails a serem desarquivados, separa e envia cada um para função insert_mail. 2947 2948 function unarchive_mail($params) 2949 { 2950 $dest_folder = $params['folder']; 2951 $sources = explode("#@#@#@",$params['source']); 2952 $timestamps = explode("#@#@#@",$params['timestamp']); 2953 foreach($sources as $index=>$src) { 2954 if($src!=""){ 2955 $source = $this->treat_base64_from_post($src); 2956 $insert = $this->insert_email($source,$dest_folder,$timestamps[$index]); 2957 } 2958 } 2959 return $insert; 2960 } 2961 2962 function download_all_local_attachments($params) 2963 { 2964 $source = $params['source']; 2965 $source = $this->treat_base64_from_post($source); 2966 $insert = $this->insert_email($source,'INBOX'.$this->imap_delimiter.'decifradas'); 2967 $exporteml = new ExportEml(); 2968 $params['num_msg']=$insert['msg_no']; 2969 $params['folder']='INBOX'.$this->imap_delimiter.'decifradas'; 2970 return $exporteml->download_all_attachments($params); 2971 } 2853 2972 } 2854 2973 ?> -
trunk/expressoMail1_2/js/TreeS.js
r689 r1000 45 45 "</tr>"+ 46 46 "<tr>"+ 47 "<td><input type='button' value='"+get_lang('Export messages')+"' onclick='ttreeBox.export_all_msg()'></td>"+ 47 //Por Bruno Costa(bruno.vieira-costa@serpro.gov.br - Chama o proxy_mensagens para que uma pasta local também possa ser exportada 48 "<td><input type='button' value='"+get_lang('Export messages')+"' onclick='proxy_mensagens.proxy_export_all_msg()'></td>"+ 48 49 "</tr>"+ 49 50 "<tr><td><br><br><br><br><br></td></tr>"+ … … 128 129 129 130 folders_tree = new dFTree({name: name_tree}); 130 131 131 if(click_root != ""){ 132 132 var n_root = new dNode({id:'root', caption:get_lang("My Folders"), onClick:click_root}); … … 166 166 id: 'local_root', 167 167 caption: get_lang("local messages"), 168 plusSign: true 168 plusSign: true, 169 onClick:"ttree.get_folder('local_root')" 169 170 }); 170 171 folders_tree.add(n_root_local, 'root'); -
trunk/expressoMail1_2/js/common_functions.js
r994 r1000 119 119 function set_msg_as_unread(msg_number){ 120 120 tr_message = Element(msg_number); 121 if (exist_className(tr_message, 'tr_msg_read') || exist_className(tr_message, 'tr_msg_read2')) 121 if (exist_className(tr_message, 'tr_msg_read') || exist_className(tr_message, 'tr_msg_read2')) 122 122 increment_folder_unseen(); 123 123 remove_className(tr_message, 'selected_msg'); … … 693 693 Element('new_m').innerHTML = '<font style="color:red">' + abas_unseen + '</font>'; 694 694 } 695 if ( current_folder.indexOf( 'INBOX' ) !== 0 )695 if ( current_folder.indexOf( 'INBOX' ) !== 0 && current_folder.indexOf( 'local_' ) !== 0 ) 696 696 { 697 697 var display_unseen_in_shared_folders = Element('dftree_user_unseen'); -
trunk/expressoMail1_2/js/doiMenuData.js
r790 r1000 159 159 _tab + get_lang("Move to")+" ... |wfolders.makeWindow('', 'move_to')", 160 160 _tab + get_lang("Delete")+"|"+"proxy_mensagens.delete_msgs('null','selected','null')", 161 _tab + get_lang("Export")+"|"+" export_all_selected_msgs()"161 _tab + get_lang("Export")+"|"+"proxy_mensagens.export_all_messages()" 162 162 ); 163 163 -
trunk/expressoMail1_2/js/draw_api.js
r999 r1000 916 916 917 917 proxy_mensagens.messages_list(current_folder,1,preferences.max_email_per_page,sort,search,sort_box_reverse,handler_draw_box); 918 cExecute ("$this.imap_functions.get_range_msgs2&folder="+current_folder+"&msg_range_begin=1&msg_range_end="+preferences.max_email_per_page+"&sort_box_type="+sort+"&search_box_type="+search+"&sort_box_reverse="+sort_box_reverse+"", handler_draw_box);919 918 current_page = 1; 920 919 //Comentado para nao sobrepor o numero de msgs nao lidas ao utilizar os filtros … … 978 977 currentTab = ID; 979 978 openTab.type[ID] = 2; 980 cExecute("$this.imap_functions.get_info_msg&msg_number="+folder.nextSibling.id+"&msg_folder="+nextMsgBox, show_msg); 979 proxy_mensagens.get_msg(parseInt(folder.nextSibling.id),nextMsgBox,true,show_msg); 980 //cExecute("$this.imap_functions.get_info_msg&msg_number="+folder.nextSibling.id+"&msg_folder="+nextMsgBox, show_msg); 981 981 }; 982 982 } … … 1014 1014 currentTab = ID; 1015 1015 openTab.type[ID] = 2; 1016 cExecute("$this.imap_functions.get_info_msg&msg_number="+folder.previousSibling.id+"&msg_folder=" + previousMsgBox, show_msg); 1016 //cExecute("$this.imap_functions.get_info_msg&msg_number="+folder.previousSibling.id+"&msg_folder=" + previousMsgBox, show_msg); 1017 proxy_mensagens.get_msg(parseInt(folder.previousSibling.id),previousMsgBox,true,show_msg); 1017 1018 }; 1018 1019 } … … 1500 1501 if(info_msg.attachments.length > 1) { 1501 1502 var link_attachment = document.createElement("A"); 1502 link_attachment.setAttribute("href", "javascript:download_all_attachments('"+info_msg.msg_folder+"','"+info_msg.msg_number+"')"); 1503 if(proxy_mensagens.is_local_folder(current_folder)) 1504 link_attachment.setAttribute("href", "javascript:expresso_local_messages.download_all_local_attachments('"+info_msg.msg_folder+"','"+info_msg.msg_number+"')"); 1505 else 1506 link_attachment.setAttribute("href", "javascript:download_all_attachments('"+info_msg.msg_folder+"','"+info_msg.msg_number+"')"); 1503 1507 link_attachment.innerHTML = " "+info_msg.attachments.length+' '+get_lang('files')+' :: '+get_lang('Download all atachments'); 1504 1508 link_attachment.innerHTML += '<BR>'; … … 1603 1607 var showImgLink = document.createElement('DIV'); 1604 1608 showImgLink.id="show_img_link"; 1605 showImgLink.onclick = function () { cExecute('$this.imap_functions.get_info_msg&msg_number='+info_msg.msg_number+'&msg_folder='+info_msg.msg_folder,show_msg_img);};1609 showImgLink.onclick = function(){show_msg_img(info_msg.msg_number,info_msg.msg_folder)}; 1606 1610 showImgLink.className="show_img_link"; 1607 1611 showImgLink.innerHTML = get_lang("Show images from")+": "+info_msg.from.email; … … 1642 1646 _link_attachments = document.createElement("A"); 1643 1647 _link_attachments.className = "message_options"; 1644 _link_attachments.setAttribute("href", "javascript:download_all_attachments('"+info_msg.msg_folder+"','"+info_msg.msg_number+"')"); 1648 if(proxy_mensagens.is_local_folder(current_folder)) 1649 _link_attachments.setAttribute("href", "javascript:expresso_local_messages.download_all_local_attachments('"+info_msg.msg_folder+"','"+info_msg.msg_number+"')"); 1650 else 1651 _link_attachments.setAttribute("href", "javascript:download_all_attachments('"+info_msg.msg_folder+"','"+info_msg.msg_number+"')"); 1645 1652 _link_attachments.innerHTML = get_lang('Download all atachments'); 1646 1653 } … … 2617 2624 '<span class="message_options_move"><span ' + change_font_color + ' title="'+get_lang("Move")+'" class="message_options" onclick=wfolders.makeWindow(\"\",\"move_to\")>'+get_lang("Move")+'</span></span>'+ 2618 2625 '<span class="message_options_print"><span ' + change_font_color + ' title="'+get_lang("Print")+'" class="message_options" onclick=print_all()>'+get_lang("Print")+'</span></span>'+ 2619 '<span class="message_options_export"><span ' + change_font_color + ' title="'+get_lang("Export")+'" class="message_options" onclick="export_all_selected_msgs()">'+get_lang("Export")+'</span></span>' +2626 '<span class="message_options_export"><span ' + change_font_color + ' title="'+get_lang("Export")+'" class="message_options" onclick="proxy_mensagens.export_all_messages()">'+get_lang("Export")+'</span></span>' + 2620 2627 '<span class="message_options_import"><span ' + change_font_color + ' title="'+get_lang("Import")+'" class="message_options" onclick="import_window()">'+get_lang("Import")+'</span></span>'; 2621 if(preferences.use_local_messages==1) 2622 span_options.innerHTML += ' <span ' + change_font_color + ' title="'+get_lang("Archive")+'" class="message_options" onclick="archive_msgs(\''+folder+'\',null)">'+get_lang("Archive")+'</span>'; 2628 if(preferences.use_local_messages==1) 2629 if(proxy_mensagens.is_local_folder(current_folder)) 2630 span_options.innerHTML += ' <span title="'+get_lang("Unarchive")+'" class="message_options" onclick="expresso_local_messages.unarchive_msgs(\''+folder+'\',null)">'+get_lang("Unarchive")+'</span>'; 2631 else 2632 span_options.innerHTML += ' <span title="'+get_lang("Archive")+'" class="message_options" onclick="archive_msgs(\''+folder+'\',null)">'+get_lang("Archive")+'</span>'; 2623 2633 if (use_spam_filter) { 2624 2634 if ( current_folder == 'INBOX'+cyrus_delimiter+'Spam' ) { -
trunk/expressoMail1_2/js/local_messages.js
r670 r1000 59 59 60 60 local_messages.prototype.insert_mail = function(msg_info,msg_header,anexos,folder) { 61 62 61 try { 63 62 this.init_local_messages(); … … 82 81 msg_info.cc = null; 83 82 msg_header.Size=null; 84 85 83 //If the mail was archieved in the same date the user received it, the date cames with the time. 86 84 //here I solved it … … 109 107 110 108 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()) 113 110 id_folder=rs.field(0); 114 111 else { … … 119 116 if(msg_info.Unseen=="U") 120 117 unseen = 1; 121 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]); 122 119 var call_back = function() { 123 120 } … … 148 145 retorno['subject'] = rs.field(3); 149 146 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 150 173 retorno['to'] = connector.unserialize(rs.field(5)); 151 174 retorno['cc'] = connector.unserialize(rs.field(6)); … … 508 531 sql += " and"; 509 532 } 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])+"%'"; 511 534 } 512 535 } … … 559 582 return retorno; 560 583 } 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+"×tamp="+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 561 774 562 775 var expresso_local_messages; -
trunk/expressoMail1_2/js/main.js
r976 r1000 103 103 } 104 104 105 function show_msg_img(msg_info){ 106 delete_border(msg_info.msg_number+"_r"); 107 msg_info.showImg = true; 108 if (!Element(msg_info.msg_number)){ 105 function show_msg_img(msg_number,folder){ 106 var call_back = function(data){ 107 delete_border(data.msg_number+"_r"); 108 data.showImg = true; 109 if (!Element(data.msg_number)){ 109 110 trElement = document.createElement('DIV'); 110 trElement.id = msg_info.msg_number;111 trElement.id = data.msg_number; 111 112 Element("tbody_box").appendChild(trElement); 112 113 } 113 show_msg(msg_info); 114 show_msg(data); 115 } 116 117 proxy_mensagens.msg_img(msg_number,folder,call_back); 118 114 119 } 115 120 … … 281 286 } 282 287 283 function delete_msgs(folder, msgs_number, border_ID, show_success_msg )288 function delete_msgs(folder, msgs_number, border_ID, show_success_msg,archive) 284 289 { 285 290 if (arguments.length < 4){ … … 297 302 } 298 303 299 if ( (parseInt(preferences.save_deleted_msg)) && (folder!='INBOX'+cyrus_delimiter+trashfolder)){304 if (!archive && (parseInt(preferences.save_deleted_msg)) && (folder!='INBOX'+cyrus_delimiter+trashfolder)){ 300 305 move_msgs2(folder, msgs_number, border_ID, 'INBOX'+cyrus_delimiter+trashfolder,trashfolder,show_success_msg ); 301 306 return; … … 595 600 var msgs_to_remove = new Array(); 596 601 var update_tree; 597 598 602 for (var i = 0; i < data.length; i++) { 599 603 msg_info = connector.unserialize(data[i]); 604 if ( folder == 'INBOX/Lixeira/tmpMoveToLocal' ){ 605 msg_info.msg_folder += (Date.parse(new Date)); 606 } 600 607 temp = expresso_local_messages.insert_mail(msg_info, msg_info['header'],msg_info['array_attach'],folder_dest ); 601 608 if ( Element("check_box_message_" + msg_info.msg_number) ) … … 609 616 if ( Element(msg_info.msg_number) ) 610 617 remove_className(Element(msg_info.msg_number), 'selected_msg'); 618 if ( tree_folders._selected.id.indexOf( 'local_' ) == 0 || folder.indexOf( 'INBOX/Lixeira/tmpMoveToLocal' ) == 0 ) 619 { 620 openTab.imapBox[0] = ''; 621 tree_folders.getNodeById( 'local_Inbox' )._select( ); 622 change_folder('local_Inbox','Inbox') 623 } 611 624 612 625 } 613 626 614 627 if (preferences.keep_archived_messages == 0) { //Remove as mensagens 615 delete_msgs(folder,msgs_to_remove,'null',false );628 delete_msgs(folder,msgs_to_remove,'null',false,true); 616 629 } 617 630 update_tree=(!has_local_messages_before) && expresso_local_messages.has_local_mails(); … … 1915 1928 if(data == 'Post-Content-Length') 1916 1929 write_msg(get_lang('The size of this message has exceeded the limit (%1B).',Element('upload_max_filesize').value)); 1917 else { 1918 write_msg(data); 1919 arrayJSWin["import_window"].close(); 1920 if(openTab.imapBox[0] == wfolders_tree._selected.id){ 1921 openTab.imapBox[0] = ''; 1922 change_folder(wfolders_tree._selected.id, wfolders_tree._selected.caption); 1923 } 1924 else{ 1925 refresh(); 1926 } 1927 } 1928 } 1930 else { /* 1931 * @author Rommel Cysne (rommel.cysne@serpro.gov.br) 1932 * @date 2009/05/15 1933 * Foi colocado um teste para verificar se a pasta selecionada, passada como parametro, 1934 * eh uma pasta local (qualquer uma) 1935 */ 1936 var er = /^local_/; 1937 if ( er.test(wfolders_tree._selected.id) ) 1938 { 1939 archive_msgs('INBOX/Lixeira/tmpMoveToLocal',wfolders_tree._selected.id,data); 1940 cExecute('$this.imap_functions.delete_mailbox',function(){},'del_past=INBOX/Lixeira/tmpMoveToLocal'); 1941 } 1942 else{ 1943 write_msg(data); 1944 arrayJSWin["import_window"].close(); 1945 if(openTab.imapBox[0] == wfolders_tree._selected.id) 1946 { 1947 openTab.imapBox[0] = ''; 1948 change_folder(wfolders_tree._selected.id, wfolders_tree._selected.caption); 1949 } else{ 1950 refresh(); 1951 } 1952 } 1953 } 1954 } 1955 1929 1956 } 1930 1957 -
trunk/expressoMail1_2/js/messages_proxy.js
r670 r1000 183 183 } 184 184 else { 185 write_msg(get_lang("you can't move mails from local to server folders")); 185 //Por Bruno Costa (bruno.vieira-costa@serpro.gov.br) permite o desarquivamento de menssagens chamando a função unarchive_msgs quando uma msg é movida de uma pasta local para uma pasta remota. 186 187 expresso_local_messages.unarchive_msgs(folder,new_folder,msgs_number); 188 //write_msg(get_lang("you can't move mails from local to server folders")); 186 189 } 187 190 … … 250 253 } 251 254 255 messages_proxy.prototype.msg_img = function(msgs_number,folder_name,call_back) { 256 if(this.is_local_folder(folder_name)){ 257 var msg = expresso_local_messages.get_local_mail(msgs_number); 258 eval('call_back(msg)'); 259 } 260 else 261 cExecute('$this.imap_functions.get_info_msg&msg_number='+msgs_number+'&msg_folder='+folder_name,call_back); 262 } 263 264 messages_proxy.prototype.export_all_messages = function(folder){ 265 266 if (!folder){ 267 folder = get_current_folder(); 268 } 269 270 if(!this.is_local_folder(folder)){ 271 export_all_selected_msgs(); 272 }else{ 273 local_messages.prototype.local_messages_to_export(); 274 } 275 } 276 277 messages_proxy.prototype.proxy_export_all_msg=function(){ 278 279 var er=/^local/; 280 281 282 if(ttree.FOLDER == "local_root"){return false;} //Usuario não selecionou uma pasta local e esta no começo dos nós 283 var nm_bx = ttree.FOLDER.split(cyrus_delimiter); 284 285 var name_f = nm_bx[nm_bx.length -1].replace("local_",""); 286 287 if (!er.test(nm_bx)){ 288 //Se a pasta nao for local, ou seja a string nao contem a string "local" 289 ttreeBox.export_all_msg(); 290 } else{ 291 expresso_local_messages.get_all_local_folder_messages(name_f); 292 } 293 } 294 252 295 var proxy_mensagens; 253 296 proxy_mensagens = new messages_proxy(); -
trunk/expressoMail1_2/js/search.js
r976 r1000 351 351 add_className(tr,'tr_msg_unread'); 352 352 add_className(tr, i%2 != 0 ? 'tr_msg_read2' : 'tr_msg_read'); 353 354 var _onclick = function () { cExecute("$this.imap_functions.get_info_msg&msg_number="+this.parentNode.id+"&msg_folder="+url_encode(this.parentNode.getAttribute('name')),show_msg); }; 355 for(var j=0 ; j < 10 ; j++) 353 var _onclick = function () { proxy_mensagens.get_msg(this.parentNode.id,url_encode(this.parentNode.getAttribute('name')),false,show_msg);}; 354 for(var j=0 ; j < 10 ; j++) 356 355 { 357 356 var td = document.createElement("TD"); -
trunk/expressoMail1_2/setup
-
Property
svn:ignore
set to
.phpgw_pt-br.lang.swp
-
Property
svn:ignore
set to
Note: See TracChangeset
for help on using the changeset viewer.