Changeset 670


Ignore:
Timestamp:
02/06/09 16:34:17 (11 years ago)
Author:
eduardoalex
Message:

Ticket #413

Location:
trunk
Files:
4 added
19 edited

Legend:

Unmodified
Added
Removed
  • trunk/expressoMail1_2/inc/class.exporteml.inc.php

    r601 r670  
    186186        } 
    187187 
     188        function export_to_archive($id_msg,$folder) { 
     189                $this->folder = $folder; 
     190                $this->folder = mb_convert_encoding($this->folder, "UTF7-IMAP","UTF-8"); 
     191                $tempDir = $_SERVER["DOCUMENT_ROOT"]."tmpLclAtt"; 
     192                 
     193                $phpheader = "<?php header('Content-Type: text/plain'); 
     194                                header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); 
     195                                header('Pragma: public'); 
     196                                header('Expires: 0'); // set expiration time 
     197                                header('Content-Disposition: attachment; filename=\"fonte_da_mensagem.txt\"');?>"; 
     198                 
     199                $this->connectImap(); 
     200                $header         = $this-> getHeader($id_msg); 
     201                $body           = $this-> getBody($id_msg); 
     202                 
     203                $file = "source_".md5(microtime()).".php"; 
     204                $f = fopen($tempDir.'/'.$file,"w"); 
     205                fputs($f,$phpheader.$header ."\r\n\r\n". $body); 
     206                fclose($f); 
     207                $urlPath = '../tmpLclAtt/'.$file; 
     208                 
     209                imap_close($this->mbox_stream); 
     210                return $urlPath; 
     211        } 
     212 
    188213        function remove_accents($string) { 
    189214                /* 
     
    195220                        "áàâãäéèêëíìîïóòôõöúùûüç?\"!@#$%š&*()-=+Ž`[]{}~^,<>;:/?\\|¹²³£¢¬§ªº°ÁÀÂÃÄÉÈÊËÍÌÎÏÓÒÔÕÖÚÙÛÜÇ", 
    196221                        "aaaaaeeeeiiiiooooouuuuc__________________________________________AAAAAEEEEIIIIOOOOOUUUUC"); 
     222        } 
     223         
     224        function get_attachments_in_array($params) { 
     225                $return_attachments = array(); 
     226 
     227                $id_number = $params['num_msg'];                 
     228                $attachments =unserialize(rawurldecode($params['s_attachments'])); 
     229                 
     230                $tempDir = $_SERVER["DOCUMENT_ROOT"]."tmpLclAtt"; 
     231                $tempSubDir = md5(microtime()); 
     232                exec('mkdir ' . $tempDir . '/'.$tempSubDir.'; cd ' . $tempDir . '/'.$tempSubDir); 
     233                 
     234                $this-> folder = $params['folder']; 
     235                $this->folder = mb_convert_encoding($this->folder, "UTF7-IMAP","UTF-8"); 
     236                $this->connectImap(); 
     237 
     238                include_once("class.imap_attachment.inc.php"); 
     239 
     240                $imap_attachment = new imap_attachment(); 
     241                $attachments = $imap_attachment->download_attachment($this->mbox_stream, $id_number); 
     242                 
     243 
     244                 
     245                foreach($attachments as $i => $attachment){ 
     246                        if($i && $i == 'names') 
     247                                continue; 
     248                        $fileNameReal = $this->remove_accents($attachment['name']); 
     249                        $ContentType = $this->getFileType($fileNameReal); 
     250                        $fileName = $fileNameReal . ".php"; 
     251                        $f = fopen($tempDir . '/'.$tempSubDir.'/'.$fileName,"wb"); 
     252                        if(!$f) 
     253                                return $tempDir . '/'.$tempSubDir.'/'.$fileName;                         
     254 
     255                        $fileContent = imap_fetchbody($this->mbox_stream, $id_number,$attachment['pid'], FT_UID); 
     256                        $urlPath = '../tmpLclAtt/'.$tempSubDir.'/'.$fileName; 
     257                         
     258                        $headers = "<?php header('Content-Type: ".$ContentType."'); 
     259                                header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); 
     260                                header('Pragma: public'); 
     261                                header('Expires: 0'); // set expiration time 
     262                                header('Content-Disposition: attachment; filename=\"". addslashes($fileNameReal) ."\"');\n echo "; 
     263                         
     264                        if($attachment['encoding'] == 'base64') { 
     265                                $headers.=" imap_base64('"; 
     266                        } 
     267                        else if($attachment['encoding'] == 'quoted_printable_decode') { 
     268                                $headers.=" quoted_printable_decode('"; 
     269                        } 
     270                        $headers.=$fileContent."');?>"; 
     271                        fputs($f,$headers); 
     272 
     273                        array_push($return_attachments,array('name' => $fileName,'url' => $urlPath,'pid' =>$attachment['pid'])); 
     274                        fclose($f); 
     275                } 
     276                imap_close($this->mbox_stream); 
     277                return $return_attachments; 
     278        } 
     279         
     280        private function getFileType($nameFile) { 
     281                $strFileType = strrev(substr(strrev(strtolower($nameFile)),0,4)); 
     282                $ContentType = "application/octet-stream"; 
     283                if ($strFileType == ".asf")  
     284                        $ContentType = "video/x-ms-asf"; 
     285                if ($strFileType == ".avi") 
     286                        $ContentType = "video/avi"; 
     287                if ($strFileType == ".doc") 
     288                        $ContentType = "application/msword"; 
     289                if ($strFileType == ".zip") 
     290                        $ContentType = "application/zip"; 
     291                if ($strFileType == ".xls") 
     292                        $ContentType = "application/vnd.ms-excel"; 
     293                if ($strFileType == ".gif") 
     294                        $ContentType = "image/gif"; 
     295                if ($strFileType == ".jpg" || $strFileType == "jpeg") 
     296                        $ContentType = "image/jpeg"; 
     297                if ($strFileType == ".wav") 
     298                        $ContentType = "audio/wav"; 
     299                if ($strFileType == ".mp3") 
     300                        $ContentType = "audio/mpeg3"; 
     301                if ($strFileType == ".mpg" || $strFileType == "mpeg") 
     302                        $ContentType = "video/mpeg"; 
     303                if ($strFileType == ".rtf") 
     304                        $ContentType = "application/rtf"; 
     305                if ($strFileType == ".htm" || $strFileType == "html") 
     306                        $ContentType = "text/html"; 
     307                if ($strFileType == ".xml")  
     308                        $ContentType = "text/xml"; 
     309                if ($strFileType == ".xsl")  
     310                        $ContentType = "text/xsl"; 
     311                if ($strFileType == ".css")  
     312                        $ContentType = "text/css"; 
     313                if ($strFileType == ".php")  
     314                        $ContentType = "text/php"; 
     315                if ($strFileType == ".asp")  
     316                        $ContentType = "text/asp"; 
     317                if ($strFileType == ".pdf") 
     318                        $ContentType = "application/pdf"; 
     319                if ($strFileType == ".txt") 
     320                        $ContentType = "text/plain"; 
     321                if ($strFileType == ".log") 
     322                        $ContentType = "text/plain"; 
     323                if ($strFileType == ".wmv") 
     324                        $ContentType = "video/x-ms-wmv"; 
     325                if ($strFileType == ".sxc") 
     326                        $ContentType = "application/vnd.sun.xml.calc"; 
     327                if ($strFileType == ".odt") 
     328                        $ContentType = "application/vnd.oasis.opendocument.text"; 
     329                if ($strFileType == ".stc") 
     330                        $ContentType = "application/vnd.sun.xml.calc.template"; 
     331                if ($strFileType == ".sxd") 
     332                        $ContentType = "application/vnd.sun.xml.draw"; 
     333                if ($strFileType == ".std") 
     334                        $ContentType = "application/vnd.sun.xml.draw.template"; 
     335                if ($strFileType == ".sxi") 
     336                        $ContentType = "application/vnd.sun.xml.impress"; 
     337                if ($strFileType == ".sti") 
     338                        $ContentType = "application/vnd.sun.xml.impress.template"; 
     339                if ($strFileType == ".sxm") 
     340                        $ContentType = "application/vnd.sun.xml.math"; 
     341                if ($strFileType == ".sxw") 
     342                        $ContentType = "application/vnd.sun.xml.writer"; 
     343                if ($strFileType == ".sxq") 
     344                        $ContentType = "application/vnd.sun.xml.writer.global"; 
     345                if ($strFileType == ".stw") 
     346                        $ContentType = "application/vnd.sun.xml.writer.template"; 
     347                if ($strFileType == ".ps") 
     348                        $ContentType = "application/postscript"; 
     349                if ($strFileType == ".pps") 
     350                        $ContentType = "application/vnd.ms-powerpoint"; 
     351                if ($strFileType == ".odt") 
     352                        $ContentType = "application/vnd.oasis.opendocument.text"; 
     353                if ($strFileType == ".ott") 
     354                        $ContentType = "application/vnd.oasis.opendocument.text-template"; 
     355                if ($strFileType == ".oth") 
     356                        $ContentType = "application/vnd.oasis.opendocument.text-web"; 
     357                if ($strFileType == ".odm") 
     358                        $ContentType = "application/vnd.oasis.opendocument.text-master"; 
     359                if ($strFileType == ".odg") 
     360                        $ContentType = "application/vnd.oasis.opendocument.graphics"; 
     361                if ($strFileType == ".otg") 
     362                        $ContentType = "application/vnd.oasis.opendocument.graphics-template"; 
     363                if ($strFileType == ".odp") 
     364                        $ContentType = "application/vnd.oasis.opendocument.presentation"; 
     365                if ($strFileType == ".otp") 
     366                        $ContentType = "application/vnd.oasis.opendocument.presentation-template"; 
     367                if ($strFileType == ".ods") 
     368                        $ContentType = "application/vnd.oasis.opendocument.spreadsheet"; 
     369                if ($strFileType == ".ots") 
     370                        $ContentType = "application/vnd.oasis.opendocument.spreadsheet-template"; 
     371                if ($strFileType == ".odc") 
     372                        $ContentType = "application/vnd.oasis.opendocument.chart"; 
     373                if ($strFileType == ".odf") 
     374                        $ContentType = "application/vnd.oasis.opendocument.formula"; 
     375                if ($strFileType == ".odi") 
     376                        $ContentType = "application/vnd.oasis.opendocument.image"; 
     377                if ($strFileType == ".ndl") 
     378                        $ContentType = "application/vnd.lotus-notes"; 
     379                return $ContentType; 
    197380        } 
    198381         
  • trunk/expressoMail1_2/inc/class.imap_functions.inc.php

    r660 r670  
    1010                'get_range_msgs'                                => True, 
    1111                'get_info_msg'                                  => True, 
     12                'get_info_msgs'                                 => True, 
    1213                'get_folders_list'                              => True, 
    1314                'import_msgs'                                   => True 
     
    7071        function get_range_msgs2($params) 
    7172        { 
    72                 include("class.imap_attachment.inc.php"); 
    73                 $imap_attachment = new imap_attachment(); 
    7473                $folder = $params['folder']; 
    7574                $msg_range_begin = $params['msg_range_begin']; 
     
    8584                if($num_msgs) {  
    8685                        for ($msg_range_begin; (($msg_range_begin <= $msg_range_end) && ($msg_range_begin <= $num_msgs)); $msg_range_begin++) 
    87                 { 
    88                         $msg_number = $sort_array_msg[$msg_range_begin-1]; 
    89  
    90                         /*A função imap_headerinfo não traz o cabeçalho completo, e sim alguns 
    91                         * atributos do cabeçalho. Como eu preciso do atributo Importance  
    92                         * para saber se o email é importante ou não, uso abaixo a função 
    93                         * imap_fetchheader e busco o atributo importance nela para passar 
    94                         * para as funções ajax. Isso faz com que eu acesse o cabeçalho 
    95                         * duas vezes e de duas formas diferentes, mas em contrapartida, eu 
    96                         * não preciso reimplementar o método utilizando o fetchheader. 
    97                         * Como as mensagens são renderizadas em um número pequeno por vez, 
    98                         * não parece ter perda considerável de performance. 
    99                         */ 
    100                         $flag = preg_match('/importance *: *(.*)\r/i', 
     86                        { 
     87                                $msg_number = $sort_array_msg[$msg_range_begin-1]; 
     88                                $temp = $this->get_info_head_msg($msg_number); 
     89                                if(!$temp) 
     90                                        return false; 
     91         
     92                                $return[$i] = $temp; 
     93                                $i++; 
     94                        } 
     95                } 
     96                $return['num_msgs'] = $num_msgs;                 
     97                 
     98                return $return; 
     99        } 
     100         
     101        function get_info_head_msg($msg_number) { 
     102                $head_array = array(); 
     103                include_once("class.imap_attachment.inc.php"); 
     104                $imap_attachment = new imap_attachment(); 
     105                 
     106                /*A função imap_headerinfo não traz o cabeçalho completo, e sim alguns 
     107                * atributos do cabeçalho. Como eu preciso do atributo Importance  
     108                * para saber se o email é importante ou não, uso abaixo a função 
     109                * imap_fetchheader e busco o atributo importance nela para passar 
     110                * para as funções ajax. Isso faz com que eu acesse o cabeçalho 
     111                * duas vezes e de duas formas diferentes, mas em contrapartida, eu 
     112                * não preciso reimplementar o método utilizando o fetchheader. 
     113                * Como as mensagens são renderizadas de X em X, não parece ter 
     114                * perda considerável de performance. 
     115                */ 
     116                $flag = preg_match('/importance *: *(.*)\r/i', 
    101117                                        imap_fetchheader($this->mbox, imap_msgno($this->mbox, $msg_number)) 
    102118                                        ,$importance);           
    103                         $return[$i]['Importance'] = $flag==0?"":$importance[1]; 
    104                          
    105                          
    106                         $header = $this->get_header($msg_number); 
     119                $head_array['Importance'] = $flag==0?"Normal":$importance[1]; 
     120 
     121                 
     122                $header = $this->get_header($msg_number); 
    107123                        if (!is_object($header)) 
    108                                 return false;                    
    109                          
    110                         $return[$i]['Recent'] = $header->Recent; 
    111                         $return[$i]['Unseen'] = $header->Unseen; 
    112                         if($header->Answered =='A' && $header->Draft == 'X'){ 
    113                                 $return[$i]['Forwarded'] = 'F'; 
    114                         } 
    115                         else { 
    116                                 $return[$i]['Answered'] = $header->Answered; 
    117                                 $return[$i]['Draft']    = $header->Draft;        
    118                         } 
    119                         $return[$i]['Deleted'] = $header->Deleted; 
    120                         $return[$i]['Flagged'] = $header->Flagged; 
    121                          
    122                         $return[$i]['msg_number'] = $msg_number; 
    123                         //$return[$i]['msg_folder'] = $folder; 
    124                          
    125                         $date_msg = gmdate("d/m/Y",$header->udate); 
    126                         if (gmdate("d/m/Y") == $date_msg) 
    127                                 $return[$i]['udate'] = gmdate("H:i",$header->udate); 
    128                         else 
    129                                 $return[$i]['udate'] = $date_msg; 
    130                          
    131                         $from = $header->from; 
    132                         $return[$i]['from'] = array(); 
    133                         $tmp = imap_mime_header_decode($from[0]->personal); 
    134                         $return[$i]['from']['name'] = $this->decode_string($tmp[0]->text); 
    135                         $return[$i]['from']['email'] = $this->decode_string($from[0]->mailbox) . "@" . $from[0]->host; 
    136                         if(!$return[$i]['from']['name']) 
    137                                 $return[$i]['from']['name'] = $return[$i]['from']['email']; 
    138                         $to = $header->to; 
    139                         $return[$i]['to'] = array(); 
    140                         $tmp = imap_mime_header_decode($to[0]->personal); 
    141                         $return[$i]['to']['name'] = $this->decode_string($this->decode_string($tmp[0]->text)); 
    142                         $return[$i]['to']['email'] = $this->decode_string($to[0]->mailbox) . "@" . $to[0]->host; 
    143                         if(!$return[$i]['to']['name']) 
    144                                 $return[$i]['to']['name'] = $return[$i]['to']['email']; 
    145                         $return[$i]['subject'] = $this->decode_string($header->fetchsubject); 
    146  
    147                         $return[$i]['Size'] = $header->Size; 
    148                          
    149                         $return[$i]['attachment'] = array(); 
    150                         $return[$i]['attachment'] = $imap_attachment->get_attachment_headerinfo($this->mbox, $msg_number);                       
    151                         $i++; 
    152                 } 
    153                 } 
    154                 $return['num_msgs'] = $num_msgs;                 
    155                  
    156                 return $return; 
     124                                return false; 
     125                $head_array['Recent'] = $header->Recent; 
     126                $head_array['Unseen'] = $header->Unseen; 
     127                if($header->Answered =='A' && $header->Draft == 'X'){ 
     128                        $head_array['Forwarded'] = 'F'; 
     129                } 
     130                else { 
     131                        $head_array['Answered'] = $header->Answered; 
     132                        $head_array['Draft']    = $header->Draft;        
     133                } 
     134                $head_array['Deleted'] = $header->Deleted; 
     135                $head_array['Flagged'] = $header->Flagged; 
     136                 
     137                $head_array['msg_number'] = $msg_number; 
     138                //$return[$i]['msg_folder'] = $folder; 
     139                 
     140                $date_msg = date("d/m/Y",$header->udate); 
     141                if (date("d/m/Y") == $date_msg) 
     142                        $head_array['udate'] = date("H:i",$header->udate); 
     143                else 
     144                        $head_array['udate'] = $date_msg; 
     145                 
     146                $head_array['aux_date'] = $date_msg; //Auxiliar apenas para mensagens locais. 
     147                 
     148                $from = $header->from; 
     149                $head_array['from'] = array(); 
     150                $tmp = imap_mime_header_decode($from[0]->personal); 
     151                $head_array['from']['name'] = $this->decode_string($tmp[0]->text); 
     152                $head_array['from']['email'] = $this->decode_string($from[0]->mailbox) . "@" . $from[0]->host; 
     153                if(!$head_array['from']['name']) 
     154                        $head_array['from']['name'] = $head_array['from']['email']; 
     155                $to = $header->to; 
     156                $head_array['to'] = array(); 
     157                $tmp = imap_mime_header_decode($to[0]->personal); 
     158                $head_array['to']['name'] = $this->decode_string($this->decode_string($tmp[0]->text)); 
     159                $head_array['to']['email'] = $this->decode_string($to[0]->mailbox) . "@" . $to[0]->host; 
     160                if(!$head_array['to']['name']) 
     161                        $head_array['to']['name'] = $head_array['to']['email']; 
     162                $head_array['subject'] = $this->decode_string($header->fetchsubject); 
     163                 
     164                $head_array['Size'] = $header->Size; 
     165                 
     166                $head_array['attachment'] = array(); 
     167                $head_array['attachment'] = $imap_attachment->get_attachment_headerinfo($this->mbox, $msg_number); 
     168                 
     169                return $head_array; 
    157170        } 
    158171         
     
    297310        } 
    298311 
     312/** 
     313         *  
     314         * @return  
     315         * @param $params Object 
     316         */ 
     317        function get_info_msgs($params) { 
     318                include_once("class.exporteml.inc.php"); 
     319                $return = array(); 
     320                $new_params = array(); 
     321                $attach_params = array(); 
     322                $new_params["msg_folder"]=$params["folder"]; 
     323                $attach_params["folder"] = $params["folder"]; 
     324                $msgs = explode(",",$params["msgs_number"]); 
     325                $exporteml = new ExportEml(); 
     326                foreach($msgs as $msg_number) { 
     327                        $new_params["msg_number"] = $msg_number; 
     328                        //ini_set("display_errors","1"); 
     329                        $msg_info = $this->get_info_msg($new_params); 
     330 
     331                        $this->mbox = $this->open_mbox($params['folder']); //Não sei porque, mas se não abrir de novo a caixa dá erro. 
     332                        $msg_info['header'] = $this->get_info_head_msg($msg_number); 
     333 
     334                        $attach_params["num_msg"] = $msg_number; 
     335                        $msg_info['array_attach'] = $exporteml->get_attachments_in_array($attach_params); 
     336                        $msg_info['url_export_file'] = $exporteml->export_to_archive($msg_number,$params["folder"]); 
     337                        imap_close($this->mbox); 
     338                        $this->mbox=false; 
     339 
     340 
     341                        array_push($return,serialize($msg_info)); 
     342 
     343                } 
     344 
     345                return $return; 
     346        } 
     347 
    299348        function get_info_msg($params) 
    300349        { 
     
    317366                //Substituição de links em email para abrir no próprio expresso 
    318367                $body = ereg_replace("<a[^>]*href=[\'\"]mailto:([^\"\']+)[\'\"]>([^<]+)</a>","<a href=\"javascript:new_message_to('\\1')\">\\2</a>",$return_get_body['body']); 
    319                          
     368                 
    320369                $return['body']                 = $body; 
    321370                $return['attachments']  = $return_get_body['attachments']; 
     
    550599                $return['Size'] = $header->Size; 
    551600                $return['reply_toaddress'] = $header->reply_toaddress;           
     601 
     602                //All this is to help in local messages 
     603                $return['timestamp'] = $header->udate; 
     604                $return['login'] = $_SESSION['phpgw_info']['expressomail']['user']['account_id'];//$GLOBALS['phpgw_info']['user']['account_id']; 
     605                $return['reply_toaddress'] = $header->reply_toaddress; 
     606                 
    552607                return $return; 
    553608        } 
     
    10171072        function refresh($params) 
    10181073        { 
    1019                 include("class.imap_attachment.inc.php"); 
     1074                include_once("class.imap_attachment.inc.php"); 
    10201075                $imap_attachment = new imap_attachment();                
    10211076                $folder = $params['folder']; 
     
    10971152                                        imap_fetchheader($this->mbox, imap_msgno($this->mbox, $msg_number)) 
    10981153                                        ,$importance);           
    1099                         $return[$i]['Importance'] = $flag==0?"":$importance[1]; 
     1154                        $return[$i]['Importance'] = $flag==0?"Normal":$importance[1]; 
    11001155                         
    11011156                        $header = $this->get_header($msg_number); 
     
    13481403                $attachments = $params['FILES']; 
    13491404                $forwarding_attachments = $params['forwarding_attachments']; 
     1405                $local_attachments = $params['local_attachments']; 
    13501406                  
    13511407                $folder =$params['folder']; 
     
    14311487//////////////////////////////////////////////////////////////////////////////////////////////////// 
    14321488                //      Build Uploading Attachments!!! 
    1433                 if (count($attachments)) 
     1489                if ((count($attachments)) && ($params['is_local_forward']!="1")) //Caso seja forward normal... 
    14341490                { 
    14351491                        $total_uploaded_size = 0; 
     
    14431499                                return $this->parse_error("message file too big");                       
    14441500                }                        
     1501                else if(($params['is_local_forward']=="1") && (count($local_attachments))) { //Caso seja forward de mensagens locais 
     1502                         
     1503                        $total_uploaded_size = 0; 
     1504                        $upload_max_filesize = str_replace("M","",ini_get('upload_max_filesize')) * 1024 * 1024;                         
     1505                        foreach($local_attachments as $local_attachment) { 
     1506                                $file_description = unserialize(rawurldecode($local_attachment)); 
     1507                                $tmp = array_values($file_description); 
     1508                                foreach($file_description as $i => $descriptor){                                 
     1509                                        $tmp[$i]  = eregi_replace('\'*\'','',$descriptor); 
     1510                                } 
     1511                                $mail->AddAttachment($_FILES[$tmp[1]]['tmp_name'], $tmp[2], "base64", $this->get_file_type($tmp[2]));  // optional name 
     1512                                $total_uploaded_size = $total_uploaded_size + $_FILES[$tmp[1]]['size']; 
     1513                        } 
     1514                        if( $total_uploaded_size > $upload_max_filesize) 
     1515                                return 'false';  
     1516                } 
    14451517//////////////////////////////////////////////////////////////////////////////////////////////////// 
    14461518                //      Build Forwarding Attachments!!! 
     
    23692441        function search($params) 
    23702442        { 
    2371                 include("class.imap_attachment.inc.php"); 
     2443                include_once("class.imap_attachment.inc.php"); 
    23722444                $imap_attachment = new imap_attachment();                                
    23732445                $criteria = $params['criteria']; 
     
    24892561                $retorno = ""; 
    24902562                $mbox_stream = ""; 
    2491                 $search = explode(",",$params['condition']); 
     2563                if(strpos($params['condition'],"#")===false) { //local messages 
     2564                        $search=false; 
     2565                } 
     2566                else { 
     2567                        $search = explode(",",$params['condition']);                     
     2568                } 
     2569 
    24922570                if($search){ 
    24932571                        $search_criteria = ''; 
    2494                         foreach($search as $tmp) 
    2495                         { 
     2572                        foreach($search as $tmp){ 
    24962573                                $tmp1 = explode("##",$tmp); 
    24972574                                $name_box = $tmp1[0]; 
     
    27502827                $array_parts_attachments = array();              
    27512828                $array_parts_attachments['names'] = ''; 
    2752                 include("class.imap_attachment.inc.php"); 
     2829                include_once("class.imap_attachment.inc.php"); 
    27532830                $imap_attachment = new imap_attachment();                
    27542831                 
  • trunk/expressoMail1_2/index.php

    r653 r670  
    5858        } 
    5959 
     60 
     61        //Local messages 
     62        $_SESSION['phpgw_info']['server']['expressomail']['enable_local_messages'] = $current_config['enable_local_messages']; 
     63 
    6064        // Get Data from ldap_manager and emailadmin. 
    6165        $ldap_manager = CreateObject('contactcenter.bo_ldap_manager'); 
     
    7377        $_SESSION['phpgw_info']['expressomail']['user']['email'] = $GLOBALS['phpgw']->preferences->values['email']; 
    7478         
    75          
     79        if($current_config['enable_local_messages']!='True')  { 
     80                $GLOBALS['phpgw_info']['user']['preferences']['expressoMail']['use_local_messages'] = 0; 
     81        } 
     82 
    7683        $_SESSION['phpgw_info']['user']['preferences']['expressoMail'] = array( 
    7784                        'voip_enabled'                                          => $voip_enabled, 
     
    97104                        'number_of_contacts'                            => $current_config['expressoMail_Number_of_dynamic_contacts'] ? $current_config['expressoMail_Number_of_dynamic_contacts'] : "0", 
    98105                        'use_cache'                                             => $current_config['expressoMail_enable_cache'], 
    99                         'notification_domains'                  => $current_config['expressoMail_notification_domains'] 
    100  
    101  
     106                        'notification_domains'                  => $current_config['expressoMail_notification_domains'], 
     107                'use_local_messages'                            => $GLOBALS['phpgw_info']['user']['preferences']['expressoMail']['use_local_messages'] ? $GLOBALS['phpgw_info']['user']['preferences']['expressoMail']['use_local_messages'] : "0",                      
     108                'keep_archived_messages'                        => $GLOBALS['phpgw_info']['user']['preferences']['expressoMail']['keep_archived_messages'] ? $GLOBALS['phpgw_info']['user']['preferences']['expressoMail']['keep_archived_messages'] : "0" 
    102109                 
    103110        ); 
     
    160167 
    161168    // End Set Imap Folder names options 
     169        //User info 
     170        echo "<script language='javascript'> var account_id = ".$GLOBALS['phpgw_info']['user']['account_id'].";</script>"; 
    162171 
    163172        $obj = createobject("expressoMail1_2.functions"); 
     
    172181                                                        "js/InfoContact.js," . 
    173182                                                        "js/main.js," . 
     183                                                        "js/gears_init.js," . 
     184                                                        "js/local_messages.js," . 
     185                                                        "js/messages_proxy.js," . 
    174186                                                        "js/rich_text_editor.js," . 
    175187                                                        "js/wfolders.js,", 
  • trunk/expressoMail1_2/js/TreeS.js

    r320 r670  
    3636                div_buttons.innerHTML = "<table border='0' cellpading='0' cellspacing='0'>"+ 
    3737                                                            "<tr>"+ 
    38                                                             "<td><input type='button' value='"+get_lang('New folder')+"' onclick='ttreeBox.validate(\"newpast\")'></td>"+ 
     38                                                            "<td><input type='button' style='padding:0 .25em 0 .25em;width:auto;overflow:visible;' value='"+get_lang('New folder')+"' onclick='proxy_mensagens.proxy_create_folder()'></td>"+ 
    3939                                                            "</tr>"+ 
    4040                                                            "<tr>"+ 
    41                                                             "<td><input type='button' value='"+get_lang('Delete folder')+"' onclick='ttreeBox.del()'></td>"+ 
     41                                                            "<td><input type='button' style='padding:0 .25em 0 .25em;width:auto;overflow:visible;' value='"+get_lang('Delete folder')+"' onclick='proxy_mensagens.proxy_remove_folder()'></td>"+ 
    4242                                                            "</tr>"+ 
    4343                                                            "<tr>"+ 
    44                                                             "<td><input type='button' value='"+get_lang('Rename folder')+"' onclick='ttreeBox.validate(\"rename\")'></td>"+ 
     44                                                            "<td><input type='button' style='padding:0 .25em 0 .25em;width:auto;overflow:visible;' value='"+get_lang('Rename folder')+"' onclick='proxy_mensagens.proxy_rename_folder()'></td>"+ 
    4545                                                            "</tr>"+ 
    4646                                                            "<tr>"+ 
    47                                                             "<td><input type='button' value='"+get_lang('Export messages')+"' onclick='ttreeBox.export_all_msg()'></td>"+ 
     47                                                            "<td><input type='button' style='padding:0 .25em 0 .25em;width:auto;overflow:visible;' value='"+get_lang('Export messages')+"' onclick='ttreeBox.export_all_msg()'></td>"+ 
    4848                                                            "</tr>"+ 
    4949                                                            "<tr><td><br><br><br><br><br></td></tr>"+ 
    50                                                             "<tr><td><input type='button' value='"+get_lang('Close')+"' onclick='ttree.close_win()'></td></tr>"+ 
     50                                                            "<tr><td><input type='button' style='padding:0 .25em 0 .25em;width:auto;overflow:visible;' value='"+get_lang('Close')+"' onclick='ttree.close_win()'></td></tr>"+ 
    5151                                                            "</table>"; 
    5252                tree.appendChild(div_buttons);           
     
    161161                        folders_tree.add(nn,data[i].folder_parent); 
    162162                } 
    163                  
     163                //Pastas locais 
     164                if (preferences.use_local_messages == 1) { 
     165                        var n_root_local = new dNode({ 
     166                                id: 'local_root', 
     167                                caption: get_lang("local messages"), 
     168                                plusSign: true 
     169                        }); 
     170                        folders_tree.add(n_root_local, 'root'); 
     171                         
     172                        var local_folders = expresso_local_messages.list_local_folders(); 
     173                        for (var i in local_folders) { //Coloca as pastas locais. 
     174                                if (local_folders[i][1] > 0)  
     175                                        var nodeLocal = new dNode({ 
     176                                                id: "local_" + local_folders[i][0], 
     177                                                caption: lang_folder(local_folders[i][0]) + '<font style=color:red>&nbsp(</font><span id="local_unseen" style=color:red>' + local_folders[i][1] + '</span><font style=color:red>)</font>', 
     178                                                plusSign: 0 
     179                                        }); 
     180                                else  
     181                                        var nodeLocal = new dNode({ 
     182                                                id: "local_" + local_folders[i][0], 
     183                                                caption: lang_folder(local_folders[i][0]), 
     184                                                plusSign: 0 
     185                                        }); 
     186                                folders_tree.add(nodeLocal, "local_root"); 
     187                        } 
     188                } 
    164189                folders_tree.draw(Element(destination)); 
    165190                n_root.changeState(); 
  • trunk/expressoMail1_2/js/TreeShow.js

    r345 r670  
    9898                                if(func == "newpast"){ 
    9999                    var button = prompt(get_lang('Enter the name of the new folder:'),""); 
     100                                         
     101                                        if (button.indexOf("local_") != -1  || button.toUpperCase() == "INBOX") { 
     102                                                alert(get_lang("cannot create folder. try other folder name")); 
     103                                                return false; //Não posso criar pastas contendo a string local_                                  
     104                                        } 
     105 
    100106                                        if(trim(button) == "" || trim(button) == null){ 
    101107                                                return false; 
     
    114120                                        } 
    115121                    var button1 = prompt(get_lang("Enter a name for the box"), ""); 
     122                                        if (button1.indexOf("local_") != -1 || button1.toUpperCase() == "INBOX") { 
     123                                                alert(get_lang("cannot create folder. try other folder name")); 
     124                                                return false; //Não posso criar pastas contendo a string local_                                  
     125                                        } 
    116126                                        if(trim(button1) == "" || trim(button1) == null){ 
    117127                                                return false; 
  • trunk/expressoMail1_2/js/common_functions.js

    r651 r670  
    178178} 
    179179 
    180 function download_attachments(msg_folder, msg_number, idx_file, msg_part, encoding, new_file_name, show_iframe){ 
    181         div_attachment = document.getElementById("id_div_attachment"); 
    182         var params = ''; 
    183          
     180function download_local_attachment(url) { 
    184181        if (div_attachment == null){ 
    185182                var div_attachment = document.createElement("DIV"); 
     
    187184                document.body.appendChild(div_attachment); 
    188185        } 
     186        div_attachment.innerHTML="<iframe style='display:none;width:0;height:0' name='attachment' src='"+url+"'></iframe>"; 
     187} 
     188 
     189function download_attachments(msg_folder, msg_number, idx_file, msg_part, encoding, new_file_name, show_iframe){ 
     190        div_attachment = document.getElementById("id_div_attachment"); 
     191        var params = ''; 
     192         
     193        if (div_attachment == null){ 
     194                var div_attachment = document.createElement("DIV"); 
     195                div_attachment.id="id_div_attachment"; 
     196                document.body.appendChild(div_attachment); 
     197        } 
    189198        if(new_file_name) 
    190199                params = "&newfilename="+new_file_name; 
     
    201210        cExecute("$this.exporteml.download_all_attachments",handler_source,"folder="+msg_folder+"&num_msg="+msg_number); 
    202211} 
     212//ADD forwarded files 
     213function addForwardedFile(id_border,file_name,link){ 
     214        divFiles = document.getElementById("divFiles_"+id_border); 
     215 
     216        if (! divFiles) 
     217                return false; 
     218         
     219        if (divFiles.lastChild) 
     220                var countDivFiles = parseInt(divFiles.lastChild.id.split('_')[2]) + 1; 
     221 
     222        if (! countDivFiles) 
     223                var countDivFiles = 1; 
     224         
     225        divFile = document.createElement('DIV'); 
     226         
     227 
     228        if (!is_ie) { 
     229                var inputFile = document.createElement("INPUT"); 
     230                 
     231                var tmp_id_border = document.createAttribute('id_border'); 
     232                tmp_id_border.value = id_border; 
     233                 
     234                inputFile.setAttributeNode(tmp_id_border); 
     235                inputFile.id = "inputFile_" + id_border + "_" + countDivFiles; 
     236                inputFile.type = 'file'; 
     237                inputFile.size = 50; 
     238                inputFile.maxLength = 255; 
     239                inputFile.name = 'file_' + countDivFiles; 
     240                inputFile.style.display = "none"; 
     241                divFile.appendChild(inputFile); 
     242        } 
     243        else { 
     244                var inputFile = document.createElement("link"); 
     245                 
     246                var tmp_id_border = document.createAttribute('id_border'); 
     247                tmp_id_border.value = id_border; 
     248                 
     249                inputFile.setAttributeNode(tmp_id_border); 
     250                inputFile.id = "inputFile_" + id_border + "_" + countDivFiles; 
     251                inputFile.name = 'file_' + countDivFiles; 
     252                 
     253                 
     254                divFile.appendChild(inputFile);          
     255        } 
     256 
     257        var a_tmp = new Array(); 
     258        a_tmp[0] = "local_"; 
     259        a_tmp[1] = 'file_' + countDivFiles; 
     260        a_tmp[2] = file_name; 
     261        s_tmp = escape(connector.serialize(a_tmp)); 
     262        var checkbox = document.createElement("INPUT"); 
     263        checkbox.type = "checkbox"; 
     264        checkbox.id = "checkbox_"+id_border+"_"+countDivFiles; 
     265        checkbox.name = "local_attachments[]"; 
     266         
     267        checkbox.value = s_tmp; 
     268        divFile.appendChild(checkbox); 
     269         
     270        var link_attachment = document.createElement("A"); 
     271        link_attachment.setAttribute("href", link); 
     272         
     273        link_attachment.innerHTML = file_name; 
     274        divFile.appendChild(link_attachment); 
     275         
     276        countDivFiles++; 
     277        divFile.id = "divFile_"+id_border+"_"+countDivFiles;     
     278        divFiles.appendChild(divFile); 
     279 
     280        divFile.id = "divFile_"+id_border+"_"+countDivFiles;     
     281        divFiles.appendChild(divFile); 
     282        checkbox.checked = true; //Incrível, mas no Internet Explorer o checked só funciona efetivamente se o elemente já estiver renderizado... por isso só aqui eu seleciono ele... 
     283        return inputFile; 
     284} 
     285 
    203286// Add Input File Dynamically. 
    204287function addFile(id_border){ 
     
    239322        divFile.id = "divFile_"+id_border+"_"+countDivFiles;     
    240323        divFiles.appendChild(divFile); 
     324 
     325        return inputFile; 
    241326} 
    242327//      Remove Input File Dynamically. 
     
    677762 
    678763 function lang_folder(fn) { 
    679         if (fn == "Inbox") return get_lang("Inbox"); 
     764        if (fn.toUpperCase() == "INBOX") return get_lang("Inbox"); 
    680765        if (special_folders[fn] && typeof(special_folders[fn]) == 'string') { 
    681766                return get_lang(special_folders[fn]); 
    682         } 
     767        }        
    683768        return fn; 
    684769 } 
  • trunk/expressoMail1_2/js/doiMenuData.js

    r320 r670  
    152152                var _sep = "<hr>"; 
    153153                var optionsMenu = new Array(  
    154                         _tab + get_lang("Mark as")+"&nbsp;"+get_lang('seen')+'|'+"set_messages_flag('seen','get_selected_messages')", 
    155                         _tab + get_lang("Mark as")+"&nbsp;"+get_lang('unseen')+'|'+"set_messages_flag('unseen','get_selected_messages')", 
    156                         _tab + get_lang("Mark as")+"&nbsp;"+get_lang('important')+'|'+"set_messages_flag('flagged','get_selected_messages')", 
    157                         _tab + get_lang("Mark as")+"&nbsp;"+get_lang('normal')+'|'+"set_messages_flag('unflagged','get_selected_messages')", 
     154                        _tab + get_lang("Mark as")+"&nbsp;"+get_lang('seen')+'|'+"proxy_mensagens.proxy_set_messages_flag('seen','get_selected_messages')", 
     155                        _tab + get_lang("Mark as")+"&nbsp;"+get_lang('unseen')+'|'+"proxy_mensagens.proxy_set_messages_flag('unseen','get_selected_messages')", 
     156                        _tab + get_lang("Mark as")+"&nbsp;"+get_lang('important')+'|'+"proxy_mensagens.proxy_set_messages_flag('flagged','get_selected_messages')", 
     157                        _tab + get_lang("Mark as")+"&nbsp;"+get_lang('normal')+'|'+"proxy_mensagens.proxy_set_messages_flag('unflagged','get_selected_messages')", 
    158158                        _sep, 
    159159                        _tab + get_lang("Move to")+" ... |wfolders.makeWindow('', 'move_to')", 
    160                         _tab + get_lang("Delete")+"|"+"delete_msgs('null','selected','null')", 
     160                        _tab + get_lang("Delete")+"|"+"proxy_mensagens.delete_msgs('null','selected','null')", 
    161161                        _tab + get_lang("Export")+"|"+"export_all_selected_msgs()" 
    162162                ); 
  • trunk/expressoMail1_2/js/drag_area.js

    r331 r670  
    216216                        if(new_folder_name == 'INBOX') 
    217217                                new_folder_name = get_lang("Inbox"); 
    218                                  
    219                         if(_dragArea.from_list) 
    220                                 if (numBox != 0) 
     218                        if (_dragArea.from_list) { 
     219                                if (numBox != 0)  
    221220                                        move_search_msgs("content_id_search_" + numBox, new_folder, new_folder_name); 
    222                                 else     
    223                                         move_msgs(_dragArea.folder, 'selected', 0, new_folder, new_folder_name); 
    224                                  
    225                         else{ 
    226                                 var msg_number = _dragArea.from_list ? _dragArea.msg_number : _dragArea.msg_number.replace('_r',''); 
    227                                 move_msgs(_dragArea.folder, msg_number, msg_number+"_r", new_folder, new_folder_name); 
     221                                else  
     222                                        proxy_mensagens.proxy_move_messages("null", 'selected', 0, new_folder, new_folder_name); 
     223                        } 
     224                        else { 
     225                                var msg_number = _dragArea.from_list ? _dragArea.msg_number : _dragArea.msg_number.replace('_r', ''); 
     226                                proxy_mensagens.proxy_move_messages("null", msg_number, msg_number + "_r", new_folder, new_folder_name); 
    228227                        } 
    229228                } 
  • trunk/expressoMail1_2/js/draw_api.js

    r660 r670  
    5353                        } 
    5454                } 
    55                 cExecute ("$this.imap_functions.get_folders_list", update_tree_folders); 
     55                cExecute ("$this.imap_functions.get_folders_list&folder="+current_folder, update_tree_folders); 
     56                 
     57                 
     58                /** 
     59                 * Pastas locais 
     60                 */ 
     61                if(preferences.use_local_messages==1) { 
     62                        var local_folders = expresso_local_messages.list_local_folders(); 
     63                        var has_changes = false; 
     64                        for (var i in local_folders) { //Coloca as pastas locais. 
     65                                var folder_unseen = Element('dftree_local_'+local_folders[i][0]+'_unseen'); 
     66                                 
     67                                if ((folder_unseen) && (local_folders[i][1] > 0)) 
     68                                { 
     69                                        folder_unseen.innerHTML = local_folders[i][1]; 
     70                                        has_changes = true; 
     71                                } 
     72                                else if (local_folders[i][1] > 0) 
     73                                { 
     74                                        tree_folders.getNodeById("local_"+local_folders[i][0]).alter({caption:lang_folder(local_folders[i][0]) + '<font style=color:red>&nbsp(</font><span id="dftree_local_'+local_folders[i][0]+'_unseen" style=color:red>'+local_folders[i][1]+'</span><font style=color:red>)</font>'}); 
     75                                        tree_folders.getNodeById("local_"+local_folders[i][0])._refresh(); 
     76                                        has_changes = true; 
     77                                } 
     78                                else if (local_folders[i][1] <= 0) 
     79                                { 
     80                                        tree_folders.getNodeById("local_"+local_folders[i][0]).alter({caption:lang_folder(local_folders[i][0])}); 
     81                                        tree_folders.getNodeById("local_"+local_folders[i][0])._refresh(); 
     82                                        has_changes = true; 
     83                                } 
     84         
     85                                if("local_"+local_folders[i][0] == get_current_folder()){                                        
     86                                        var old_new_m = isNaN(parseInt(Element('new_m').innerHTML)) ? parseInt(Element('new_m').firstChild.innerHTML) : parseInt(Element('new_m').innerHTML); 
     87                                        if(!isNaN(old_new_m) && old_new_m < local_folders[i][1]){ 
     88                                                Element('tot_m').innerHTML = parseInt(Element('tot_m').innerHTML) + (parseInt(local_folders[i][1])-old_new_m); 
     89                                        } 
     90                                        Element('new_m').innerHTML = local_folders[i][1] ? '<font color="RED">'+local_folders[i][1]+'</font>' : 0; 
     91                                        draw_paging(Element('tot_m').innerHTML); 
     92                                        has_changes = true; 
     93                                } 
     94                        } 
     95                        if(has_changes) 
     96                                tree_folders.getNodeById("local_root").open(); 
     97 
     98                } 
     99                 
    56100                return; 
    57101        } 
     
    83127                        tree_folders.add(nn,folders[i].folder_parent); 
    84128                } 
     129                //tree_local_folders = new dFTree({name: 'tree_local_folders'}); 
     130                /** 
     131                 * Pastas locais 
     132                 */ 
     133                if (preferences.use_local_messages==1) { 
     134                        if (!window.google || !google.gears) { 
     135                                temp = confirm(get_lang("To use local messages you have to install google gears. Would you like to be redirected to gears installation page?")); 
     136                                if (temp) { 
     137                                        location.href = "http://gears.google.com/?action=install&message="+ 
     138                                        get_lang("To use local messages, install Google Gears")+"&return=" + document.location.href; 
     139                                } 
     140                                else { 
     141                                        preferences.use_local_messages=0; 
     142                                } 
     143                        } 
     144                        else{ 
     145                                var root_local = new dNode({ 
     146                                        id: "local_root", 
     147                                        caption: get_lang('local messages') 
     148                                }); 
     149                                tree_folders.add(root_local, "root"); //coloca root local 
     150                                var local_folders = expresso_local_messages.list_local_folders(); 
     151                                for (var i in local_folders) { //Coloca as pastas locais. 
     152                                        if (local_folders[i][1] > 0)  
     153                                                var nodeLocal = new dNode({ 
     154                                                        id: "local_" + local_folders[i][0], 
     155                                                        caption: lang_folder(local_folders[i][0]) + '<font style=color:red>&nbsp(</font><span id="local_unseen" style=color:red>' + local_folders[i][1] + '</span><font style=color:red>)</font>', 
     156                                                        onClick: "change_folder('local_" + local_folders[i][0] + "','" + local_folders[i][0] + "')", 
     157                                                        plusSign: 0 
     158                                                }); 
     159                                        else  
     160                                                var nodeLocal = new dNode({ 
     161                                                        id: "local_" + local_folders[i][0], 
     162                                                        caption: lang_folder(local_folders[i][0]), 
     163                                                        onClick: "change_folder('local_" + local_folders[i][0] + "','" + local_folders[i][0] + "')", 
     164                                                        plusSign: 0 
     165                                                }); 
     166                                        tree_folders.add(nodeLocal, "local_root"); 
     167                                } 
     168                        } 
     169                } 
     170 
     171                 
     172                 
    85173                tree_folders.draw(Element('content_folders')); 
    86174                n_root.changeState(); 
     
    183271                        return true; 
    184272                } 
    185                 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_box_type+ "&search_box_type="+ search_box_type +"&sort_box_reverse="+sort_box_reverse+"", handler_draw_box); 
    186         } else 
     273                proxy_mensagens.messages_list(current_folder,1,preferences.max_email_per_page,sort_box_type,search_box_type,sort_box_reverse,handler_draw_box); 
     274//              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_box_type+ "&search_box_type="+ search_box_type +"&sort_box_reverse="+sort_box_reverse+"", handler_draw_box); 
     275        } 
     276        else 
    187277                alternate_border(0); 
    188278} 
     
    246336        if(current_page != 1) { 
    247337                lnk_page = document.createElement("A"); 
    248                 lnk_page.setAttribute("href", "javascript:current_page=1;kill_current_box(); draw_paging("+num_msgs+"); cExecute ('$this.imap_functions.get_range_msgs2&folder='+get_current_folder()+'&msg_range_begin="+msg_range_begin+"&msg_range_end="+msg_range_end+"&sort_box_type="+sort_box_type+ "&search_box_type="+ search_box_type +"&sort_box_reverse="+sort_box_reverse+"', function handler(data){draw_box(data, get_current_folder());})"); 
     338                lnk_page.setAttribute("href", "javascript:current_page=1;kill_current_box(); draw_paging("+num_msgs+"); proxy_mensagens.messages_list(get_current_folder(),"+msg_range_begin+","+msg_range_end+",'"+sort_box_type+"','"+search_box_type+"',"+sort_box_reverse+",function handler(data){draw_box(data, get_current_folder());});"); 
    249339        } 
    250340        else { 
     
    285375                        msg_range_begin = ((i*preferences.max_email_per_page)-(preferences.max_email_per_page-1)); 
    286376                        msg_range_end = (i*preferences.max_email_per_page); 
    287                         lnk_page.setAttribute("href", "javascript:current_page="+i+";kill_current_box(); draw_paging("+num_msgs+"); cExecute ('$this.imap_functions.get_range_msgs2&folder='+get_current_folder()+'&msg_range_begin="+msg_range_begin+"&msg_range_end="+msg_range_end+"&sort_box_type="+sort_box_type+ "&search_box_type="+ search_box_type +"&sort_box_reverse="+sort_box_reverse+"', function handler(data){draw_box(data, get_current_folder());})"); 
     377                        lnk_page.setAttribute("href", "javascript:current_page="+i+";kill_current_box(); draw_paging("+num_msgs+"); proxy_mensagens.messages_list(get_current_folder(),"+msg_range_begin+","+msg_range_end+",'"+sort_box_type+"','"+search_box_type+"',"+sort_box_reverse+",function handler(data){draw_box(data, get_current_folder());});"); 
    288378                } 
    289379                 
     
    302392                msg_range_begin = ((total_pages*preferences.max_email_per_page)-(preferences.max_email_per_page-1)); 
    303393                msg_range_end = (total_pages*preferences.max_email_per_page);            
    304                 lnk_page.setAttribute("href", "javascript:current_page="+total_pages+";kill_current_box(); draw_paging("+num_msgs+"); cExecute ('$this.imap_functions.get_range_msgs2&folder='+get_current_folder()+'&msg_range_begin="+msg_range_begin+"&msg_range_end="+msg_range_end+"&sort_box_type="+sort_box_type+ "&search_box_type="+ search_box_type +"&sort_box_reverse="+sort_box_reverse+"', function handler(data){draw_box(data, get_current_folder());})"); 
     394                lnk_page.setAttribute("href", "javascript:current_page="+total_pages+";kill_current_box(); draw_paging("+num_msgs+"); proxy_mensagens.messages_list(get_current_folder(),"+msg_range_begin+","+msg_range_end+",'"+sort_box_type+"','"+search_box_type+"',"+sort_box_reverse+",function handler(data){draw_box(data, get_current_folder());});"); 
    305395        } 
    306396        else { 
     
    347437                        { 
    348438                                if ((window.event.keyCode) == 46) 
    349                                         delete_msgs(get_current_folder(),'selected','null'); 
     439                                        proxy_mensagens.delete_msgs(get_current_folder(),'selected','null'); 
    350440                        } 
    351441                        else 
    352442                        { 
    353443                                if ((e.keyCode) == 46) 
    354                                         delete_msgs(get_current_folder(),'selected','null'); 
     444                                        proxy_mensagens.delete_msgs(get_current_folder(),'selected','null'); 
    355445                        } 
    356446                }; 
     
    416506                        { 
    417507                                //delete_all_selected_msgs_imap(); 
    418                                 delete_msgs(get_current_folder(),'selected','null'); 
     508                                proxy_mensagens.delete_msgs(get_current_folder(),'selected','null'); 
    419509                        } 
    420510                } 
     
    424514                        { 
    425515                                //delete_all_selected_msgs_imap(); 
    426                                 delete_msgs(get_current_folder(),'selected','null'); 
     516                                proxy_mensagens.delete_msgs(get_current_folder(),'selected','null'); 
    427517                        } 
    428518                } 
     
    606696                td_element3.id = "td_who_"+ headers_msgs.msg_number; 
    607697                td_element3.setAttribute("width", "30%"); 
    608                 var _onclick = function(){InfoContact.hide();cExecute("$this.imap_functions.get_info_msg&msg_number="+ headers_msgs.msg_number + "&msg_folder=" + msg_folder, show_msg);}; 
     698                var _onclick = function(){InfoContact.hide();proxy_mensagens.get_msg(headers_msgs.msg_number, msg_folder,true, show_msg);}; 
    609699                td_element3.onclick = _onclick; 
    610700                td_element3.innerHTML = '&nbsp;'; 
     
    726816        search_box_type = search; 
    727817 
    728         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); 
     818        proxy_mensagens.messages_list(current_folder,1,preferences.max_email_per_page,sort,search,sort_box_reverse,handler_draw_box); 
     819//      cExecute ("$this.imap_functions.get_range_msgs2&folder="+current_folder+"&msg_range_begin=1&msg_range_end="+preferences.max_email_per_page+"&search_box_type="+search+"&sort_box_type="+sort+"&sort_box_reverse="+sort_box_reverse+"", handler_draw_box); 
    729820        current_page = 1; 
    730821        //Comentado para nao sobrepor o numero de msgs nao lidas ao utilizar os filtros 
     
    9521043        option_delete.id = 'msg_opt_delete_'+ID; 
    9531044        option_delete.className = 'message_options'; 
    954         option_delete.onclick = function(){delete_msgs(info_msg.msg_folder, info_msg.msg_number, ID);}; 
     1045        option_delete.onclick = function(){proxy_mensagens.delete_msgs(info_msg.msg_folder, info_msg.msg_number, ID);}; 
    9551046        option_delete.innerHTML = get_lang('Delete'); 
    9561047        options.appendChild(space3); 
     
    9741065 
    9751066        var option_mark_as                                              = '<span>'+get_lang("Mark as")+'</span>: '; 
    976         var option_mark_as_unseen                               = '<span class="message_options" onclick="set_messages_flag(\'unseen\','+info_msg.msg_number+');write_msg(\''+get_lang('Message marked as ')+get_lang("Unseen")+'.\');">'+get_lang("Unseen")+'</span>, '; 
    977         var option_mark_as_important                    = '<span class="message_options" onclick="set_messages_flag(\'flagged\','+info_msg.msg_number+');write_msg(\''+get_lang('Message marked as ')+get_lang("Important")+'.\');">'+get_lang("Important")+'</span>, '; 
    978         var option_mark_as_normal                               = '<span class="message_options" onclick="set_messages_flag(\'unflagged\','+info_msg.msg_number+');write_msg(\''+get_lang('Message marked as ')+get_lang("Normal")+'.\');">'+get_lang("Normal")+'</span> | '; 
     1067        var option_mark_as_unseen                               = '<span class="message_options" onclick="proxy_mensagens.proxy_set_messages_flag(\'unseen\','+info_msg.msg_number+');write_msg(\''+get_lang('Message marked as ')+get_lang("Unseen")+'.\');">'+get_lang("Unseen")+'</span>, '; 
     1068        var option_mark_as_important                    = '<span class="message_options" onclick="proxy_mensagens.proxy_set_messages_flag(\'flagged\','+info_msg.msg_number+');write_msg(\''+get_lang('Message marked as ')+get_lang("Important")+'.\');">'+get_lang("Important")+'</span>, '; 
     1069        var option_mark_as_normal                               = '<span class="message_options" onclick="proxy_mensagens.proxy_set_messages_flag(\'unflagged\','+info_msg.msg_number+');write_msg(\''+get_lang('Message marked as ')+get_lang("Normal")+'.\');">'+get_lang("Normal")+'</span> | '; 
    9791070         
    9801071        var option_move                                                 = '<span class="message_options" onclick=wfolders.makeWindow("'+ID+'","move_to");>'+get_lang("Move")+'</span> | '; 
     
    9821073        var option_reply_without_history                = '<span class="message_options" onclick=new_message("reply_without_history","'+ID+'");>'+get_lang("Reply without history")+'</span> | '; 
    9831074        var option_reply_to_all_without_history = '<span class="message_options" onclick=new_message("reply_to_all_without_history","'+ID+'");>'+get_lang("Reply to all without history")+'</span> | '; 
    984         var option_source_msg                                   = '<span class="message_options" onclick=source_msg("'+ID+'","'+url_encode(info_msg.msg_folder)+'");>'+get_lang("Message Font")+'</span>';       
     1075        var option_source_msg                                   = '<span class="message_options" onclick=proxy_mensagens.proxy_source_msg("'+ID+'","'+url_encode(info_msg.msg_folder)+'");>'+get_lang("Message Font")+'</span>';         
    9851076 
    9861077        div_other_options.innerHTML = option_mark_as + option_mark_as_unseen + option_mark_as_important + option_mark_as_normal + option_move + option_reply_to_all + option_reply_without_history + option_reply_to_all_without_history + option_source_msg; 
     
    10111102                var option_edit   = '<span class="message_options" onclick="new_message(\'edit\',\''+ID+'\');">'+get_lang('Edit')+'</span> | '; 
    10121103                var option_print = '<span class="message_options" onclick="print_msg(\''+info_msg.msg_folder+'\',\''+info_msg.msg_number+'\',\''+ID+'\');">'+get_lang('Print')+'</span> | '; 
    1013                 var option_delete = '<span class="message_options" onclick="delete_msgs(\''+info_msg.msg_folder+'\',\''+info_msg.msg_number+'\',\''+ID+'\');">'+get_lang('Delete')+'</span> | ';                 
     1104                var option_delete = '<span class="message_options" onclick="proxy_mensagens.delete_msgs(\''+info_msg.msg_folder+'\',\''+info_msg.msg_number+'\',\''+ID+'\');">'+get_lang('Delete')+'</span> | ';                 
    10141105                var option_hide_more = document.createElement("SPAN"); 
    10151106                option_hide_more.className = 'message_options'; 
     
    10971188        from_values.type = "HIDDEN"; 
    10981189        from_values.value = info_msg.from.full; //Veio do IMAP, sem images nem links. 
     1190         
     1191        var local_message = document.createElement("INPUT"); 
     1192        local_message.id = "is_local_"+ID; 
     1193        local_message.name = "is_local"; 
     1194        local_message.type = "HIDDEN"; 
     1195        local_message.value = (info_msg.local_message)?"1":"0"; 
     1196         
    10991197        tr1.appendChild(td1); 
    11001198        tr1.appendChild(from); 
    11011199        tr1.appendChild(from_values); 
     1200        tr1.appendChild(local_message); 
     1201         
     1202 
     1203         
    11021204        if (info_msg.reply_to){ 
    11031205                var tr11 = document.createElement("TR"); 
     
    13181420                for (var i=0; i<info_msg.attachments.length; i++){ 
    13191421                        var link_attachment = document.createElement("A"); 
    1320                         link_attachment.setAttribute("href", "javascript:download_attachments('"+info_msg.msg_folder+"','"+info_msg.msg_number+"',"+i+",'"+info_msg.attachments[i].pid+"','"+info_msg.attachments[i].encoding+"')"); 
     1422                        link_attachment.setAttribute("href", proxy_mensagens.link_anexo(info_msg,i)); 
     1423//                      link_attachment.setAttribute("href", "javascript:download_attachments('"+info_msg.msg_folder+"','"+info_msg.msg_number+"',"+i+",'"+info_msg.attachments[i].pid+"','"+info_msg.attachments[i].encoding+"')"); 
    13211424                        link_attachment.innerHTML = url_decode(info_msg.attachments[i].name); 
    13221425                        msg_size = info_msg.attachments[i].fsize; 
     
    15731676        } 
    15741677        } 
     1678         
    15751679        td_to.appendChild(input_to); 
     1680         
     1681        var forwarded_local_message = document.createElement("INPUT"); //Hidden para indicar se é um forward de uma mensagem local 
     1682        forwarded_local_message.id = "is_local_forward"+ID; 
     1683        forwarded_local_message.name = "is_local_forward"; 
     1684        forwarded_local_message.type = "HIDDEN"; 
     1685        forwarded_local_message.value = "0"; 
     1686        td_to.appendChild(forwarded_local_message); 
    15761687         
    15771688        var img_search = document.createElement("IMG"); 
     
    21372248                        { 
    21382249                                //delete_all_selected_msgs_imap(); 
    2139                                 delete_msgs(get_current_folder(),'selected','null'); 
     2250                                proxy_mensagens.delete_msgs(get_current_folder(),'selected','null'); 
    21402251                        } 
    21412252                } 
     
    21452256                        { 
    21462257                                //delete_all_selected_msgs_imap(); 
    2147                                 delete_msgs(get_current_folder(),'selected','null'); 
     2258                                proxy_mensagens.delete_msgs(get_current_folder(),'selected','null'); 
    21482259                        } 
    21492260                } 
     
    22442355                        { 
    22452356                                //delete_all_selected_msgs_imap(); 
    2246                                 delete_msgs(get_current_folder(),'selected','null'); 
     2357                                proxy_mensagens.delete_msgs(get_current_folder(),'selected','null'); 
    22472358                        } 
    22482359                } 
     
    22522363                        { 
    22532364                                //delete_all_selected_msgs_imap(); 
    2254                                 delete_msgs(get_current_folder(),'selected','null'); 
     2365                                proxy_mensagens.delete_msgs(get_current_folder(),'selected','null'); 
    22552366                        } 
    22562367                } 
     
    23372448} 
    23382449function draw_footer_box(num_msgs){ 
     2450        folder = get_current_folder(); 
    23392451        var span_R = Element("table_message");   
    23402452        var span_options = Element("span_options");      
     
    23472459 
    23482460        span_options.innerHTML =  
    2349                 '<span title="'+get_lang("Delete")+'" style="margin-left:8px" class="message_options" onclick=delete_msgs(\'null\',\'selected\',\'null\')>'+get_lang("Delete")+'</span> | '+ 
     2461                '<span title="'+get_lang("Delete")+'" style="margin-left:8px" class="message_options" onclick=proxy_mensagens.delete_msgs(\'null\',\'selected\',\'null\')>'+get_lang("Delete")+'</span> | '+ 
    23502462                '<span title="'+get_lang("Move")+'" class="message_options" onclick=wfolders.makeWindow(\"\",\"move_to\")>'+get_lang("Move")+'</span> | '+ 
    23512463                '<span title="'+get_lang("Print")+'" class="message_options" onclick=print_all()>'+get_lang("Print")+'</span> | '+ 
    23522464                '<span title="'+get_lang("Export")+'" class="message_options" onclick="export_all_selected_msgs()">'+get_lang("Export")+'</span> | ' +  
    23532465                '<span title="'+get_lang("Import")+'" class="message_options" onclick="import_window()">'+get_lang("Import")+'</span>'; 
    2354          
     2466        if(preferences.use_local_messages==1) 
     2467                span_options.innerHTML += ' | <span title="'+get_lang("Archive")+'" class="message_options" onclick="archive_msgs(\''+folder+'\',null)">'+get_lang("Archive")+'</span>'; 
    23552468        if (use_spam_filter) { 
    23562469                if ( get_current_folder() == 'INBOX'+cyrus_delimiter+'Spam' )   { 
  • trunk/expressoMail1_2/js/filter.js

    r564 r670  
    128128                                } 
    129129                        } 
    130                         for(var i=0; i < nm_folders.length; i++) 
    131                         { 
    132                                 if(nm_folders[i].id != "root") 
    133                                 { 
     130                        for(var i=0; i < nm_folders.length; i++){ 
     131                                if(nm_folders[i].id != "root" && !proxy_mensagens.is_local_folder(nm_folders[i].id)){ 
    134132                                        var opt = new Option(nm_folders[i].caption,nm_folders[i].id,false,true); 
    135133                                        sel_nm[sel_nm.length] = opt; 
  • trunk/expressoMail1_2/js/main.js

    r660 r670  
    4040        cExecute ("$this.functions.get_preferences", save_preferences); 
    4141        setTimeout('auto_refresh()', time_refresh); 
     42} 
     43function disable_field(field,condition) { 
     44        var comando = "if ("+condition+") { document.getElementById('"+field.id+"').disabled=true;} else { document.getElementById('"+field.id+"').disabled=false; }"; 
     45        eval(comando); 
    4246} 
    4347/* 
     
    236240} 
    237241 
    238 function delete_msgs(folder, msgs_number, border_ID) 
    239 { 
     242function delete_msgs2(folder, msgs_number, border_ID, show_success_msg) { 
    240243        if (folder == 'null') 
    241244                folder = get_current_folder(); 
    242245 
    243246        if ((parseInt(preferences.save_deleted_msg)) && (folder!='INBOX'+cyrus_delimiter+trashfolder)){ 
    244                 move_msgs(folder, msgs_number, border_ID, 'INBOX'+cyrus_delimiter+trashfolder,trashfolder ); 
     247                move_msgs2(folder, msgs_number, border_ID, 'INBOX'+cyrus_delimiter+trashfolder,trashfolder,show_success_msg ); 
    245248                return; 
    246249        } 
     
    271274                        } 
    272275                } 
    273                 if (data.msgs_number.length == 1) 
    274                         write_msg(get_lang("The message was deleted.")); 
    275                 else 
    276                         write_msg(get_lang("The messages were deleted.")); 
     276                if (show_success_msg) { 
     277                        if (data.msgs_number.length == 1)  
     278                                write_msg(get_lang("The message was deleted.")); 
     279                        else  
     280                                write_msg(get_lang("The messages were deleted.")); 
     281                } 
    277282 
    278283                if (data.border_ID != 'null'){ 
     
    293298                write_msg(get_lang('No selected message.'));             
    294299} 
     300function delete_msgs(folder, msgs_number, border_ID) 
     301{  
     302        delete_msgs2(folder, msgs_number, border_ID, true); 
     303} 
     304 
    295305 
    296306function move_search_msgs(border_id, new_folder, new_folder_name){ 
    297307        var selected_messages = ''; 
     308        var temp_msg; 
    298309        var main_list = Element("tbody_resultsearch_"+border_id.substr(18)).childNodes;  
    299310        for (j = 0; j < main_list.length; j++)  { 
    300311                var check_box = main_list[j].firstChild.firstChild;  
    301312                if(check_box && check_box.checked) { 
     313                        if (proxy_mensagens.is_local_folder(main_list[j].name)) { 
     314                                alert(get_lang("You cant manipulate local messages on search")); 
     315                                return; 
     316                        } 
    302317                        selected_messages += main_list[j].id + ','; 
    303318                } 
    304319        } 
     320 
    305321        selected_messages = selected_messages.substring(0,(selected_messages.length-1)); 
    306322        var handler_move_search_msgs = function(data){ 
     
    334350                        for (i = 0; i < selected_msg_array.length; i++){ 
    335351                                var tr = Element(selected_msg_array[i]); 
    336                                 selected_param += ','+tr.name+';'+tr.id; 
     352                            selected_param += ','+tr.name+';'+tr.id; 
    337353                        } 
    338354                } 
     
    340356                { 
    341357                        var tr=Element(selected_messages); 
     358                        alert(tr.name); 
    342359                        selected_param=tr.name+';'+tr.id; 
    343360                } 
     
    348365                        params = "&delete=true"; 
    349366                }                        
    350                  
    351367                params += "&selected_messages="+url_encode(selected_param); 
    352368                if(new_folder) { 
     
    354370                        params += "&new_folder_name="+url_encode(new_folder_name); 
    355371                } 
     372 
    356373                cExecute ("$this.imap_functions.move_search_messages", handler_move_search_msgs, params); 
    357374        } 
     
    360377} 
    361378 
    362 function move_msgs(folder, msgs_number, border_ID, new_folder, new_folder_name){ 
     379function move_msgs2(folder, msgs_number, border_ID, new_folder, new_folder_name,show_success_msg){ 
     380 
    363381        if (! folder || folder == 'null') 
    364382                folder = Element("input_folder_"+msgs_number+"_r") ? Element("input_folder_"+msgs_number+"_r").value : get_current_folder(); 
     
    424442                } 
    425443                 
    426  
    427                 if (data.msgs_number.length == 1) 
    428                         write_msg(get_lang("The message was moved to folder ") + lang_folder(data.new_folder_name)); 
    429                 else 
    430                         write_msg(get_lang("The messages were moved to folder ") + lang_folder(data.new_folder_name)); 
     444                if (show_success_msg) { 
     445                        if (data.msgs_number.length == 1) 
     446                                write_msg(get_lang("The message was moved to folder ") + lang_folder(data.new_folder_name)); 
     447                        else  
     448                                write_msg(get_lang("The messages were moved to folder ") + lang_folder(data.new_folder_name)); 
     449                } 
     450 
    431451                if (data.border_ID.indexOf('r') != -1){ 
    432452                        if (parseInt(preferences.delete_and_show_previous_message) && folder == get_current_folder()){ 
     
    455475                write_msg(get_lang('No selected message.'));             
    456476                 
     477} 
     478 
     479function move_msgs(folder, msgs_number, border_ID, new_folder, new_folder_name) { 
     480        move_msgs2(folder, msgs_number, border_ID, new_folder, new_folder_name,true); 
     481} 
     482 
     483function archive_msgs(folder,folder_dest,id_msgs) { 
     484        if(proxy_mensagens.is_local_folder(folder)) { 
     485                write_msg(get_lang("You cant archive local mails")); 
     486                return; 
     487        } 
     488        var has_local_messages_before = expresso_local_messages.has_local_mails(); //vejo se já tinha mensagens locais 
     489        var handler_arquivar_mensagens = function(data) { 
     490                var sucess = true; 
     491                var temp; 
     492                var msgs_to_remove = new Array(); 
     493                var update_tree; 
     494 
     495 
     496                for (var i = 0; i < data.length; i++) { 
     497                        msg_info = connector.unserialize(data[i]); 
     498                        temp = expresso_local_messages.insert_mail(msg_info, msg_info['header'],msg_info['array_attach'],folder_dest ); 
     499                        Element("check_box_message_" + msg_info.msg_number).checked = false; 
     500                        if(!temp) 
     501                                sucess = false; 
     502                        else 
     503                                msgs_to_remove.push(msg_info.msg_number);//As mensagens arquivadas devem ser removidas, caso o usuï¿œrio tenha isso configurado. 
     504                } 
     505                 
     506                if (preferences.keep_archived_messages == 0) { //Remove as mensagens 
     507                                delete_msgs2(folder,msgs_to_remove,'null',false); 
     508                } 
     509                update_tree=(!has_local_messages_before) && expresso_local_messages.has_local_mails(); 
     510                 
     511                Element('chk_box_select_all_messages').checked = false; 
     512                if(update_tree) 
     513                        ttreeBox.update_folder(); 
     514                else 
     515                        update_menu(); 
     516                if(sucess)  
     517                        write_msg(get_lang("selected messages have been archived")); 
     518                else 
     519                        write_msg(get_lang("at least, one of selected mails is already archived, expresso tried to archive the others, check them later")); 
     520 
     521        }        
     522        if(!id_msgs) 
     523                id_msgs = get_selected_messages(); 
     524        if (parseInt(id_msgs) > 0 || id_msgs.length > 0)  
     525                cExecute("$this.imap_functions.get_info_msgs&folder=" + folder + "&msgs_number=" + id_msgs , handler_arquivar_mensagens); 
     526        else  
     527                write_msg(get_lang('No selected message.')); 
     528         
    457529} 
    458530 
     
    501573        else 
    502574                return selected_messages; 
     575} 
     576 
     577function replaceAll(string, token, newtoken) { 
     578        while (string.indexOf(token) != -1) { 
     579                string = string.replace(token, newtoken); 
     580        } 
     581        return string; 
    503582} 
    504583 
     
    720799                        break; 
    721800                case "forward": 
     801                        data.is_local_message = (document.getElementById("is_local_"+border_ID).value=="1")?true:false; 
    722802                        msg_forward_from = document.createElement('input'); 
    723803                        msg_forward_from.id = "msg_forward_from_" + new_border_ID; 
     
    728808                        document.getElementById("subject_" + new_border_ID).value = "Fw: " + data.subject; 
    729809                        var divFiles = Element("divFiles_"+new_border_ID); 
     810                        var campo_arquivo 
    730811                        if (Element("attachments_" + border_ID)){ 
    731812                                var attachments = document.getElementById("attachments_" + border_ID).childNodes; 
    732813                                for (var i = (attachments.length > 1 ? 1 : 0); i < attachments.length; i++){ 
     814                                        /*Anexos ics possuem um link ao seu lado para importar para calendário, que  
     815                                        não deve ser renderizado. Esse link não possui a string  
     816                                        javascript:download_attachments e vem com um span antes que é um espaço em branco,  
     817                                        que tb deve ser descartado*/ 
     818                                        if((attachments[i].tagName=="SPAN") ||  
     819                                                        ((attachments[i].href.indexOf("javascript:download_local_attachment")==-1)&&(attachments[i].href.indexOf("javascript:download_attachments")==-1))) 
     820                                                continue;  
    733821                                        var link_attachment = document.createElement("A"); 
    734822                                        link_attachment.setAttribute("href", attachments[i].href); 
    735823                                        link_attachment.innerHTML = attachments[i].innerHTML; 
    736                                         var tmp = link_attachment.href.replace("javascript:download_attachments(", "").replace(")", ""); 
    737                                         var a_tmp = tmp.split(','); 
    738                                         tmp = link_attachment.innerHTML.substring(0,link_attachment.innerHTML.lastIndexOf("(")); 
    739                                         a_tmp[2] = "'"+tmp.substring(0,tmp.length-1)+"'"; 
    740                                         s_tmp = escape(connector.serialize(a_tmp)); 
    741                                         divFiles.innerHTML += "<input style='border:0' type='CHECKBOX' name='forwarding_attachments[]' checked value=\""+s_tmp+"\"/>"; 
    742                                         divFiles.appendChild(link_attachment); 
     824                                        if (data.is_local_message) {//Local messages 
     825                                                document.getElementById("is_local_forward"+new_border_ID).value = "1"; 
     826                                                var tmp = link_attachment.href.substring(link_attachment.href.indexOf("(") + 2);//Pula o parenteses e a aspas 
     827                                                tmp = tmp.substring(0, tmp.length - 2);//corta a aspas e o parenteses 
     828                                                tmp = replaceAll(tmp,"%20"," "); 
     829                                                var tempNomeArquivo = tmp.split("/"); 
     830                                                var nomeArquivo = tempNomeArquivo[tempNomeArquivo.length-1]; 
     831                                                nomeArquivo = nomeArquivo.substring(0,nomeArquivo.length - 4); //Anexos no gears são todos com extensão .php. tenho que tirar a extensão para ficar o nome real do arquivo. 
     832                                                campo_arquivo = addForwardedFile(new_border_ID,nomeArquivo,link_attachment.href); 
     833                                                 
     834                                                expresso_local_messages.getInputFileFromAnexo(campo_arquivo, tmp); 
     835                                        } 
     836                                        else { 
     837                                                var tmp = link_attachment.href.replace("javascript:download_attachments(", "").replace(")", ""); 
     838                                                var a_tmp = tmp.split(','); 
     839                                                tmp = link_attachment.innerHTML.substring(0,link_attachment.innerHTML.lastIndexOf("(")); 
     840                                                a_tmp[2] = "'"+tmp.substring(0,tmp.length-1)+"'"; 
     841                                                s_tmp = escape(connector.serialize(a_tmp));                      
     842 
     843                                                divFiles.innerHTML += "<input style='border:0' type='CHECKBOX' name='forwarding_attachments[]' checked value=\""+s_tmp+"\"/>"; 
     844                                                divFiles.innerHTML += "<link style='border:0' name='file_"+i+"' id='inputFile_"+border_ID+i+"'/>"; 
     845                                                divFiles.appendChild(link_attachment); 
     846                                        }        
    743847                                } 
    744848                        } 
     
    14841588                else 
    14851589                        set_message_flag(msgs_number, "unseen"); 
    1486             move_msgs(folder, msgs_number, border_ID, new_folder, new_folder_name); 
     1590            proxy_mensagens.proxy_move_messages(folder, msgs_number, border_ID, new_folder, new_folder_name); 
    14871591        } 
    14881592 
     
    15041608                // debug 
    15051609                // alert(data); 
    1506                 move_msgs(folder, msgs_number, border_ID, new_folder, new_folder_name); 
     1610                proxy_mensagens.proxy_move_messages(folder, msgs_number, border_ID, new_folder, new_folder_name); 
    15071611        } 
    15081612    if(msgs_number == 'selected') 
  • trunk/expressoMail1_2/js/search.js

    r667 r670  
    101101                                                     "</tr>"+ 
    102102                                                     "<tr>"+ 
    103                                                      "<td valign='top'><input type='checkBox' id='check_all_msg' name='check_all_msg' onclick='EsearchE.all_mailboxes()'><b>" + get_lang('In all the folders') + "</b></td>"+ 
     103                                                     "<td valign='top'><input type='checkBox' id='check_all_msg' name='check_all_msg'><b>" + get_lang('In all the folders') + "</b></td>"+ 
    104104                                                     "</tr>"+ 
    105105                                                     "</table>"+ 
     
    310310                        tr.id = uid_msg; 
    311311                        tr.name = mailbox; 
    312  
     312                         
    313313                        for(var j=0 ; j <= 10 ; j++) 
    314314                        { 
     
    353353                                        if(td1 == "INBOX"){ 
    354354                                                var td1  = get_lang("Inbox"); 
     355                                        } 
     356                                                if(proxy_mensagens.is_local_folder(td1)) { 
     357                                                        var td1 = this.aux_local_folder_display(td1); 
    355358                                        } 
    356359                                } 
     
    494497                if (span_options) 
    495498                        span_options.innerHTML = '<span title="'+get_lang("Delete")+'" style="margin-top:3px;margin-left:8px" class="message_options" onclick="javascript:move_search_msgs(\''+content_search.id+'\');">'+get_lang("Delete")+'</span> | '+ 
    496                                 '<span title="'+get_lang("Move")+'" class="message_options" onclick=wfolders.makeWindow(\"'+content_search.id+'\",\"move_to\")>'+get_lang("Move")+'</span>'; 
     499                                '<span title="'+get_lang("Move")+'" class="message_options" onclick=wfolders.makeWindowNew(\"'+content_search.id+'\",\"move_to\",true)>'+get_lang("Move")+'</span>'; 
    497500                div_scroll_result.appendChild(table); 
    498501                content_search.appendChild(div_scroll_result);   
     
    505508                        if(Element("border_id_" + uid_msg + "_r")){alert(get_lang("This message is already opened!"));} 
    506509                        else{draw_message(data,create_border(url_decode(subject), uid_msg + "_r"));} 
    507                         //set_msg_as_read(msgs_to_set[i], false); 
    508                 } 
    509                 var args   = "$this.imap_functions.get_info_msg"; 
    510                 var params = "&msg_number=" + uid_msg + "&msg_folder=" + mailbox; 
    511                 cExecute(args+params,handler_get_msg); 
     510                } 
     511                proxy_mensagens.get_msg(uid_msg,mailbox,false,handler_get_msg); 
     512                /*var args   = "$this.imap_functions.get_info_msg"; 
     513                var params = "msg_number=" + uid_msg + "&msg_folder=" + mailbox; 
     514                cExecute(args,handler_get_msg,params);*/ 
    512515 
    513516        } 
     
    516519        searchE.prototype.add_mailboxes = function(){ 
    517520                var sel = Element("sel_search_nm_box1"); 
    518                 var name_box     = this.name_box_search.split(cyrus_delimiter); 
    519                 if(this.name_box_search == "") 
    520                         return false; 
    521                 var name_box_def = ""; 
    522                 if(name_box.length != 1){ 
    523                         name_box_def = name_box[(name_box.length-1)]; 
    524                 }else{ 
    525                         name_box_def = get_lang("Inbox");                
     521                if (!proxy_mensagens.is_local_folder(this.name_box_search)) { 
     522                        var name_box     = this.name_box_search.split(cyrus_delimiter); 
     523                        if(this.name_box_search == "") 
     524                                return false; 
     525                        var name_box_def = ""; 
     526                        if(name_box.length != 1){ 
     527                                name_box_def = name_box[(name_box.length-1)]; 
     528                        }else{ 
     529                                name_box_def = get_lang("Inbox");                
     530                        } 
     531                } 
     532                else { 
     533                        if(this.name_box_search=='local_root') 
     534                                return; 
     535                        if(this.name_box_search=='local_Inbox') 
     536                                name_box_def = get_lang("Inbox"); 
     537                        else 
     538                                name_box_def = this.name_box_search.substr(6);//Retira o 'local_' 
    526539                } 
    527540                if( sel.length > 0){ 
     
    593606                        return false; 
    594607                } 
     608                var local_folders = new Array(); 
     609                var temp; 
    595610                 
    596611                if(Element("check_all_msg").checked){ 
     612                        this.all_mailboxes(); 
    597613                        var nm_box = new Array; 
    598614                        for(var i=0; i < EsearchE.all_boxes.length; i++){ 
    599615                                nm_box[i] = EsearchE.all_boxes[i] + fields; 
     616                        } 
     617                        if (preferences.use_local_messages == 1) { 
     618                                temp = expresso_local_messages.list_local_folders(); 
     619                                for (var x in temp) { 
     620                                        local_folders.push(temp[x][0]); 
     621                                } 
    600622                        } 
    601623                }else{ 
     
    612634                        for(var i=0; i < sel_combo.options.length; i++){ 
    613635                                if(sel_combo.options[i].selected == true){ 
    614                                         nm_box[nm_box.length] = sel_combo.options[i].value + fields; 
     636                                        if(!proxy_mensagens.is_local_folder(sel_combo.options[i].value)) 
     637                                                nm_box[nm_box.length] = sel_combo.options[i].value + fields; 
     638                                        else 
     639                                                local_folders.push(sel_combo.options[i].value.substr(6)); 
    615640                                } 
    616641                        } 
    617642                } 
    618643                var handler = function(data){ 
    619                         if(data == "none"){alert(get_lang("None result was found."));} 
     644                        var tmp; 
     645                        var countTmp= new Array(); 
     646                        if (local_folders.length > 0) { 
     647                                tmp = expresso_local_messages.search(local_folders, fields); 
     648                                if (tmp!=false) { 
     649                                        var tmp2 = tmp.substr(2, data.length - 4); 
     650                                        countTmp = tmp.split('####'); 
     651                                } 
     652                        } 
     653                        if((data == "none") && (countTmp.length==0)){alert(get_lang("None result was found."));} 
     654                        else if(countTmp.length > 50){alert(get_lang("More than %1 results. Please, try to refine your search.",50));} 
    620655                        else if(data == "many results"){alert(get_lang("More than %1 results. Please, try to refine your search.",50));} 
    621                         else{EsearchE.mount_result(data);} 
     656                        else{EsearchE.mount_result((data=='none')?tmp:(countTmp.length==0)?data:data+tmp);} 
    622657                } 
    623658                var args   = "$this.imap_functions.search_msg"; 
     
    679714                win.open();      
    680715        } 
     716         
     717        searchE.prototype.aux_local_folder_display = function(folder) { 
     718                return "(Local) " + lang_folder(folder.substr(6)); 
     719        } 
     720         
    681721// Cria o objeto 
    682722        var EsearchE; 
  • trunk/expressoMail1_2/js/shortcut.js

    r631 r670  
    262262                 
    263263                selected_shortcut_msgs = selected_shortcut_msgs.substring(0,(selected_shortcut_msgs.length-1)); 
    264                 delete_msgs(current_folder, selected_shortcut_msgs, 'null'); 
     264                proxy_mensagens.delete_msgs(current_folder, selected_shortcut_msgs, 'null'); 
    265265        } 
    266266        else 
  • trunk/expressoMail1_2/js/wfolders.js

    r660 r670  
    66        } 
    77 
    8         cWFolders.prototype.makeWindow = function(border_id, type) 
    9         { 
     8        cWFolders.prototype.makeWindowNew = function(border_id, type,from_search) 
     9        { //Infelizmente javascript não parece suportar o polimorfismo... 
    1010                _this = this; 
    1111         
     
    6060                                        move_search_msgs(border_id, wfolders_tree._selected.id, wfolders_tree._selected.caption);        
    6161                                else{ 
    62                                         move_msgs('null', msg_number, border_id, wfolders_tree._selected.id, wfolders_tree._selected.caption); 
     62                                        proxy_mensagens.proxy_move_messages('null',msg_number, border_id, wfolders_tree._selected.id, wfolders_tree._selected.caption); 
    6363                                        wfolders.alert = true; 
    6464                                } 
     
    8787                el.appendChild(butt); 
    8888 
    89                 if (!Element('dftree_wfolders_tree')) 
     89                wfolders_tree = new dFTree({name: 'wfolders_tree'}); 
     90                var n_root = new dNode({id:'root', caption:get_lang("My Folders")}); 
     91                wfolders_tree.add(n_root,'anything'); //Places the root; second argument can be anything. 
     92 
     93                var folders = tree_folders.getNodesList(cyrus_delimiter); 
     94                for (var i=1; i<folders.length; i++) 
    9095                { 
    91                         wfolders_tree = new dFTree({name: 'wfolders_tree'}); 
    92                         var n_root = new dNode({id:'root', caption:get_lang("My Folders")}); 
    93                         wfolders_tree.add(n_root,'anything'); //Places the root; second argument can be anything. 
     96                        if (proxy_mensagens.is_local_folder(folders[i].id) && from_search) { 
     97                                continue; 
     98                        } 
     99                        var nn = new dNode({ 
     100                                id: folders[i].id, 
     101                                caption: lang_folder(folders[i].caption), 
     102                                plusSign: folders[i].plusSign 
     103                        }); 
     104                        wfolders_tree.add(nn, folders[i].parent); 
     105                         
     106                } 
     107                Element('wfolders_content_tree').innerHTML = ""; //As buscas não podem incluir mover entre pastas locais, pelo menos por enquanto 
     108                wfolders_tree.draw(Element('wfolders_content_tree')); 
     109                n_root.changeState(); 
     110                wfolders_tree.getNodeById('INBOX')._select(); 
     111                _this.showWindow(el, type); 
     112        } 
    94113 
    95                         var folders = tree_folders.getNodesList(cyrus_delimiter); 
    96                         for (var i=1; i<folders.length; i++) 
    97                         { 
    98                                 var nn = new dNode({id:folders[i].id, caption:lang_folder(folders[i].caption), plusSign:folders[i].plusSign}); 
    99                                 wfolders_tree.add(nn,folders[i].parent); 
    100                         } 
    101                          
    102                         wfolders_tree.draw(Element('wfolders_content_tree')); 
    103                         n_root.changeState(); 
    104                         wfolders_tree.getNodeById('INBOX')._select(); 
    105                 } 
    106                 _this.showWindow(el, type); 
     114        cWFolders.prototype.makeWindow = function(border_id, type) 
     115        { 
     116                this.makeWindowNew(border_id,type,false); 
    107117        } 
    108118         
  • trunk/expressoMail1_2/preferences.php

    r500 r670  
    133133                else 
    134134                        $GLOBALS['phpgw']->template->set_var('font_size_option_11_selected','selected'); 
     135            $c = CreateObject('phpgwapi.config','expressoMail1_2'); 
     136            $c->read_repository(); 
     137            $current_config = $c->config_data; 
     138                 
     139                if($current_config['enable_local_messages']!='True') { 
     140                        $GLOBALS['phpgw']->template->set_var('open_comment_local_messages_config',"<!--"); 
     141                        $GLOBALS['phpgw']->template->set_var('close_comment_local_messages_config',"-->"); 
     142                } 
     143                else { 
     144                        $GLOBALS['phpgw']->template->set_var('open_comment_local_messages_config'," "); 
     145                        $GLOBALS['phpgw']->template->set_var('close_comment_local_messages_config'," "); 
     146                } 
     147                 
     148                if ($GLOBALS['phpgw_info']['user']['preferences']['expressoMail']['use_local_messages']) 
     149                        $GLOBALS['phpgw']->template->set_var('use_local_messages_option_Yes_selected','selected'); 
     150                else { 
     151                        $GLOBALS['phpgw']->template->set_var('use_local_messages_option_No_selected',''); 
     152                        $GLOBALS['phpgw']->template->set_var('use_local_messages_option_Yes_selected',''); 
     153                } 
     154                 
     155                if ($GLOBALS['phpgw_info']['user']['preferences']['expressoMail']['keep_archived_messages']) 
     156                        $GLOBALS['phpgw']->template->set_var('keep_archived_messages_option_Yes_selected','selected'); 
     157                else { 
     158                        $GLOBALS['phpgw']->template->set_var('keep_archived_messages_option_No_selected',''); 
     159                        $GLOBALS['phpgw']->template->set_var('keep_archived_messages_option_Yes_selected',''); 
     160                }                
     161                 
    135162        } 
    136163        else //Save Config 
     
    232259                else 
    233260                        $GLOBALS['phpgw']->preferences->add('expressoMail','font_size',$_POST['font_size']);             
     261                if ($GLOBALS['phpgw_info']['user']['preferences']['expressoMail']['use_local_messages']) 
     262                        $GLOBALS['phpgw']->preferences->change('expressoMail','use_local_messages',$_POST['use_local_messages']); 
     263                else 
     264                        $GLOBALS['phpgw']->preferences->add('expressoMail','use_local_messages',$_POST['use_local_messages']); 
     265                         
     266                if ($GLOBALS['phpgw_info']['user']['preferences']['expressoMail']['keep_archived_messages']) 
     267                        $GLOBALS['phpgw']->preferences->change('expressoMail','keep_archived_messages',$_POST['keep_archived_messages']); 
     268                else 
     269                        $GLOBALS['phpgw']->preferences->add('expressoMail','keep_archived_messages',$_POST['keep_archived_messages']);                   
    234270 
    235271                $GLOBALS['phpgw']->preferences->save_repository(); 
     
    276312        $GLOBALS['phpgw']->template->set_var('lang_type_signature',lang('Signature type')); 
    277313        $GLOBALS['phpgw']->template->set_var('big',lang('Big')); 
     314        $GLOBALS['phpgw']->template->set_var('lang_Would_you_like_to_keep_archived_messages_?',lang('Would you like to keep archived messages?')); 
     315        $GLOBALS['phpgw']->template->set_var('lang_Yes',lang('Yes')); 
     316        $GLOBALS['phpgw']->template->set_var('lang_No',lang('No')); 
     317        $GLOBALS['phpgw']->template->set_var('lang_Would_you_like_to_use_local_messages_?',lang('Would you like to use local messages?')); 
    278318        $GLOBALS['phpgw']->template->set_var('lang_use_signature',lang('Insert signature automatically in new messages?')); 
    279319 
  • trunk/expressoMail1_2/templates/default/config.tpl

    r607 r670  
    1212   <tr bgcolor="{row_off}"> 
    1313    <td colspan="2"><b>{lang_ExpressoMail_settings}</b></td> 
     14   </tr> 
     15        <tr class="{row_off}"> 
     16    <td>{lang_Would_you_like_to_use_local_messages_?}:</td> 
     17    <td> 
     18     <select name="newsettings[enable_local_messages]"> 
     19      <option value="">{lang_No}</option> 
     20      <option value="True"{selected_enable_local_messages_True}>{lang_Yes}</option> 
     21     </select> 
     22    </td> 
    1423   </tr> 
    1524   <tr bgcolor="{row_on}"> 
  • trunk/expressoMail1_2/templates/default/preferences.tpl

    r413 r670  
    1  
     1<script src="js/main.js"></script> 
    22<center> 
    33 
     
    3939        </td> 
    4040    </tr> 
     41    {open_comment_local_messages_config} 
     42        <tr bgcolor="{tr_color2}"> 
     43        <td>{lang_Would_you_like_to_use_local_messages_?}</td> 
     44        <td align="center"> 
     45                <select name="use_local_messages" id="use_local_messages" onchange="disable_field(document.getElementById('keep_archived_messages'),'document.getElementById(\'use_local_messages\').value==\'0\'')"> 
     46                                <option {use_local_messages_option_No_selected} value="0">{lang_No}</option> 
     47                                <option {use_local_messages_option_Yes_selected} value="1">{lang_Yes}</option> 
     48                        </select> 
     49        </td> 
     50    </tr> 
     51        <tr bgcolor="{tr_color1}"> 
     52        <td>{lang_Would_you_like_to_keep_archived_messages_?}</td> 
     53        <td align="center"> 
     54                <select name="keep_archived_messages" id="keep_archived_messages">                               
     55                                <option {keep_archived_messages_option_No_selected} value="0">{lang_No}</option> 
     56                                <option {keep_archived_messages_option_Yes_selected} value="1">{lang_Yes}</option> 
     57                        </select> 
     58        </td> 
     59    </tr> 
     60    {close_comment_local_messages_config} 
    4161    <tr bgcolor="{tr_color2}"> 
    4262        <td>{lang_delete_and_show_previous_message}</td> 
     
    161181</center> 
    162182<script language="JavaScript" type="text/javascript"> 
     183        disable_field(document.getElementById('keep_archived_messages'),'document.getElementById(\'use_local_messages\').value==\'0\'') 
    163184        var form =      document.forms[0]; 
    164185 
  • trunk/mobile/templates/default/body_email.tpl

    r524 r670  
    2525<td width='2%' align='left' valign='top'>{varbuttom1}</td> 
    2626<td width='2%' align='left' valign='top'>{varbuttom2}</td> 
    27 <td width='94%' align='left' valign='top'>{varbuttom3}</td> 
     27<td width='2%' align='left' valign='top'>{varbuttom3}</td> 
     28<td width='92%' align='left' valign='top'>{varbuttom4}</td> 
    2829</tr> 
    2930</table> 
Note: See TracChangeset for help on using the changeset viewer.