Changeset 7414 for trunk


Ignore:
Timestamp:
10/11/12 18:14:36 (12 years ago)
Author:
marcosw
Message:

Ticket #3088 - Realização de merge da melhoria do MailArchiver?

Location:
trunk
Files:
20 edited
7 copied

Legend:

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

    r7040 r7414  
    5656        // Rommel Cysne (rommel.cysne@serpro.gov.br) 
    5757        // em 17/12/2008. 
     58 
     59    function createFileEml_by_localFolder($sEMLData, $tempDir, $file){  
     60 
     61        $file = "{$file}.eml"; 
     62 
     63        $f = fopen($tempDir.'/'.$file,"w"); 
     64        if(!$f) 
     65            return False; 
     66 
     67        fputs($f,$sEMLData); 
     68        fclose($f); 
     69         
     70        return $file; 
     71    } 
     72 
    5873        function createFileEml($sEMLData, $tempDir, $id, $subject=false, $i=false) 
    5974    { 
     
    101116    }  
    102117 
    103         function createFileZip($files, $tempDir){                
     118        function createFileZip($files, $tempDir){        
     119 
    104120                $tmp_zip_filename = "email_".$_SESSION[ 'phpgw_session' ][ 'session_id' ].".zip"; 
    105                  
    106121                if (!empty($files)) 
    107122                { 
     
    119134                    } 
    120135                } 
    121                  
    122                 $command = "cd " . escapeshellarg($tempDir) . " && nice zip -m9 " . escapeshellarg($tmp_zip_filename) . " " .  $files; 
     136 
     137 
     138$command = "cd " . escapeshellarg($tempDir) . " && nice zip -m9 " . escapeshellarg($tmp_zip_filename) . " " .  $files; 
     139 
     140 
    123141                if(!exec($command)) { 
    124142                        $command = "cd " .  escapeshellarg($tempDir) . " && rm ".$files." ". escapeshellarg($tmp_zip_filename); 
     
    126144                        return null; 
    127145                } 
    128                  
     146 
    129147                return $tmp_zip_filename; 
    130148                                 
    131149        } 
    132150 
    133         function export_all($params){ 
    134                  
     151function export_all_byLocalFolder($params){ 
     152        $error = false; 
     153 
     154        if(empty($params['messages'])){ 
     155            $file["empty_folder"] = true; 
     156        } else { 
     157            foreach($params['messages'] as $eachMsg){ 
     158               $header = ""; 
     159               $body = ""; 
     160               $tempDir = $this->tempDir; 
     161 
     162               $this->get_header_byLocalFolder($eachMsg, $header); 
     163               $this->get_body_byLocalFolder($eachMsg, $body); 
     164               $sEMLData    = $this->parseEml($header, $body); 
     165               $fileName   = $this->createFileEml_by_localFolder($sEMLData, $tempDir,$eachMsg['msg_number']); 
     166 
     167               if(!$fileName){ 
     168                   $error = true; 
     169                   break; 
     170               } else  
     171                   $fileNames .= "\"".$fileName."\" "; 
     172            } 
     173 
     174            $nameFileZip = 'False';          
     175            if($fileNames && !$error) {          
     176                $nameFileZip = $this->createFileZip($fileNames, $tempDir); 
     177                ($nameFileZip) ? ($file = $tempDir.'/'.$nameFileZip) : ($file = false); 
     178            } else  
     179                $file = false; 
     180        } 
     181        
     182       return $file; 
     183 
     184} 
     185 
     186function get_header_byLocalFolder($eachMsg, &$header){ 
     187    $header = <<<header 
     188        MIME-Version: 1.0 
     189        Content-Type: text/html; charset=ISO-8859-1 
     190        Content-Transfer-Encoding: quoted-printable 
     191        From: "{$eachMsg['from']['name']}" <{$eachMsg['from']['email']}> 
     192        To: {$eachMsg['to']['email']} 
     193        Subject: {$eachMsg['subject']} 
     194        Message-Id: {$eachMsg['msg_number']} 
     195        Date: {$eachMsg['date']} 
     196header; 
     197} 
     198 
     199function get_body_byLocalFolder($eachMsg, &$body){ 
     200    $body = $eachMsg['msg_sample']['body']; 
     201} 
     202 
     203function export_all($params){ 
     204 
    135205                $this->folder = $params['folder']; 
    136206                $this->folder = mb_convert_encoding($this->folder, "UTF7-IMAP","UTF-8"); 
     
    140210                 
    141211                $msgs = imap_search($this->mbox_stream,"ALL",SE_UID); 
     212 
    142213                if($msgs){ 
    143214                        foreach($msgs as $nMsgs){ 
    144                                 $header         = $this-> getHeader($nMsgs);                                                                     
    145                                 $body           = $this-> getBody($nMsgs);                       
     215 
     216                                $header         = $this-> getHeader($nMsgs);                                                              
     217                                $body           = $this-> getBody($nMsgs);               
     218 
    146219                                $sEMLData       = $this -> parseEml($header, $body); 
    147220                                $fileName       = $this -> CreateFileEml($sEMLData, $tempDir,$nMsgs); 
     
    478551        } 
    479552 
     553        //MAILARCHIVER  
     554        function js_source_var($params) { 
     555                $this-> folder = $params['folder']; 
     556                if(!$this->folder){ 
     557                   $aux = explode(';',$params['msgs_to_export']); 
     558                   $this->folder = $aux[0]; 
     559                   $id_number = $aux[1]; 
     560                } 
     561                else{ 
     562                        $id_number = $params['msgs_to_export']; 
     563                } 
     564                $this->folder = mb_convert_encoding($this->folder, "UTF7-IMAP","ISO_8859-1"); 
     565                $tempDir = ini_get("session.save_path"); 
     566 
     567                $this->connectImap(); 
     568                $header         = $this-> getHeader($id_number); 
     569                $body           = $this-> getBody($id_number); 
     570                 
     571                if(!strpos($header,"Date: ")){ 
     572                        $header = "Date: " . $this->getHeaderInfo($id_number)->Date . "\r\n" .$header ; 
     573                } 
     574 
     575                imap_close($this->mbox_stream); 
     576 
     577                $input = $header . "\r\n\r\n" . $body; 
     578                $input = preg_replace('/\x1d/', '', $input); //remove special char control detected (hex 1D) 
     579                 
     580                return($input); 
     581        }  
     582         
    480583    function export_msg_data($id_msg,$folder) { 
    481584                $this->folder = $folder; 
     
    752855                return imap_fetchheader($this->mbox_stream, $msg_number, FT_UID); 
    753856        } 
     857 
     858        function getHeaderInfo($msg_number){                     
     859                $header = imap_headerinfo($this->mbox_stream, imap_msgno($this->mbox_stream, $msg_number), 80, 255); 
     860                return $header; 
     861        } 
    754862         
    755863        function getBody($msg_number){ 
  • trunk/expressoMail1_2/inc/class.imap_functions.inc.php

    r7413 r7414  
    31633163                $mailService->addHeaderField('Disposition-Notification-To', $_SESSION['phpgw_info']['expressomail']['user']['email']); 
    31643164 
     3165            $mailService->addHeaderField('Date', date("r")); 
    31653166 
    31663167            if ($folder != 'null') { 
     
    46604661 
    46614662    function insert_email($source,$folder,$timestamp,$flags){ 
    4662                  
     4663 
    46634664        $username = $_SESSION['phpgw_info']['expressomail']['user']['userid']; 
    46644665        $password = $_SESSION['phpgw_info']['expressomail']['user']['passwd']; 
     
    46674668        $imap_options = '/notls/novalidate-cert'; 
    46684669 
    4669          
    46704670        $folder = mb_convert_encoding( $folder, "UTF7-IMAP","ISO-8859-1"); 
    4671  
    46724671        $mbox_stream = imap_open("{".$imap_server.":".$imap_port.$imap_options."}".$folder, $username, $password); 
    46734672         
    46744673        if(imap_last_error() === 'Mailbox already exists') 
    46754674            imap_createmailbox($mbox_stream,imap_utf7_encode("{".$imap_server."}".$folder)); 
     4675 
    46764676        if($timestamp){ 
    4677                         $pdate = date_parse(date('r')); // pega a data atual do servidor (TODO: pegar a data da mensagem local)  
    4678                         $timestamp += $pdate['zone']*(60); //converte a data da mensagem para o fuso horário GMT 0. Isto é feito devido ao Expresso Mail armazenar a data no fuso horário GMT 0 e para exibi-la converte ela para o fuso horário local.  
    4679                         /* TODO: o diretorio /tmp deve ser substituido pelo diretorio temporario configurado no setup */  
    4680                         $file = "/tmp/sess_".$_SESSION[ 'phpgw_session' ][ 'session_id' ];  
    4681                  
    4682                 $f = fopen($file,"w"); 
    4683                 fputs($f,base64_encode($source)); 
    4684             fclose($f); 
    4685             $command = "python ".dirname(__FILE__)."/../imap.py \"$imap_server\" \"$imap_port\" \"$username\" \"$password\" \"$timestamp\" \"$folder\" \"$file\""; 
    4686             $return['command']= exec($command); 
     4677            if(version_compare(PHP_VERSION, '5.3.2', '>=')){ 
     4678                $return['append'] = imap_append($mbox_stream, "{".$imap_server.":".$imap_port."}".mb_convert_encoding($folder, "UTF7-IMAP","ISO_8859-1"), $source,'',date('d-M-Y H:i:s O',$timestamp)); 
     4679            }else{ 
     4680                                $pdate = date_parse(date('r')); // pega a data atual do servidor (TODO: pegar a data da mensagem local)  
     4681                                $timestamp += $pdate['zone']*(60); //converte a data da mensagem para o fuso horário GMT 0. Isto é feito devido ao Expresso Mail armazenar a data no fuso horário GMT 0 e para exibi-la converte ela para o fuso horário local.  
     4682                                /* TODO: o diretorio /tmp deve ser substituido pelo diretorio temporario configurado no setup */  
     4683                                $file = "/tmp/sess_".$_SESSION[ 'phpgw_session' ][ 'session_id' ];  
     4684                         
     4685                        $f = fopen($file,"w"); 
     4686                        fputs($f,base64_encode($source)); 
     4687                    fclose($f); 
     4688                    $command = "python ".dirname(__FILE__)."/../imap.py \"$imap_server\" \"$imap_port\" \"$username\" \"$password\" \"$timestamp\" \"$folder\" \"$file\""; 
     4689                    $return['command']= exec($command); 
     4690                } 
    46874691        }else{ 
    46884692            $return['append'] = imap_append($mbox_stream, "{".$imap_server.":".$imap_port."}".$folder, $source, "\\Seen"); 
    46894693        } 
     4694 
     4695        if (!empty($return['command'])) 
     4696        { 
     4697            list ($result, $msg) = explode(':',$return['command']); 
     4698            if (strtoupper($result) === 'NO') 
     4699            { 
     4700                $return['error'] = $msg; 
     4701                return $return; 
     4702            } 
     4703        } 
     4704 
    46904705        $status = imap_status($mbox_stream, "{".$this->imap_server.":".$this->imap_port."}".$folder, SA_UIDNEXT); 
    46914706                         
    46924707        $return['msg_no'] = $status->uidnext - 1; 
    4693         $return['error'] = imap_last_error(); 
    4694         if(!$return['error'] && $flags != '' ){ 
    4695  
    4696                   $flags_array=explode(':',$flags); 
    4697                   //"Answered","Draft","Flagged","Unseen" 
    4698                   $flags_fixed = ""; 
    4699                   if($flags_array[0] == 'A') 
    4700                         $flags_fixed.="\\Answered "; 
    4701                   if($flags_array[1] == 'X') 
    4702                         $flags_fixed.="\\Draft "; 
    4703                   if($flags_array[2] == 'F') 
    4704                         $flags_fixed.="\\Flagged "; 
    4705                   if($flags_array[3] != 'U') 
    4706                         $flags_fixed.="\\Seen "; 
    4707                   if($flags_array[4] == 'F') 
    4708                         $flags_fixed.="\\Answered \\Draft "; 
    4709                   imap_setflag_full($mbox_stream, $return['msg_no'], $flags_fixed, ST_UID); 
    4710                 } 
     4708                 
     4709        $return['error'] = ''; 
     4710                if(imap_last_error() && imap_last_error() != "SECURITY PROBLEM: insecure server advertised AUTH=PLAIN") 
     4711            $return['error'] = imap_last_error(); 
     4712 
     4713                if(!$return['error'] && $flags != '' ){ 
     4714                        $flags_array=explode(':',$flags); 
     4715                        //"Answered","Draft","Flagged","Unseen" 
     4716                        $flags_fixed = ""; 
     4717                        if($flags_array[0] == 'A') 
     4718                            $flags_fixed.="\\Answered "; 
     4719                        if($flags_array[1] == 'X') 
     4720                            $flags_fixed.="\\Draft "; 
     4721                        if($flags_array[2] == 'F') 
     4722                            $flags_fixed.="\\Flagged "; 
     4723                        if($flags_array[3] != 'U') 
     4724                            $flags_fixed.="\\Seen "; 
     4725                        if($flags_array[4] == 'F') 
     4726                            $flags_fixed.="\\Answered \\Draft "; 
     4727                        imap_setflag_full($mbox_stream, $return['msg_no'], $flags_fixed, ST_UID); 
     4728                } 
    47114729         
    47124730        //Ignorando erro de AUTH=Plain 
     
    47734791 
    47744792    function treat_base64_from_post($source){ 
    4775             $offset = 0; 
    4776             do 
     4793        $source = preg_replace('/(?<!\r)\n/', "\r\n", $source); 
     4794 
     4795        $offset = 0; 
     4796        do 
     4797        { 
     4798            if($inicio = strpos($source, 'Content-Transfer-Encoding: base64', $offset)) 
    47774799            { 
    4778                     if($inicio = strpos($source, 'Content-Transfer-Encoding: base64', $offset)) 
    4779                     { 
    4780                             $inicio = strpos($source, "\n\r", $inicio); 
    4781                             $fim = strpos($source, '--', $inicio); 
    4782                             if(!$fim) 
    4783                                     $fim = strpos($source,"\n\r", $inicio); 
    4784                             $length = $fim-$inicio; 
    4785                             $parte = substr( $source,$inicio,$length-1); 
    4786                             $parte = str_replace(" ", "+", $parte); 
    4787                             $source = substr_replace($source, $parte, $inicio, $length-1); 
    4788                     } 
    4789                     if($offset > $inicio) 
    4790                     $offset=FALSE; 
    4791                     else 
    4792                     $offset = $inicio; 
     4800                    $inicio = strpos($source, "\n\r", $inicio); 
     4801                    $fim = strpos($source, '--', $inicio); 
     4802                    if(!$fim) 
     4803                            $fim = strpos($source,"\n\r", $inicio); 
     4804                    $length = $fim-$inicio; 
     4805                    $parte = substr( $source,$inicio,$length-1); 
     4806                    $parte = str_replace(" ", "+", $parte); 
     4807                    $source = substr_replace($source, $parte, $inicio, $length-1); 
    47934808            } 
    4794             while($offset); 
    4795             return $source; 
     4809            if($offset > $inicio) 
     4810            $offset=FALSE; 
     4811            else 
     4812            $offset = $inicio; 
     4813        } 
     4814        while($offset); 
     4815        return $source; 
    47964816    } 
    47974817 
    4798 //Por Bruno Costa(bruno.vieira-costa@serpro.gov.br - Recebe os fontes dos emails a serem desarquivados, separa e envia cada um para função insert_mail. 
     4818        //Por Bruno Costa(bruno.vieira-costa@serpro.gov.br - Recebe os fontes dos emails a serem desarquivados, separa e envia cada um para função insert_mail. 
    47994819 
    48004820    function unarchive_mail($params) 
    4801     {            
    4802         $dest_folder = $params['folder']; 
     4821    {    
     4822        $dest_folder = urldecode($params['folder']); 
    48034823        $sources = explode("#@#@#@",$params['source']); 
    4804         //Add user timeszone 
    48054824        $timestamps = explode("#@#@#@",$params['timestamp']); 
    4806  
    4807  
    48084825        $flags = explode("#@#@#@",$params['flags']); 
    4809                  
    4810                 foreach($sources as $index=>$src) { 
    4811                         if($src!=""){ 
    4812                 $source = $this->treat_base64_from_post($src); 
    4813                 $timestampsactual = $timestamps[$index] + $this->functions->CalculateDateOffset();  
    4814                         $insert = $this->insert_email($source, mb_convert_encoding( $dest_folder,"ISO-8859-1","UTF-8"), $timestampsactual,$flags[$index]);  
     4826        $ids = explode("#@#@#@",$params['id']); 
     4827        $return = array(); 
     4828        $archived = array(); 
     4829        $error = array(); 
     4830 
     4831        foreach($sources as $index=>$src) 
     4832        { 
     4833            if($src!="") 
     4834            { 
     4835                //If it is a MailArchiver incomming data 
     4836                if($params['madata']) 
     4837                    $sourcedec = utf8_decode($src); 
     4838                //Default data 
     4839                else 
     4840                    $sourcedec = $src; 
     4841 
     4842                                $source = $this->treat_base64_from_post($sourcedec); 
     4843 
     4844                                $insert = $this->insert_email($source,$dest_folder,$timestamps[$index],$flags[$index]); 
     4845 
     4846                if($insert['error']) 
     4847                { 
     4848                    $error[] = $ids[$index]; 
     4849                } 
     4850                else  
     4851                { 
     4852                    $archived[] = $ids[$index]; 
     4853                } 
     4854            }else{ 
     4855                $error[] = $ids[$index]; 
    48154856            } 
    4816         } 
    4817         return $insert; 
     4857                } 
     4858         
     4859        if (!empty($error)) 
     4860        { 
     4861            $return['error'] = $error; 
     4862        } 
     4863        if (!empty($archived)) 
     4864        { 
     4865            $return['archived'] = $archived; 
     4866        } 
     4867         
     4868        return $return; 
    48184869    } 
    48194870 
     
    54845535        } 
    54855536 
     5537        //MailArchiver -> get offsettogmt as a global javascript variable, invoked at "main.js", init() 
     5538    function get_offset_gmt(){ 
     5539        return($this->functions->CalculateDateOffset()); 
     5540    } 
     5541 
     5542    //MailArchiver -> get message flags only, invoked at archive operation 
     5543    function get_msg_flags($args){   
     5544        $msg_folder = $args['folder']; 
     5545        $msg_n = $args['msg_number']; 
     5546        $arr_msg = explode(",", $msg_n); 
     5547        
     5548        for($i=0; $i<count($arr_msg); $i++){ 
     5549                         
     5550            if(!$this->mbox || !is_resource($this->mbox)) 
     5551                $this->mbox = $this->open_mbox($msg_folder); 
     5552         
     5553            if(!is_resource($this->mbox)) 
     5554                return(false); 
     5555                        
     5556            $msgno_imap = imap_msgno($this->mbox, $msg_n);           
     5557                $header = @imap_headerinfo($this->mbox, $msgno_imap, 80, 255); 
     5558                 
     5559            if (!is_object($header)) 
     5560                return false; 
     5561 
     5562            $taglist[$i]["msgid"] = $msg_n; 
     5563            $taglist[$i]["unseen"] = $header->Unseen; 
     5564            $taglist[$i]["recent"] = $header->Recent; 
     5565            $taglist[$i]["flagged"] = $header->Flagged; 
     5566            $taglist[$i]["draft"] = $header->Draft; 
     5567            $taglist[$i]["answered"] = $header->Answered; 
     5568            $taglist[$i]["deleted"] = $header->Deleted; 
     5569         
     5570            if($header->Answered =='A' && $header->Draft == 'X') 
     5571                $taglist[$i]['forwarded'] = 'F'; 
     5572            else 
     5573                $taglist[$i]['forwarded'] = ' '; 
     5574        } 
     5575 
     5576                return $taglist;         
     5577    }     
    54865578} 
    54875579?> 
  • trunk/expressoMail1_2/inc/class.user.inc.php

    r5509 r7414  
    5050                        return $_SESSION['phpgw_info']['expressomail']['user']['email'];         
    5151                } 
    52                  
     52 
     53        //MailArchiver login validate operations 
     54        function get_mailarchiver_authid(){ 
     55            if((isset($_COOKIE["BALANCEID"])) && ($_COOKIE["BALANCEID"] != null) && ($_COOKIE["BALANCEID"] != " ")) 
     56                $cookie_balancer = $_COOKIE["BALANCEID"]; 
     57            else 
     58                $cookie_balancer = ""; 
     59            if((isset($_COOKIE["sessionid"])) && ($_COOKIE["sessionid"] != null) && ($_COOKIE["sessionid"] != " ")) 
     60                $cookie_session = $_COOKIE["sessionid"]; 
     61            else 
     62                $cookie_session = ""; 
     63            if(isset($_SESSION['phpgw_info']['expressomail']['user']['userid']) && ($_SESSION['phpgw_info']['expressomail']['user']['userid'] != null) && ($_SESSION['phpgw_info']['expressomail']['user']['userid'] != " ")) 
     64                $cookie_user = $_SESSION['phpgw_info']['expressomail']['user']['userid']; 
     65            else 
     66                $cookie_user = ""; 
     67             
     68            if(isset($_SESSION['phpgw_info']['expressomail']['user']['passwd']) && ($_SESSION['phpgw_info']['expressomail']['user']['passwd'] != null) && ($_SESSION['phpgw_info']['expressomail']['user']['passwd'] != " ")) 
     69                $cookie_pass = $_SESSION['phpgw_info']['expressomail']['user']['passwd']; 
     70            else 
     71                $cookie_pass = ""; 
     72             
     73            return(array($cookie_balancer, $cookie_session, $cookie_user, $cookie_pass));                     
     74        } 
     75 
    5376        } 
    5477?> 
  • trunk/expressoMail1_2/index.php

    r7110 r7414  
    348348    // End Set Imap Folder names options 
    349349        //User info 
    350         echo "<script language='javascript'> var account_id = ".$GLOBALS['phpgw_info']['user']['account_id'].";var expresso_offline = false;</script>"; 
     350    echo "<script language='javascript'> var account_id = ".$GLOBALS['phpgw_info']['user']['account_id'].";var expresso_offline = false; var mail_archive_host = '127.0.0.1';</script>\n"; 
     351         
     352    //MAILARCHIVER-02 
     353    //todo: remover a linha abaixo e implementar a configuração 
     354    //$GLOBALS['phpgw_info']['user']['preferences']['expressoMail']['use_local_messages'] = true; 
     355        if ( $GLOBALS['phpgw_info']['user']['preferences']['expressoMail']['use_local_messages'] == true ) { 
     356        $mail_archiver_host = '127.0.0.1'; 
     357        //Check protocol in use (https or http) 
     358        if($_SERVER['HTTPS'] != 'on'){ 
     359            $mail_archiver_protocol = "http"; 
     360            $mail_archiver_port = "4333"; 
     361        } 
     362        else{ 
     363            $mail_archiver_protocol = "https"; 
     364            $mail_archiver_port = "4334"; 
     365        } 
     366     
     367        //JS Variables (to add on jscripts variables, needed by dependence scripts following) 
     368        echo '<script type="text/javascript">var mail_archive_protocol="'.$mail_archiver_protocol.'"; var mail_archive_port="'.$mail_archiver_port.'";</script>'; 
     369     
     370        //CXF custom js files, from MailArchiver ArcServUtil JS files repository, intended to be running already: CORS support and custom TRANSPORT object 
     371        echo '<script type="text/javascript" src="'.$mail_archiver_protocol.'://'.$mail_archiver_host.':'.$mail_archiver_port.'/arcservutil/cxf-addon-xdr-adapter.js"></script>'; 
     372        echo '<script type="text/javascript" src="'.$mail_archiver_protocol.'://'.$mail_archiver_host.':'.$mail_archiver_port.'/arcservutil/cxf-addon-cors-request-object.js"></script>'; 
     373        echo '<script type="text/javascript" src="'.$mail_archiver_protocol.'://'.$mail_archiver_host.':'.$mail_archiver_port.'/arcservutil/cxf-addon-cors-utils.js"></script>'; 
     374 
     375        //CXF UTILS MAIN FILE 
     376        echo '<script type="text/javascript" src="'.$mail_archiver_protocol.'://'.$mail_archiver_host.':'.$mail_archiver_port.'/arcserv/ArchiveServices?js&nojsutils"></script>'; 
     377     
     378        //QueryConfig add on 
     379        echo '<script src="js/MAQueryConfig.js?'.$update_version.'"></script>';         
     380        //Expresso serialized format add on 
     381        echo '<script src="js/MAExpressoPattern.js?'.$update_version.'"></script>';         
     382     
     383        //echo $obj -> getFilesJs("js/mail_archiver.js," . $GLOBALS['phpgw_info']['flags']['update_version']); 
     384        echo '<script src="js/mail_archiver.js?'.$update_version.'"></script>'; 
     385     
     386    } 
     387        //echo "<script language='javascript'> var account_id = ".$GLOBALS['phpgw_info']['user']['account_id'].";var expresso_offline = false;</script>"; 
    351388 
    352389        $obj = createobject("expressoMail1_2.functions"); 
     
    376413                $scripts .= "js/shortcut.js,"; 
    377414        } 
    378                                  
     415        echo "<script> use_local_messages = ".$_SESSION['phpgw_info']['user']['preferences']['expressoMail']['use_local_messages']."</script>";          
    379416        if($_SESSION['phpgw_info']['user']['preferences']['expressoMail']['use_local_messages']) 
    380417                $scripts .= "js/local_messages.js,"; 
  • trunk/expressoMail1_2/js/abas.js

    r6960 r7414  
    220220                        var id_border = currentTab.replace(/[a-zA-Z_]+/, ""); 
    221221                        ID_TR = ID.toString().substr(0,ID.toString().indexOf("_r")); 
    222                         var tr = Element(ID_TR); 
     222                        var tr = Element(ID_TR) ? Element(ID_TR) : Element(ID_TR+"_s"+id_border); 
    223223                        openTab.imapBox[ID] = (tr.getAttribute('name') == null?get_current_folder():tr.getAttribute('name')); 
    224224                }else 
     
    255255                                cc = document.getElementById("em_message_search").value; 
    256256                        else{ 
    257                                 cc = document.getElementsByName(currentTab)[0].value; 
     257                                if (currentTab == 0) 
     258                                        cc = ""; 
     259                                else 
     260                                        cc = document.getElementsByName(currentTab)[0].value; 
    258261                        } 
    259262                }else{ 
  • trunk/expressoMail1_2/js/common_functions.js

    r7392 r7414  
    2020 
    2121var message = "Não Informado"; 
     22 
     23//MAILARCHIVER-01 
     24try{ 
     25   var ArchiveServices = new web_service_mailarchiver_serpro__ArchiveServices(); 
     26   ArchiveServices.url = mail_archive_protocol + "://" + mail_archive_host + ":" + mail_archive_port + "/arcserv/ArchiveServices"; 
     27   ArchiveServices.synchronous = true; 
     28} 
     29catch (e){ 
     30    var ArchiveServices = null; 
     31} 
    2232 
    2333function config_events(pObj, pEvent, pHandler) 
     
    245255        } 
    246256        div_attachment.innerHTML="<iframe style='display:none;width:0;height:0' name='attachment' src='"+url+"'></iframe>"; 
    247 } 
     257        window.onbeforeunload = function(){return unloadMess();} 
     258}  
    248259 
    249260function download_attachments(msg_folder, msg_number, idx_file, msg_part, encoding, new_file_name, show_iframe){ 
     
    666677 
    667678function configureLabels(data){ 
     679    if(get_current_folder().split("_")[0] == "local"){ 
     680        alert("Pastas locais não fornece suporte para marcadores"); 
     681        return true; 
     682    } 
    668683 
    669684        dialogElement = $('.label-configure-win').html(DataLayer.render("../prototype/modules/mail/templates/label_configure.ejs", {})) 
     
    693708 
    694709function configureFollowupflag(){ 
     710 
     711    if(get_current_folder().split("_")[0] == "local"){ 
     712        alert("Pastas locais não fornece suporte para acompanhamento."); 
     713        return true; 
     714    } 
    695715 
    696716        var messages = new Array(); 
  • trunk/expressoMail1_2/js/doiMenuData.js

    r7222 r7414  
    1 function labeledMessages(isLabel){ 
    2                         if (isLabel) { 
    3                                 var label = { 
    4                                         id: isLabel 
    5                                 }        
    6                                 var lableleds = new Array(); 
    7                                 var msg_folder = current_folder; 
    8                                 var messages = new Array(); 
    9                                 if(currentTab == 0){ 
    10                                         var id = get_selected_messages().split(','); 
    11                                         for (i = 0; i < id.length; i++){ 
    12                                                 messages.push({ 
    13                                                         msg_number: id[i], 
    14                                                         msg_folder: msg_folder 
    15                                                 }); 
    16                                         } 
    17                                 }else{ 
    18                                         // var id = get_selected_messages_search().split(','); 
    19                                         // var id_border = currentTab.replace(/[a-zA-Z_]+/, ""); 
    20                                         // for (i = 0; i < id.length; i++){ 
    21                                                 // var tr = Element(id[i]+'_s'+id_border); 
    22                                                 // msg_folder = tr.getAttribute('name');  
    23                                                 // messages.push({ 
    24                                                         // "msg_number": id[i], 
    25                                                         // "msg_folder": msg_folder, 
    26                                                 // }); 
    27                                         // }     
    28                                          
    29                                         var roles = get_selected_messages_search_role().split(','); 
    30                                         for (i = 0; i < roles.length; i++){ 
    31                                                 var tr = $('[role="'+roles[i]+'"]'); 
    32                                                 msg_folder = $(tr).attr('name');  
    33                                                 var id = $(tr).attr('id');  
    34                                                 messages.push({ 
    35                                                         "msg_number": id.replace(/_[a-zA-Z0-9]+/,""), 
    36                                                         "msg_folder": msg_folder 
    37                                                 }); 
    38                                         } 
    39                                 } 
    40  
    41                                 for (var i=0; i < messages.length; i++) { 
    42                                         var hasLabel = DataLayer.get('labeled', { 
    43                                                 filter: [ 
    44                                                         'AND', 
    45                                                         ['=', 'labelId', label.id],  
    46                                                         ['=', 'folderName', messages[i].msg_folder],  
    47                                                         ['=', 'messageNumber', messages[i].msg_number] 
    48                                         ]}); 
    49                                         if (!hasLabel || hasLabel == "") { 
    50                                                 lableleds.push( 
    51                                                         DataLayer.put('labeled', { 
    52                                                                 labelId:label.id,  
    53                                                                 folderName:messages[i].msg_folder,  
    54                                                                 messageNumber:messages[i].msg_number 
    55                                                         }) 
    56                                                 ); 
    57                                                  
    58                                         } 
    59                                 } 
    60                                 DataLayer.commit(false, false, function(data){ 
    61                                         for (var i=0; i < messages.length; i++) { 
    62                                                 updateLabelsColumn({msg_number:messages[i].msg_number, boxname:messages[i].msg_folder, labels:false}); 
    63                                         }                
    64                                 }); 
    65                                  
    66  
    67                         } 
    68 } 
    69  
    70 function openListUsers(border_id) { 
    71         connector.loadScript("QuickCatalogSearch"); 
    72         if (typeof(QuickCatalogSearch) == 'undefined'){ 
    73                                         setTimeout('openListUsers('+border_id+')',500); 
    74                                         return false; 
    75                                 } 
    76         QuickCatalogSearch.showCatalogList(border_id); 
    77 } 
    78  
    79  
    80 /** 
    81  * Cria a lista de marcadores para o submenu "Marcadores" 
    82  */ 
    83 function getLabels(){ 
    84         var labels = DataLayer.get('label',{criteria:{order: 'name'}}); 
    85         var menuLabelItems = {}; 
    86                 menuLabelItems["new"] = { 
    87                         "name" : get_lang('New Label'), 
    88                         callback:function() {configureLabels({applyToSelectedMessages:true});} 
    89                 }; 
    90         for(var i=0; i<labels.length; i++) { 
    91                 menuLabelItems["label"+labels[i].id] = { 
    92                         "name" : labels[i].name 
    93                 } 
    94         } 
    95         return menuLabelItems; 
    96 } 
    97  
    98 /** 
    99  *      Carrega o menu de opção de uma mensagem 
    100  */ 
    101 function loadMenu(){ 
    102         var labelItems = getLabels(); 
    103         $.contextMenu({ 
    104                 selector: ".table_box tbody tr", 
    105                 callback: function(key, options) { 
    106                         //TODO - default actions 
    107                          
    108                         /**  
    109                          * Apply labels to selected messages 
    110                          */ 
    111                         var isLabel = key.match(/label(.*)/); 
    112                         if (isLabel && isLabel.length > 1) { 
    113                                 labeledMessages(isLabel[1]); 
    114                         } 
    115                         selectAllFolderMsgs(false); 
    116                 }, 
    117                 items: { 
    118                         "flagSeen":      {"name": get_lang("Mark as") + " " + get_lang('seen'), "icon": "seen", callback: function(key, opt){ proxy_mensagens.proxy_set_messages_flag('seen','get_selected_messages'); }}, 
    119                         "flagUnseen":    {"name": get_lang("Mark as") + " " + get_lang('unseen'), "icon": "unseen", callback: function(key, opt){ proxy_mensagens.proxy_set_messages_flag('unseen','get_selected_messages'); }}, 
    120                         "flagFlagged":   {"name": get_lang("Mark as") + " " + get_lang('important'), "icon": "important", callback: function(key, opt){ proxy_mensagens.proxy_set_messages_flag('flagged','get_selected_messages'); }}, 
    121                         "flagUnflagged": {"name": get_lang("Mark as") + " " + get_lang('normal'), callback: function(key, opt){ proxy_mensagens.proxy_set_messages_flag('unflagged','get_selected_messages'); }}, 
    122                          
    123                         "sep1": "---------", 
    124                         "label": { "name": get_lang("Labels"), "items": labelItems}, 
    125                         "follouwpflag":{"name": get_lang("Follow up"), callback: function(key, opt){ configureFollowupflag(); } }, 
    126                          
    127                         "sep2": "---------", 
    128                         "move": {"name": get_lang("Move to")+"...", "icon": "move", callback: function(key, opt){ wfolders.makeWindow('', 'move_to'); }}, 
    129                         "remove": {"name": get_lang("Delete"),      "icon": "delete", callback: function(key, opt){ proxy_mensagens.delete_msgs('null','selected','null'); }}, 
    130                         "export": {"name": get_lang("Export"),      "icon": "export", callback: function(key, opt){ proxy_mensagens.export_all_messages(); }} 
    131                 } 
    132         }); 
    133 } 
    134 /*FIM*/ 
    135 loadMenu(); 
    136  
    137 if (!expresso_offline) { 
    138         var menuToolsItems = { 
    139                 "i01": {"name": get_lang("Preferences"), "icon": "preferences-mail", callback: preferences_mail }, 
    140                 "i02": {"name": get_lang("Search"), "icon": "search-mail", callback: function(key, opt){ search_emails(""); }}, 
    141                 "103": {"name": get_lang("Edit filters"), "icon": "filter", callback: filterbox2 }, 
    142                 "i05": {"name": get_lang("Share mailbox"), "icon": "share-mailbox", callback: sharebox }, 
    143                 "i06": {"name": get_lang("Labels"), "icon": "tag", callback: configureLabels },  
    144                 "i08": {"name": get_lang("Empty trash"), "icon": "empty-trash", callback: function(key, opt){ empty_trash_imap(); }} 
    145         }; 
    146                  
    147         if(preferences.use_local_messages==1) { 
    148                 if(expresso_local_messages.is_offline_installed()) { 
    149                         menuToolsItems["i09"] = {"name": get_lang("Send from queue"), "icon": "queue", callback: force_check_queue }; 
    150                 } 
    151         } 
    152 } else { 
    153         var menuToolsItems = { 
    154                 "i01": {"name": get_lang("Search"), "icon": "search-mail", callback: function(key, opt){ search_emails(""); }} 
    155         } 
    156 } 
    157 $.contextMenu({ 
    158         selector: "#link_tools", 
    159         trigger: 'hover', 
    160         className: 'context-menu-tools', 
    161         position: function($menu, x, y){ 
    162                 $menu.$menu.position({ my: "center top", at: "center bottom", of: this, offset:"0 0"}); 
    163         }, 
    164         determinePosition: function($menu, x, y){ 
    165                 $menu.css('display', 'block').position({ my: "center top", at: "center bottom", of: this}).css('display', 'none'); 
    166         }, 
    167         delay:500, 
    168         autoHide:true, 
    169         events: { 
    170                 show: function(opt) { 
    171                         var $trigger = $(opt.selector).css({'background-color': '#ffffff', 'border': '1px solid #CCCCCC'}); 
    172                         $('.context-menu-tools.context-menu-list.context-menu-root').css({'width': $trigger.css('width') }); 
    173                         $('.context-menu-tools.context-menu-list').css({'background': '#ffffff'}) 
    174                         .find(".context-menu-item").css({'background-color': '#ffffff'}).hover( 
    175                                 function(){ 
    176                                         $(this).css({'background-color': '#CCCCCC'}); 
    177                                 },  
    178                                 function(){ 
    179                                         $(this).css({'background-color': '#ffffff'}); 
    180                                 } 
    181                         ); 
    182                         return true; 
    183                 }, 
    184                 hide: function(opt) { 
    185                         $(opt.selector).css({'background-color': '', 'border': 'none'}); 
    186                         return true; 
    187                 } 
    188         }, 
    189         callback: function(key, options) { 
    190                 //TODO - default actions 
    191  
    192         }, 
    193         items: menuToolsItems 
    194 }); 
    195 var reComplexEmail = /<([^<]*)>[\s]*$/; 
    196 $.contextMenu({ 
    197         selector: ".box", 
    198         autoHide:true, 
    199         items: { 
    200                 "add" : {name: get_lang("Quick Add"), icon : "quick-add",callback: function(key, opt){ var fname = $(opt.$trigger).find("input").val().split('"')[1];ccQuickAddOne.showList(','+fname+', ,'+$.trim($(opt.$trigger).find("input").val()).match(reComplexEmail)[1]); }}, 
    201                 "remove" : {name:get_lang("Remove recipient"), icon:"delete-box",callback: function(key, opt){ $(opt.$trigger).remove(); }}, 
    202                 "sep1": "---------", 
    203                 "quick_search" : {name:get_lang("Quick search of messages"), icon: "quick-search-contact",callback: function(key, opt){ search_emails($.trim($(opt.$trigger).find("input").val()).match(reComplexEmail)[1]); }}, 
    204                 "full_search" : {name:get_lang("Search messages of ..."), icon: "quick-search-contact",callback: function(key, opt){ search_emails("", $.trim($(opt.$trigger).find("input").val()).match(reComplexEmail)[1]);}}          
    205         } 
    206 }); 
    207  
    208 function updateLabelsColumn(messageInfo) { 
    209         var msg_number = messageInfo.msg_number; 
    210         //uid é o numero da mensagem quando os dados são carregados na busca rapida. 
    211         if(messageInfo.uid != '' && messageInfo.uid != 'undefined' && messageInfo.uid != null){ 
    212                 msg_number = messageInfo.uid; 
    213         } 
    214         var msg_folder = current_folder; 
    215         if(messageInfo.boxname != '' && messageInfo.boxname != 'undefined' && messageInfo.boxname != null){ 
    216                 msg_folder = messageInfo.boxname; 
    217         } 
    218          
    219          if(current_folder == msg_folder || !current_folder){ 
    220                  $('#td_message_labels_' + msg_number +', tr[role="'+msg_number+'_'+msg_folder+'"] #td_message_labels_search_' + msg_number) 
    221                  .html('<img src="../prototype/modules/mail/img/tag.png">'); 
    222         }else{ 
    223                 $('tr[role="'+msg_number+'_'+msg_folder+'"] #td_message_labels_search_' + msg_number) 
    224                 .html('<img src="../prototype/modules/mail/img/tag.png">'); 
    225         } 
    226          
    227         var menuItems = {}; 
    228         if (messageInfo.labels) { 
    229                 if($.isArray(messageInfo.labels)){ 
    230                         var labels = messageInfo.labels; 
    231                         messageInfo.labels = {}; 
    232                         for(var i in labels) 
    233                                 messageInfo.labels[labels[i].id] = {backgroundColor: labels[i]['backgroundColor'], 
    234                                         borderColor: labels[i]['borderColor'], 
    235                                         fontColor: labels[i]['fontColor'], id: labels[i]['id'], name: labels[i]['name'],  
    236                                         uid: labels[i]['uid'] } 
    237                 }        
    238                 menuItems = messageInfo.labels; 
    239         } else { 
    240                 var labeleds = DataLayer.get('labeled', { 
    241                         criteria: {deepness: '2'}, 
    242                         filter: [ 
    243                                 'AND', 
    244                                 ['=', 'folderName', msg_folder],  
    245                                 ['=', 'messageNumber', msg_number] 
    246                         ] 
    247                          
    248                 }); 
    249                 if (labeleds) { 
    250                         for (var i=0; i < labeleds.length; i++) 
    251                                 menuItems[labeleds[i].label.id] = labeleds[i].label; 
    252                 } else { 
    253                         $('#td_message_labels_' + msg_number +', tr[role="'+msg_number+'_'+msg_folder+'"] #td_message_labels_search_' + msg_number) 
    254                         .html(''); 
    255                         //$.contextMenu( 'destroy', '#td_message_labels_' + msg_number +', #td_message_labels_search_' + msg_number+':first'); 
    256                         $.contextMenu( 'destroy', '#td_message_labels_' + msg_number +', tr[role="'+msg_number+'_'+msg_folder+'"] #td_message_labels_search_' + msg_number); 
    257                         return false; 
    258                 } 
    259         } 
    260         var menuItensLabel = {}; 
    261         for(index in menuItems){ 
    262                 menuItensLabel[index] = {type: "label", customName: menuItems[index].name, id: msg_folder+"/"+msg_number+"#"+index};             
    263         } 
    264         $.contextMenu.types.label = function(item, opt, root) { 
    265         $('<span>'+item.customName+'</span><span class="removeLabeled" title="'+get_lang("Remove Label")+'">x</span>') 
    266             .appendTo(this); 
    267                 $(this).find('span.removeLabeled').click(function(){ 
    268                         //TODO Mudar quando API abstrair atualizações no cache 
    269                         DataLayer.remove('labeled', false); 
    270                         DataLayer.get('labeled'); 
    271                         DataLayer.remove('labeled', item.id); 
    272                         DataLayer.commit(false, false, function(){ 
    273                                 updateLabelsColumn({msg_number:msg_number, boxname:msg_folder, labels:false}); 
    274                         }); 
    275                 }); 
    276         }; 
    277         if(current_folder == msg_folder || !current_folder){ 
    278                 $.contextMenu( 'destroy', '#td_message_labels_' + msg_number +', tr[role="'+msg_number+'_'+msg_folder+'"] #td_message_labels_search_' + msg_number); 
    279                 $.contextMenu({ 
    280                         selector: '#td_message_labels_' + msg_number +', tr[role="'+msg_number+'_'+msg_folder+'"] #td_message_labels_search_' + msg_number, 
    281                         trigger: 'hover', 
    282                         delay:100, 
    283                         autoHide:true, 
    284                         callback: function(key, options) { 
    285                                 //TODO - default actions 
    286                         }, 
    287                         items: menuItensLabel 
    288                 }); 
    289         }else{ 
    290                 $.contextMenu( 'destroy', 'tr[role="'+msg_number+'_'+msg_folder+'"] #td_message_labels_search_' + msg_number); 
    291  
    292                 $.contextMenu({ 
    293                         selector: 'tr[role="'+msg_number+'_'+msg_folder+'"] #td_message_labels_search_' + msg_number, 
    294                         trigger: 'hover', 
    295                         delay:100, 
    296                         autoHide:true, 
    297                         callback: function(key, options) { 
    298                                 //TODO - default actions 
    299                         }, 
    300                         items: menuItensLabel  
    301                 });      
    302         } 
    303 } 
    304  
    305 function loadExtraLDAPBox(data, element){ 
    306  
    307     if(!!data[0]){ 
    308         var decoded = {}; 
    309  
    310         $.each(data, function(i, e){ 
    311             decoded[e.name] = e.value; 
    312         }); 
    313  
    314         data = decoded; 
    315     } 
    316  
    317         menuItensLabel = {}; 
    318         menuItensLabel["Name"] = {name: "<b>"+data.name+"</b>", disabled: true}; 
    319         menuItensLabel["Email"] = {name: data.email, disabled: true}; 
    320         if(!!data.telephone){ 
    321                 menuItensLabel["TelefoneLabel"] = {name: "<b>"+get_lang("Telephone")+"</b>", disabled: true}; 
    322                 menuItensLabel["TelefoneValue"] = {name: data.telephone, disabled: true}; 
    323         } 
    324         if(data.vacationActive){ 
    325                 if(data.vacationActive == "TRUE"){ 
    326                         menuItensLabel["outOffice"] = {name: "<b>"+get_lang("Out of office")+"</b>", disabled: true}; 
    327                         menuItensLabel["outOfficeValue"] = {name: data.vacationInfo.substring(0, 20), disabled: true}; 
    328                 } 
    329         } 
    330         $.contextMenu({ 
    331                 selector: "#content_id_"+currentTab+" "+element+" .box-info", 
    332                 trigger: 'hover', 
    333                 delay:100, 
    334                 autoHide:true, 
    335                 items: menuItensLabel 
    336         });      
    337 } 
    338  
    339 function loadGroupBox(data, element){ 
    340         menuItensLabel = {}; 
    341         menuItensLabel["ContactGroupLabelAll"] = {name:"<b>"+get_lang("Group contacts")+"</b>", disabled: true}; 
    342         menuItensLabel["sep1"] = "---------"; 
    343         if(data.itens){ 
    344                 var aux = 0; 
    345                 var ctcName = ""; 
    346                 for(var item in data.itens){ 
    347                         if(parseInt(item) <= 4){ 
    348                                 ctcName = data.itens[item].data[0].value; 
    349                                 ctcName = ctcName.length > 2 ? ctcName : data.itens[item].data[2].value.substr(0,data.itens[item].data[2].value.indexOf("@")); 
    350                                 menuItensLabel["ContactGroupLabel"+item] = {name: "<b>"+ctcName+"</b>", disabled: true}; 
    351                                 menuItensLabel["ContactGroupValue"+item] = {name: data.itens[item].data[2].value, disabled: true}; 
    352                         }else{ 
    353                                 aux++; 
    354                                 if(aux == 1) 
    355                                         menuItensLabel["MoreContactGroupValue"] = {name : get_lang("And more %1 contact", aux), disabled: true }; 
    356                                 else 
    357                                         menuItensLabel["MoreContactGroupValue"] = {name : get_lang("And more %1 contact", aux)+"s", disabled: true }; 
    358                         } 
    359                 } 
    360         } 
    361         $.contextMenu({ 
    362                 selector: "#content_id_"+currentTab+" "+element+" .box-info", 
    363                 trigger: 'hover', 
    364                 delay:100, 
    365                 autoHide:true, 
    366                 items: menuItensLabel 
    367         });      
    368 } 
    369  
    370  
    371  
    372  
    373  
     1    function labeledMessages(isLabel){ 
     2        if(get_current_folder().split("_")[0] == "local"){ 
     3            alert("Pastas locais não fornece suporte para adição de marcadores.") 
     4            return true; 
     5        } 
     6                        if (isLabel) { 
     7                                var label = { 
     8                                        id: isLabel 
     9                                }        
     10                                var lableleds = new Array(); 
     11                                var msg_folder = current_folder; 
     12                                var messages = new Array(); 
     13                                if(currentTab == 0){ 
     14                                        var id = get_selected_messages().split(','); 
     15                                        for (i = 0; i < id.length; i++){ 
     16                                                messages.push({ 
     17                                                        msg_number: id[i], 
     18                                                        msg_folder: msg_folder 
     19                                                }); 
     20                                        } 
     21                                }else{ 
     22                                        // var id = get_selected_messages_search().split(','); 
     23                                        // var id_border = currentTab.replace(/[a-zA-Z_]+/, ""); 
     24                                        // for (i = 0; i < id.length; i++){ 
     25                                                // var tr = Element(id[i]+'_s'+id_border); 
     26                                                // msg_folder = tr.getAttribute('name');  
     27                                                // messages.push({ 
     28                                                        // "msg_number": id[i], 
     29                                                        // "msg_folder": msg_folder, 
     30                                                // }); 
     31                                        // }     
     32                                         
     33                                        var roles = get_selected_messages_search_role().split(','); 
     34                                        for (i = 0; i < roles.length; i++){ 
     35                                                var tr = $('[role="'+roles[i]+'"]'); 
     36                                                msg_folder = $(tr).attr('name');  
     37                                                var id = $(tr).attr('id');  
     38                                                messages.push({ 
     39                                                        "msg_number": id.replace(/_[a-zA-Z0-9]+/,""), 
     40                                                        "msg_folder": msg_folder 
     41                                                }); 
     42                                        } 
     43                                } 
     44 
     45                                for (var i=0; i < messages.length; i++) { 
     46                                        var hasLabel = DataLayer.get('labeled', { 
     47                                                filter: [ 
     48                                                        'AND', 
     49                                                        ['=', 'labelId', label.id],  
     50                                                        ['=', 'folderName', messages[i].msg_folder],  
     51                                                        ['=', 'messageNumber', messages[i].msg_number] 
     52                                        ]}); 
     53                                        if (!hasLabel || hasLabel == "") { 
     54                                                lableleds.push( 
     55                                                        DataLayer.put('labeled', { 
     56                                                                labelId:label.id,  
     57                                                                folderName:messages[i].msg_folder,  
     58                                                                messageNumber:messages[i].msg_number 
     59                                                        }) 
     60                                                ); 
     61                                                 
     62                                        } 
     63                                } 
     64                                DataLayer.commit(false, false, function(data){ 
     65                                        for (var i=0; i < messages.length; i++) { 
     66                                                updateLabelsColumn({msg_number:messages[i].msg_number, boxname:messages[i].msg_folder, labels:false}); 
     67                                        }                
     68                                }); 
     69                                 
     70 
     71                        } 
     72    } 
     73 
     74    function openListUsers(border_id) { 
     75        connector.loadScript("QuickCatalogSearch"); 
     76        if (typeof(QuickCatalogSearch) == 'undefined'){ 
     77                                        setTimeout('openListUsers('+border_id+')',500); 
     78                                        return false; 
     79                                } 
     80        QuickCatalogSearch.showCatalogList(border_id); 
     81    } 
     82 
     83 
     84    /** 
     85     * Cria a lista de marcadores para o submenu "Marcadores" 
     86     */ 
     87    function getLabels(){ 
     88        var labels = DataLayer.get('label',{criteria:{order: 'name'}}); 
     89        var menuLabelItems = {}; 
     90                menuLabelItems["new"] = { 
     91                        "name" : get_lang('New Label'), 
     92                        callback:function() {configureLabels({applyToSelectedMessages:true});} 
     93                }; 
     94        for(var i=0; i<labels.length; i++) { 
     95                menuLabelItems["label"+labels[i].id] = { 
     96                        "name" : labels[i].name 
     97                } 
     98        } 
     99        return menuLabelItems; 
     100    } 
     101 
     102    /** 
     103     *  Carrega o menu de opção de uma mensagem 
     104     */ 
     105    function loadMenu(){ 
     106        var archive = ""; 
     107        if(use_local_messages != 0){ 
     108            archive = {"name": get_lang("Archive"), "icon": "archive", callback: function(key, opt){ proxy_mensagens.archive_message('inbox', 'get_selected_messages'); }} 
     109        }else{ 
     110            archive = ""; 
     111        } 
     112 
     113        var labelItems = getLabels(); 
     114        $.contextMenu({ 
     115                selector: ".table_box tbody tr", 
     116            build: function($trigger, e) { 
     117 
     118                var itensNotLocal = { 
     119                    "label": { "name": get_lang("Labels"), "items": labelItems}, 
     120                    "follouwpflag":{"name": get_lang("Follow up"), callback: function(key, opt){ configureFollowupflag(); } }, 
     121                    "sep2": "---------" 
     122                } 
     123 
     124                var items= { 
     125                    "flagSeen":      {"name": get_lang("Mark as") + " " + get_lang('seen'), "icon": "seen", callback: function(key, opt){ proxy_mensagens.proxy_set_messages_flag('seen','get_selected_messages'); }}, 
     126                    "flagUnseen":    {"name": get_lang("Mark as") + " " + get_lang('unseen'), "icon": "unseen", callback: function(key, opt){ proxy_mensagens.proxy_set_messages_flag('unseen','get_selected_messages'); }}, 
     127                    "flagFlagged":   {"name": get_lang("Mark as") + " " + get_lang('important'), "icon": "important", callback: function(key, opt){ proxy_mensagens.proxy_set_messages_flag('flagged','get_selected_messages'); }}, 
     128                    "flagUnflagged": {"name": get_lang("Mark as") + " " + get_lang('normal'), callback: function(key, opt){ proxy_mensagens.proxy_set_messages_flag('unflagged','get_selected_messages'); }}, 
     129                    "sep1": "---------" 
     130                } 
     131 
     132                var lastItens = { 
     133                    "move": {"name": get_lang("Move to")+"...", "icon": "move", callback: function(key, opt){ wfolders.makeWindow('', 'move_to'); }}, 
     134                    "remove": {"name": get_lang("Delete"),      "icon": "delete", callback: function(key, opt){ proxy_mensagens.delete_msgs('null','selected','null'); }}, 
     135                    "export": {"name": get_lang("Export"),      "icon": "export", callback: function(key, opt){ proxy_mensagens.export_all_messages(); }}, 
     136                    "archive": archive 
     137                } 
     138 
     139                var realItens = {}; 
     140 
     141                if(currentTab == 0){ 
     142                    if(get_current_folder().split("local").length > 1){ 
     143                        realItens = $.extend(items, lastItens); 
     144                    }else{ 
     145                        realItens = $.extend(items, itensNotLocal); 
     146                        realItens = $.extend(realItens, lastItens); 
     147                    } 
     148                }else if(currentTab.split("local").length > 1){ 
     149                    realItens = $.extend(items, lastItens); 
     150                }else{ 
     151                    realItens = $.extend(items, itensNotLocal); 
     152                    realItens = $.extend(realItens, lastItens); 
     153                } 
     154 
     155                        return {  
     156                    callback: function(key, options) { 
     157                                //TODO - default actions 
     158                                 
     159                                /**  
     160                                 * Apply labels to selected messages 
     161                                 */ 
     162                                var isLabel = key.match(/label(.*)/); 
     163                                if (isLabel && isLabel.length > 1) { 
     164                                        labeledMessages(isLabel[1]); 
     165                                } 
     166                                selectAllFolderMsgs(false); 
     167                        }, 
     168                        items: realItens 
     169                } 
     170            } 
     171        }); 
     172    } 
     173    /*FIM*/ 
     174    loadMenu(); 
     175 
     176    if (!expresso_offline) { 
     177        var menuToolsItems = { 
     178                "i01": {"name": get_lang("Preferences"), "icon": "preferences-mail", callback: preferences_mail }, 
     179                "i02": {"name": get_lang("Search"), "icon": "search-mail", callback: function(key, opt){ search_emails(""); }}, 
     180                "103": {"name": get_lang("Edit filters"), "icon": "filter", callback: filterbox2 }, 
     181                "i05": {"name": get_lang("Share mailbox"), "icon": "share-mailbox", callback: sharebox }, 
     182                "i06": {"name": get_lang("Labels"), "icon": "tag", callback: configureLabels },  
     183                "i08": {"name": get_lang("Empty trash"), "icon": "empty-trash", callback: function(key, opt){ empty_trash_imap(); }} 
     184        }; 
     185                 
     186        if(preferences.use_local_messages==1) { 
     187                if(expresso_local_messages.is_offline_installed()) { 
     188                        menuToolsItems["i09"] = {"name": get_lang("Send from queue"), "icon": "queue", callback: force_check_queue }; 
     189                } 
     190        } 
     191    } else { 
     192        var menuToolsItems = { 
     193                "i01": {"name": get_lang("Search"), "icon": "search-mail", callback: function(key, opt){ search_emails(""); }} 
     194        } 
     195    } 
     196    $.contextMenu({ 
     197        selector: "#link_tools", 
     198        trigger: 'hover', 
     199        className: 'context-menu-tools', 
     200        position: function($menu, x, y){ 
     201                $menu.$menu.position({ my: "center top", at: "center bottom", of: this, offset:"0 0"}); 
     202        }, 
     203        determinePosition: function($menu, x, y){ 
     204                $menu.css('display', 'block').position({ my: "center top", at: "center bottom", of: this}).css('display', 'none'); 
     205        }, 
     206        delay:500, 
     207        autoHide:true, 
     208        events: { 
     209                show: function(opt) { 
     210                        var $trigger = $(opt.selector).css({'background-color': '#ffffff', 'border': '1px solid #CCCCCC'}); 
     211                        $('.context-menu-tools.context-menu-list.context-menu-root').css({'width': $trigger.css('width') }); 
     212                        $('.context-menu-tools.context-menu-list').css({'background': '#ffffff'}) 
     213                        .find(".context-menu-item").css({'background-color': '#ffffff'}).hover( 
     214                                function(){ 
     215                                        $(this).css({'background-color': '#CCCCCC'}); 
     216                                },  
     217                                function(){ 
     218                                        $(this).css({'background-color': '#ffffff'}); 
     219                                } 
     220                        ); 
     221                        return true; 
     222                }, 
     223                hide: function(opt) { 
     224                        $(opt.selector).css({'background-color': '', 'border': 'none'}); 
     225                        return true; 
     226                } 
     227        }, 
     228        callback: function(key, options) { 
     229                //TODO - default actions 
     230 
     231        }, 
     232        items: menuToolsItems 
     233    }); 
     234    var reComplexEmail = /<([^<]*)>[\s]*$/; 
     235    $.contextMenu({ 
     236        selector: ".box", 
     237        autoHide:true, 
     238        items: { 
     239                "add" : {name: get_lang("Quick Add"), icon : "quick-add",callback: function(key, opt){ var fname = $(opt.$trigger).find("input").val().split('"')[1];ccQuickAddOne.showList(','+fname+', ,'+$.trim($(opt.$trigger).find("input").val()).match(reComplexEmail)[1]); }}, 
     240                "remove" : {name:get_lang("Remove recipient"), icon:"delete-box",callback: function(key, opt){ $(opt.$trigger).remove(); }}, 
     241                "sep1": "---------", 
     242                "quick_search" : {name:get_lang("Quick search of messages"), icon: "quick-search-contact",callback: function(key, opt){ search_emails($.trim($(opt.$trigger).find("input").val()).match(reComplexEmail)[1]); }}, 
     243                "full_search" : {name:get_lang("Search messages of ..."), icon: "quick-search-contact",callback: function(key, opt){ search_emails("", $.trim($(opt.$trigger).find("input").val()).match(reComplexEmail)[1]);}}          
     244        } 
     245    }); 
     246 
     247    function updateLabelsColumn(messageInfo) { 
     248        var msg_number = messageInfo.msg_number; 
     249        //uid é o numero da mensagem quando os dados são carregados na busca rapida. 
     250        if(messageInfo.uid != '' && messageInfo.uid != 'undefined' && messageInfo.uid != null){ 
     251                msg_number = messageInfo.uid; 
     252        } 
     253        var msg_folder = current_folder; 
     254        if(messageInfo.boxname != '' && messageInfo.boxname != 'undefined' && messageInfo.boxname != null){ 
     255                msg_folder = messageInfo.boxname; 
     256        } 
     257         
     258         if(current_folder == msg_folder || !current_folder){ 
     259                 $('#td_message_labels_' + msg_number +', tr[role="'+msg_number+'_'+msg_folder+'"] #td_message_labels_search_' + msg_number) 
     260                 .html('<img src="../prototype/modules/mail/img/tag.png">'); 
     261        }else{ 
     262                $('tr[role="'+msg_number+'_'+msg_folder+'"] #td_message_labels_search_' + msg_number) 
     263                .html('<img src="../prototype/modules/mail/img/tag.png">'); 
     264        } 
     265         
     266        var menuItems = {}; 
     267        if (messageInfo.labels) { 
     268                if($.isArray(messageInfo.labels)){ 
     269                        var labels = messageInfo.labels; 
     270                        messageInfo.labels = {}; 
     271                        for(var i in labels) 
     272                                messageInfo.labels[labels[i].id] = {backgroundColor: labels[i]['backgroundColor'], 
     273                                        borderColor: labels[i]['borderColor'], 
     274                                        fontColor: labels[i]['fontColor'], id: labels[i]['id'], name: labels[i]['name'],  
     275                                        uid: labels[i]['uid'] } 
     276                }        
     277                menuItems = messageInfo.labels; 
     278        } else { 
     279                var labeleds = DataLayer.get('labeled', { 
     280                        criteria: {deepness: '2'}, 
     281                        filter: [ 
     282                                'AND', 
     283                                ['=', 'folderName', msg_folder],  
     284                                ['=', 'messageNumber', msg_number] 
     285                        ] 
     286                         
     287                }); 
     288                if (labeleds) { 
     289                        for (var i=0; i < labeleds.length; i++) 
     290                                menuItems[labeleds[i].label.id] = labeleds[i].label; 
     291                } else { 
     292                        $('#td_message_labels_' + msg_number +', tr[role="'+msg_number+'_'+msg_folder+'"] #td_message_labels_search_' + msg_number) 
     293                        .html(''); 
     294                        //$.contextMenu( 'destroy', '#td_message_labels_' + msg_number +', #td_message_labels_search_' + msg_number+':first'); 
     295                        $.contextMenu( 'destroy', '#td_message_labels_' + msg_number +', tr[role="'+msg_number+'_'+msg_folder+'"] #td_message_labels_search_' + msg_number); 
     296                        return false; 
     297                } 
     298        } 
     299        var menuItensLabel = {}; 
     300        for(index in menuItems){ 
     301                menuItensLabel[index] = {type: "label", customName: menuItems[index].name, id: msg_folder+"/"+msg_number+"#"+index};             
     302        } 
     303        $.contextMenu.types.label = function(item, opt, root) { 
     304            $('<span>'+item.customName+'</span><span class="removeLabeled" title="'+get_lang("Remove Label")+'">x</span>') 
     305                .appendTo(this); 
     306                $(this).find('span.removeLabeled').click(function(){ 
     307                        //TODO Mudar quando API abstrair atualizações no cache 
     308                        DataLayer.remove('labeled', false); 
     309                        DataLayer.get('labeled'); 
     310                        DataLayer.remove('labeled', item.id); 
     311                        DataLayer.commit(false, false, function(){ 
     312                                updateLabelsColumn({msg_number:msg_number, boxname:msg_folder, labels:false}); 
     313                        }); 
     314                }); 
     315        }; 
     316        if(current_folder == msg_folder || !current_folder){ 
     317                $.contextMenu( 'destroy', '#td_message_labels_' + msg_number +', tr[role="'+msg_number+'_'+msg_folder+'"] #td_message_labels_search_' + msg_number); 
     318                $.contextMenu({ 
     319                        selector: '#td_message_labels_' + msg_number +', tr[role="'+msg_number+'_'+msg_folder+'"] #td_message_labels_search_' + msg_number, 
     320                        trigger: 'hover', 
     321                        delay:100, 
     322                        autoHide:true, 
     323                        callback: function(key, options) { 
     324                                //TODO - default actions 
     325                        }, 
     326                        items: menuItensLabel 
     327                }); 
     328        }else{ 
     329                $.contextMenu( 'destroy', 'tr[role="'+msg_number+'_'+msg_folder+'"] #td_message_labels_search_' + msg_number); 
     330 
     331                $.contextMenu({ 
     332                        selector: 'tr[role="'+msg_number+'_'+msg_folder+'"] #td_message_labels_search_' + msg_number, 
     333                        trigger: 'hover', 
     334                        delay:100, 
     335                        autoHide:true, 
     336                        callback: function(key, options) { 
     337                                //TODO - default actions 
     338                        }, 
     339                        items: menuItensLabel  
     340                });      
     341        } 
     342    } 
     343 
     344    function loadExtraLDAPBox(data, element){ 
     345 
     346        if(!!data[0]){ 
     347            var decoded = {}; 
     348 
     349            $.each(data, function(i, e){ 
     350                decoded[e.name] = e.value; 
     351            }); 
     352 
     353            data = decoded; 
     354        } 
     355 
     356        menuItensLabel = {}; 
     357        menuItensLabel["Name"] = {name: "<b>"+data.name+"</b>", disabled: true}; 
     358        menuItensLabel["Email"] = {name: data.email, disabled: true}; 
     359        if(!!data.telephone){ 
     360            menuItensLabel["TelefoneLabel"] = {name: "<b>"+get_lang("Telephone")+"</b>", disabled: true}; 
     361            menuItensLabel["TelefoneValue"] = {name: data.telephone, disabled: true}; 
     362        } 
     363        if(data.vacationActive){ 
     364            if(data.vacationActive == "TRUE"){ 
     365                menuItensLabel["outOffice"] = {name: "<b>"+get_lang("Out of office")+"</b>", disabled: true}; 
     366                menuItensLabel["outOfficeValue"] = {name: data.vacationInfo.substring(0, 20), disabled: true}; 
     367            } 
     368        } 
     369        $.contextMenu({ 
     370            selector: "#content_id_"+currentTab+" "+element+" .box-info", 
     371            trigger: 'hover', 
     372            delay:100, 
     373            autoHide:true, 
     374            items: menuItensLabel 
     375        });  
     376    } 
     377 
     378    function loadGroupBox(data, element){ 
     379        menuItensLabel = {}; 
     380        menuItensLabel["ContactGroupLabelAll"] = {name:"<b>"+get_lang("Group contacts")+"</b>", disabled: true}; 
     381        menuItensLabel["sep1"] = "---------"; 
     382        if(data.itens){ 
     383                var aux = 0; 
     384                var ctcName = ""; 
     385                for(var item in data.itens){ 
     386                        if(parseInt(item) <= 4){ 
     387                                ctcName = data.itens[item].data[0].value; 
     388                                ctcName = ctcName.length > 2 ? ctcName : data.itens[item].data[2].value.substr(0,data.itens[item].data[2].value.indexOf("@")); 
     389                                menuItensLabel["ContactGroupLabel"+item] = {name: "<b>"+ctcName+"</b>", disabled: true}; 
     390                                menuItensLabel["ContactGroupValue"+item] = {name: data.itens[item].data[2].value, disabled: true}; 
     391                        }else{ 
     392                                aux++; 
     393                                if(aux == 1) 
     394                                        menuItensLabel["MoreContactGroupValue"] = {name : get_lang("And more %1 contact", aux), disabled: true }; 
     395                                else 
     396                                        menuItensLabel["MoreContactGroupValue"] = {name : get_lang("And more %1 contact", aux)+"s", disabled: true }; 
     397                        } 
     398                } 
     399        } 
     400        $.contextMenu({ 
     401                selector: "#content_id_"+currentTab+" "+element+" .box-info", 
     402                trigger: 'hover', 
     403                delay:100, 
     404                autoHide:true, 
     405                items: menuItensLabel 
     406        });      
     407    } 
     408 
     409 
     410 
     411 
     412 
  • trunk/expressoMail1_2/js/draw_api.js

    r7371 r7414  
    108108                } 
    109109 
     110                 
     111                //MAILARCHIVER-01 
     112                //Create local folders main structure tree 
     113                if(preferences.use_local_messages=="1"){ 
     114                    var disabled_local_span = document.getElementById('llocal_disabledtree_folders'); 
     115 
     116                    //Services are disabled: because Mail Archiver is not running/installed or have just crashed. Link activation is created here 
     117                    if(!expresso_mail_archive.enabled){ 
     118                        //window.alert('tem o nodo disabled? ' + tree_folders.getNodeById("local_disabled") + '[' + typeof(tree_folders.getNodeById('local_disabled')) + ']'); 
     119                        if(typeof(tree_folders.getNodeById("local_disabled")) == 'undefined'){ 
     120                          var n_LocalDisabled = new dNode({id: "local_disabled", caption: get_lang('Offline'), onClick: "services_retry()", plusSign:false}); 
     121                          tree_folders.add(n_LocalDisabled, 'local_root'); 
     122                        } 
     123 
     124                        tree_folders.getNodeById("local_disabled").alter({caption:get_lang('Offline'), onClick: "retry_local_folders()"}); 
     125                        tree_folders.getNodeById("local_disabled")._refresh(); 
     126                         
     127                        if((disabled_local_span) && (!document.getElementById('services_retry'))){ 
     128                            disabled_local_span.style.backgroundImage="url(../phpgwapi/templates/"+template+"/images/foldertree_services.png)"; 
     129 
     130                            var service_retry = document.createElement("SPAN"); 
     131                            service_retry.id = 'services_retry'; 
     132                            service_retry.className = 'clean_trash'; 
     133                            service_retry.style.cursor = 'pointer'; 
     134                            service_retry.onclick = function () {services_retry();}; 
     135                            service_retry.innerHTML = "["+get_lang("Retry")+"]"; 
     136                            service_retry.title="Reconectar ao Mail Archiver"; 
     137                            service_retry.onmouseover = function() {service_retry.style.color="red";}; 
     138                            service_retry.onmouseout= function() {service_retry.style.color="#666666";}; //#114FA4 
     139                            disabled_local_span.parentNode.appendChild(service_retry); 
     140                        } 
     141                        else{ 
     142                            //Creates the tree node and MA console linkage 
     143                            if((!disabled_local_span) && (!document.getElementById('services_retry'))){ 
     144                                var n_LocalDisabled = new dNode({id: "local_disabled", caption: get_lang('Offline'), onClick: "services_retry()", plusSign:false}); 
     145                                tree_folders.add(n_LocalDisabled, 'local_root'); 
     146                             
     147                                var disabled_local_span = document.getElementById('llocal_disabledtree_folders'); 
     148                                disabled_local_span.style.backgroundImage="url(../phpgwapi/templates/"+template+"/images/foldertree_services.png)"; 
     149                                var service_retry = document.createElement("SPAN"); 
     150                                service_retry.id = 'services_retry'; 
     151                                service_retry.className = 'clean_trash'; 
     152                                service_retry.style.cursor = 'pointer'; 
     153                                service_retry.onclick = function () {services_retry();}; 
     154                                service_retry.innerHTML = "["+get_lang("Retry")+"]"; 
     155                                service_retry.title= get_lang("Reconect to MailArchiver services"); 
     156                                service_retry.onmouseover = function() {service_retry.style.color="red";}; 
     157                                service_retry.onmouseout= function() {service_retry.style.color="#666666";}; //#114FA4 
     158                                disabled_local_span.parentNode.appendChild(service_retry); 
     159                             
     160                                var div_ma_host = document.createElement('div'); 
     161                                div_ma_host.id = 'div_login_ma_host'; 
     162                                div_ma_host.style.position = 'absolute'; 
     163                                div_ma_host.style.padding = '0px'; 
     164                                div_ma_host.style.margin = '0px'; 
     165                                div_ma_host.style.top = '25px'; 
     166                                div_ma_host.style.left = '0px'; 
     167                                div_ma_host.style.width = '145px'; 
     168                                div_ma_host.style.height = '80px'; 
     169                                div_ma_host.style.border = '1px solid #CCCCCC'; 
     170                                div_ma_host.style.backgroundColor = '#F0F0F0'; 
     171                                div_ma_host.style.fontWeight = 'normal'; 
     172                                disabled_local_span.appendChild(div_ma_host); 
     173                                div_ma_host.innerHTML = '<p><b>'+get_lang('In trouble?')+'</b></p><p>&rarr; ' + get_lang('Try to access') + '<br/><a href="' + mail_archive_protocol + "://" + mail_archive_host + ":" + mail_archive_port + '/admin" target="_blank" title="MailArchiver Admin">'+get_lang('MailArchiver admin console')+'.</p>';                             
     174                            } 
     175                            //Only creates the MA login linkage 
     176                            else{ 
     177                                var div_ma_host = document.createElement('div'); 
     178                                div_ma_host.id = 'div_login_ma_host'; 
     179                                div_ma_host.style.position = 'absolute'; 
     180                                div_ma_host.style.padding = '0px'; 
     181                                div_ma_host.style.margin = '0px'; 
     182                                div_ma_host.style.top = '25px'; 
     183                                div_ma_host.style.left = '0px'; 
     184                                div_ma_host.style.width = '145px'; 
     185                                div_ma_host.style.height = '80px'; 
     186                                div_ma_host.style.border = '1px solid #CCCCCC'; 
     187                                div_ma_host.style.backgroundColor = '#F0F0F0'; 
     188                                div_ma_host.style.fontWeight = 'normal'; 
     189                                disabled_local_span.appendChild(div_ma_host); 
     190                                div_ma_host.innerHTML = '<p><b>'+get_lang('In trouble?')+'</b></p><p>&rarr; ' + get_lang('Try to access') + '<br/><a href="' + mail_archive_protocol + "://" + mail_archive_host + ":" + mail_archive_port + '/admin" target="_blank" title="MailArchiver Admin">'+get_lang('MailArchiver admin console')+'.</p>';                                                         
     191                            } 
     192                        } 
     193                    } 
     194                    //Services enabled: list folders service must be invoqued 
     195                    else{ 
     196                        var services_retry_span = document.getElementById('services_retry'); 
     197 
     198                        if(services_retry_span){ 
     199                            //window.alert('Tem services_retry -> vai remover o disabled_local_span'); 
     200                            var node_disabled_to_remove = document.getElementById('nlocal_disabledtree_folders'); 
     201                            //document.getElementById('chlocal_roottree_folders').removeChild('nlocal_disabledtree_folders'); 
     202                            //services_retry_span.parentNode.removeChild(services_retry_span); 
     203                            node_disabled_to_remove.parentNode.removeChild(node_disabled_to_remove); 
     204                        } 
     205                        //else 
     206                          //  window.alert('Sem services retry'); 
     207 
     208                        //tree_folders.getNodeById("local_disabled").alter({caption:get_lang('List_Folders')}); 
     209                                                 
     210                       //expresso_mail_archive.getFoldersList('FERNANDAO22', ""); 
     211                       var drawinginfo = {treeObject: tree_folders, treeName: 'tree_folders'}; 
     212                       expresso_mail_archive.drawdata = drawinginfo; 
     213                       //expresso_mail_archive.getFoldersList("");                         
     214                         
     215                        //tree_folders.getNodeById("local_root")._refresh(); 
     216 
     217                        if(disabled_local_span) 
     218                            disabled_local_span.style.backgroundImage="url(../phpgwapi/templates/"+template+"/images/foldertree_folder.png)";                        
     219                    }       
     220                } 
     221 
    110222                return; 
    111223        } 
     
    148260                } 
    149261 
    150  
     262                 
     263                //MAILARCHIVER-02 
     264                //Create local folders main structure tree 
     265                if(preferences.use_local_messages=="1"){    
     266                    //Add the local_root node 
     267                    var root_local = new dNode({id: "local_root", caption: get_lang('local folders'), plusSign: true}); 
     268                    tree_folders.add(root_local, "root");    
     269                     
     270                    //Services are disabled: because Mail Archiver is not running/installed or have just crashed. Link activation is created here 
     271                    if(!expresso_mail_archive.enabled){ 
     272                        var n_LocalDisabled = new dNode({id: "local_disabled", caption: get_lang('Offline'), onClick: "services_retry()", plusSign:false}); 
     273                        tree_folders.add(n_LocalDisabled, 'local_root'); 
     274                         
     275                    } 
     276                     
     277                    //Services enabled: list folders service must be invoqued 
     278                    else{ 
     279                        var drawinginfo = {treeObject: tree_folders, treeName: 'tree_folders'}; 
     280                        expresso_mail_archive.drawdata = drawinginfo; 
     281                        //expresso_mail_archive.getFoldersList(""); 
     282                    } 
     283                     
     284                    //Opens the local folders tree view 
     285                    //tree_folders.getNodeById("local_root").open(); 
     286                     
     287                } 
    151288 
    152289                var handlerChannel = function(data){ 
     
    183320                 * Pastas locais 
    184321                 */ 
    185                 if (preferences.use_local_messages==1 || expresso_offline) { 
    186                             //verifica se gears esta installado ou o offline 
    187                         if( (!window.google || !google.gears) && 
    188                              !expresso_local_messages.installGears() ){ 
    189                                 preferences.use_local_messages = 0; 
    190                         } 
    191                         else if( !expresso_local_messages.is_offline_installed() ) 
    192                                 preferences.use_local_messages = 0; 
    193                         else{ 
    194                                 if (expresso_offline) 
    195                                         tree_folders = new dFTree({ 
    196                                                 name: 'tree_folders' 
    197                                         }); 
    198                                 var root_local = new dNode({ 
    199                                         id: "local_root", 
    200                                         caption: get_lang('local folders') 
    201                                 }); 
    202                                 tree_folders.add(root_local, "root"); //coloca root local 
    203                                 var local_folders = expresso_local_messages.list_local_folders(); 
    204                                 for (var i in local_folders) { //Coloca as pastas locais. 
    205                                         var node_root = "local_root"; 
    206                                         var new_caption = local_folders[i][0]; 
    207                                         if (local_folders[i][0].indexOf("/") != "-1") { 
    208                                                 final_pos = local_folders[i][0].lastIndexOf("/"); 
    209                                                 node_root = "local_" + local_folders[i][0].substr(0, final_pos); 
    210                                                 new_caption = local_folders[i][0].substr(final_pos + 1); 
    211                                         } 
    212                                         if (local_folders[i][1] > 0) 
    213                                                 var nodeLocal = new dNode({ 
    214                                                         id: "local_" + local_folders[i][0], 
    215                                                         caption: lang_folder(new_caption) + '<font style=color:red>&nbsp(</font><span id="local_unseen" style=color:red>' + local_folders[i][1] + '</span><font style=color:red>)</font>', 
    216                                                         onClick: "change_folder('local_" + local_folders[i][0] + "','" + new_caption + "')", 
    217                                                         plusSign: local_folders[i][2] 
    218                                                 }); 
    219                                         else 
    220                                                 var nodeLocal = new dNode({ 
    221                                                         id: "local_" + local_folders[i][0], 
    222                                                         caption: lang_folder(new_caption), 
    223                                                         onClick: "change_folder('local_" + local_folders[i][0] + "','" + new_caption + "')", 
    224                                                         plusSign: local_folders[i][2] 
    225                                                 }); 
    226                                                 tree_folders.add(nodeLocal, node_root); 
    227                                         } 
    228                                 } 
    229                         } 
    230322 
    231323                /*tree_folders.draw(Element('content_folders')); 
     
    276368 
    277369 
     370                //MAILARCHIVER-04 
     371                if ((disabled_local_span) && (!expresso_mail_archive.enabled)){ 
     372                    disabled_local_span.style.backgroundImage="url(../phpgwapi/templates/"+template+"/images/foldertree_services.png)"; 
     373                        //div to login at MA Admin console 
     374                        var div_ma_host = document.createElement('div'); 
     375                        div_ma_host.id = 'div_login_ma_host'; 
     376                        div_ma_host.style.position = 'absolute'; 
     377                        div_ma_host.style.padding = '0px'; 
     378                        div_ma_host.style.margin = '0px'; 
     379                        div_ma_host.style.top = '25px'; 
     380                        div_ma_host.style.width = '145px'; 
     381                        div_ma_host.style.height = '80px'; 
     382                        div_ma_host.style.border = '1px solid #CCCCCC'; 
     383                        div_ma_host.style.backgroundColor = '#F0F0F0'; 
     384                        div_ma_host.style.fontWeight = 'normal'; 
     385                        disabled_local_span.appendChild(div_ma_host); 
     386                        div_ma_host.innerHTML = '<p><b>'+get_lang('In trouble?')+'</b></p><p>&rarr; ' + get_lang('Try to access') + '<br/><a href="' + mail_archive_protocol + "://" + mail_archive_host + ":" + mail_archive_port + '/admin" target="_blank" title="MailArchiver Admin">'+get_lang('MailArchiver admin console')+'.</p>'; 
     387                } 
     388 
     389 
    278390                draw_paging(Element('tot_m').innerHTML); 
    279391                if(document.getElementById(mount_url_folder(["nINBOX",special_folders["Trash"]])+"tree_folders")) 
     
    305417                           } 
    306418 
    307                 if(!expresso_offline) 
     419        //MAILARCHIVER-05 
     420        if(document.getElementById("nlocal_disabledtree_folders") && (!expresso_mail_archive.enabled) && (!document.getElementById('services_retry'))) 
     421        { 
     422            var service_retry = document.createElement("SPAN"); 
     423            service_retry.id = 'services_retry'; 
     424            service_retry.className = 'clean_trash'; 
     425            service_retry.style.cursor = 'pointer'; 
     426            service_retry.onclick = function () {services_retry();}; 
     427            service_retry.innerHTML = "["+get_lang("Retry")+"]"; 
     428            service_retry.title="Reconectar ao Mail Archiver"; 
     429            service_retry.onmouseover = function() {service_retry.style.color="red";}; 
     430            service_retry.onmouseout= function() {service_retry.style.color="#666666";}; //#114FA4 
     431            document.getElementById("nlocal_disabledtree_folders").appendChild(service_retry); 
     432        } 
     433 
     434            //MAILARCHIVER-00 
     435                //if(!expresso_offline) 
    308436                        var display_unseen_in_mailbox = tree_folders.getNodeById( 'root' ); 
    309                 else 
    310                         var display_unseen_in_mailbox = tree_folders.getNodeById( 'local_root' ); 
     437                //else 
     438                        //var display_unseen_in_mailbox = tree_folders.getNodeById( 'local_root' ); 
    311439                display_unseen_in_mailbox.alter({caption:get_lang("My Folders")}); 
    312440                display_unseen_in_mailbox._refresh(); 
     
    391519 
    392520function draw_tree_local_folders() { 
    393         /** 
    394          * Pastas locais 
    395          */ 
    396                 if(preferences.use_local_messages==1 || expresso_offline) { 
    397                         var local_folders = expresso_local_messages.list_local_folders(); 
    398                         var has_changes = false; 
    399                         for (var i in local_folders) { //Coloca as pastas locais. 
    400  
    401                                 var new_caption = local_folders[i][0]; 
    402                                 if(local_folders[i][0].indexOf("/")!="-1") { 
    403                                         final_pos = local_folders[i][0].lastIndexOf("/"); 
    404                                         new_caption = local_folders[i][0].substr(final_pos+1); 
    405                                 } 
    406  
    407                                 var folder_unseen = Element('dftree_local_'+local_folders[i][0]+'_unseen'); 
    408  
    409                                 if ((folder_unseen) && (local_folders[i][1] > 0)) 
    410                                 { 
    411                                         folder_unseen.innerHTML = local_folders[i][1]; 
    412                                         has_changes = true; 
    413                                 } 
    414                                 else if (local_folders[i][1] > 0) 
    415                                 { 
    416                                         tree_folders.getNodeById("local_"+local_folders[i][0]).alter({caption:lang_folder(new_caption) + '<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>'}); 
    417                                         tree_folders.getNodeById("local_"+local_folders[i][0])._refresh(); 
    418                                         has_changes = true; 
    419                                 } 
    420                                 else if (local_folders[i][1] <= 0) 
    421                                 { 
    422                                         tree_folders.getNodeById("local_"+local_folders[i][0]).alter({caption:lang_folder(new_caption)}); 
    423                                         tree_folders.getNodeById("local_"+local_folders[i][0])._refresh(); 
    424                                         has_changes = true; 
    425                                 } 
    426  
    427                         if("local_"+local_folders[i][0] == get_current_folder()){ 
    428                                         var old_new_m = isNaN(parseInt(Element('new_m').innerHTML)) ? parseInt(Element('new_m').firstChild.innerHTML) : parseInt(Element('new_m').innerHTML); 
    429                                         if(!isNaN(old_new_m) && old_new_m < local_folders[i][1]){ 
    430                                                 Element('tot_m').innerHTML = parseInt(Element('tot_m').innerHTML) + (parseInt(local_folders[i][1])-old_new_m); 
    431                                         } 
    432                                         Element('new_m').innerHTML = local_folders[i][1] ? '<font color="RED">'+local_folders[i][1]+'</font>' : 0; 
    433                                         draw_paging(Element('tot_m').innerHTML); 
    434                                         has_changes = true; 
    435                         } 
    436                 } 
    437                         if(has_changes) 
    438                                 tree_folders.getNodeById("local_root").open(); 
    439         } 
    440 } 
     521    /** 
     522     * Pastas locais 
     523     */ 
     524        //MAILARCHIVER-04 
     525        if ( preferences.use_local_messages=="1" ) { 
     526            var local_folders_list = expresso_mail_archive.getFoldersList(""); 
     527        } 
     528} 
     529 
     530// function draw_tree_local_folders() { 
     531//      /** 
     532//       * Pastas locais 
     533//       */ 
     534//              if(preferences.use_local_messages==1 || expresso_offline) { 
     535//                      var local_folders = expresso_local_messages.list_local_folders(); 
     536//                      var has_changes = false; 
     537//                      for (var i in local_folders) { //Coloca as pastas locais. 
     538 
     539//                              var new_caption = local_folders[i][0]; 
     540//                              if(local_folders[i][0].indexOf("/")!="-1") { 
     541//                                      final_pos = local_folders[i][0].lastIndexOf("/"); 
     542//                                      new_caption = local_folders[i][0].substr(final_pos+1); 
     543//                              } 
     544 
     545//                              var folder_unseen = Element('dftree_local_'+local_folders[i][0]+'_unseen'); 
     546 
     547//                              if ((folder_unseen) && (local_folders[i][1] > 0)) 
     548//                              { 
     549//                                      folder_unseen.innerHTML = local_folders[i][1]; 
     550//                                      has_changes = true; 
     551//                              } 
     552//                              else if (local_folders[i][1] > 0) 
     553//                              { 
     554//                                      tree_folders.getNodeById("local_"+local_folders[i][0]).alter({caption:lang_folder(new_caption) + '<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>'}); 
     555//                                      tree_folders.getNodeById("local_"+local_folders[i][0])._refresh(); 
     556//                                      has_changes = true; 
     557//                              } 
     558//                              else if (local_folders[i][1] <= 0) 
     559//                              { 
     560//                                      tree_folders.getNodeById("local_"+local_folders[i][0]).alter({caption:lang_folder(new_caption)}); 
     561//                                      tree_folders.getNodeById("local_"+local_folders[i][0])._refresh(); 
     562//                                      has_changes = true; 
     563//                              } 
     564 
     565//                      if("local_"+local_folders[i][0] == get_current_folder()){ 
     566//                                      var old_new_m = isNaN(parseInt(Element('new_m').innerHTML)) ? parseInt(Element('new_m').firstChild.innerHTML) : parseInt(Element('new_m').innerHTML); 
     567//                                      if(!isNaN(old_new_m) && old_new_m < local_folders[i][1]){ 
     568//                                              Element('tot_m').innerHTML = parseInt(Element('tot_m').innerHTML) + (parseInt(local_folders[i][1])-old_new_m); 
     569//                                      } 
     570//                                      Element('new_m').innerHTML = local_folders[i][1] ? '<font color="RED">'+local_folders[i][1]+'</font>' : 0; 
     571//                                      draw_paging(Element('tot_m').innerHTML); 
     572//                                      has_changes = true; 
     573//                      } 
     574//              } 
     575//                      if(has_changes) 
     576//                              tree_folders.getNodeById("local_root").open(); 
     577//      } 
     578// } 
    441579 
    442580 
     
    539677                        return true; 
    540678                } 
    541                 $.ajax({                         
    542                         url: "controller.php?" + $.param( {action: "$this.imap_functions.getMessagesIds",  
    543                                 folder: folder,                          
    544                                 sort_box_type: "SORTARRIVAL",  
    545                                 search_box_type: search_box_type, 
    546                                 sort_box_reverse: "1" 
    547                                 }), 
    548                         success: function(data){ 
    549                                 data = connector.unserialize(data); 
    550                                 if(data){ 
    551                                         var _data = {}; 
    552                                         $.each(data,function(index,value){ 
    553                                                 if (value){ 
    554                                                         _data[index] = value; 
    555                                                 } 
    556                                         }); 
    557                                         populateSelectedMsgs(_data); 
    558                                  
    559                                 } 
    560                         }, 
    561                         beforeSend: function( jqXHR, settings ){ 
    562                                 connector.showProgressBar(); 
    563                         }, 
    564                         complete: function( jqXHR, settings ){ 
    565                                 connector.hideProgressBar(); 
    566                         } 
    567                 }); 
     679                //MAILARCHIVE 
     680        //se for pasta local 
     681        if (/^local_messages/.test(current_folder)) { 
     682            $(".folders-loading").removeClass("folders-loading"); //remove o icone de loading ao clicar nas pastas locais 
     683            selectAllFolderMsgs(false); 
     684            //Método chamado para retornar todos os ids de mensagens por folder 
     685            expresso_mail_archive.listAllMessagesByFolder(folder.replace("local_messages_","")); 
     686            populateSelectedMsgs(expresso_mail_archive.allmessagesbyfolder); 
     687        } 
     688        else { //se não, processamento normal da pasta 
     689                $.ajax({ 
     690                        url: "controller.php?" + $.param( {action: "$this.imap_functions.getMessagesIds",  
     691                                folder: folder, 
     692                                 msg_range_begin: "0", 
     693                                 msg_range_end: "0",                                     
     694                                sort_box_type: "SORTARRIVAL",  
     695                                search_box_type: search_box_type, 
     696                                sort_box_reverse: "1" 
     697                                }), 
     698                        success: function(data){ 
     699                                data = connector.unserialize(data); 
     700                                if(data){ 
     701                                        var _data = {}; 
     702                                        $.each(data,function(index,value){ 
     703                                                if (data[index] && data[index].msg_number){ 
     704                                                        _data[data[index].msg_number] = data[index].msg_number; 
     705                                                } 
     706                                        }); 
     707                                        populateSelectedMsgs(_data); 
     708                                        _data = {}; 
     709                                 
     710                                } 
     711                        }, 
     712                        beforeSend: function( jqXHR, settings ){ 
     713                                connector.showProgressBar(); 
     714                        }, 
     715                        complete: function( jqXHR, settings ){ 
     716                                connector.hideProgressBar(); 
     717                        } 
     718                }); 
     719        } 
    568720                proxy_mensagens.messages_list(current_folder,1,preferences.max_email_per_page,sort_box_type,search_box_type,sort_box_reverse,preferences.preview_msg_subject,preferences.preview_msg_tip,handler_draw_box); 
    569721        } 
     
    15731725        if ( !currentTab ) 
    15741726                alternate_border(numBox); 
    1575         draw_footer_box(headers_msgs.num_msgs); 
     1727        draw_footer_box(headers_msgs.length); 
    15761728        Element('main_table').style.display = ''; 
    15771729        if(is_ie6)        // Stupid Fixing on IE6. 
     
    16671819 
    16681820                tr_element.msg_sample = ""; 
     1821        tr_element.tip = ""; 
    16691822                //if(headers_msgs.msg_sample && headers_msgs.msg_sample.preview_msg_subject != "") 
    16701823                if(headers_msgs.msg_sample && preferences.preview_msg_subject == "1" && headers_msgs.msg_sample.body !== "") 
     
    16741827                        else 
    16751828                                tr_element.msg_sample = html_entities(Base64.decode(headers_msgs.msg_sample.body).substr(0,120) + "..."); //trecho do body que sera exibido com o assunto; 
    1676                 } 
    1677  
    1678                 tr_element.tip = ""; 
    1679                 if(headers_msgs.msg_sample && preferences.preview_msg_tip == "1" && headers_msgs.msg_sample.body !== "") 
    1680                 { 
    1681                         tr_element.tip = Base64.decode(headers_msgs.msg_sample.body).substr(3,300) + "..."; //trecho do body que sera exibido no tool-tip; 
    1682                 } 
    1683  
     1829 
     1830            //if(preferences.use_local_messages==1 && !expresso_offline) { //MailArchive 
     1831                if(proxy_mensagens.is_local_folder(current_folder)) { 
     1832                    // preferencia da pre-visualizacao 
     1833                    if (cssForResizing) {//Colunas redimensionaveis - nao trunca 
     1834                        tr_element.msg_sample = headers_msgs.msg_sample.body.substr(0,180) + "..."; //trecho do body que sera exibido com o assunto; //blabla 
     1835                    } else { 
     1836                        tr_element.msg_sample = headers_msgs.msg_sample.body.substr(0,120) + "..."; //trecho do body que sera exibido com o assunto; 
     1837                    } 
     1838 
     1839                    // preferencia dos tooltips 
     1840                    if(headers_msgs.msg_sample && preferences.preview_msg_tip == "1" && headers_msgs.msg_sample.body !== "") { 
     1841                        tr_element.tip = headers_msgs.msg_sample.body.substr(3,300) + "..."; //trecho do body que sera exibido no tool-tip; 
     1842                    } 
     1843 
     1844                } 
     1845 
     1846            /*}*/ else { //IMAP 
     1847                 // preferencia da pre-visualizacao 
     1848                             if (cssForResizing) { //Colunas redimensionaveis - nao trunca 
     1849                    /*problema no decode, se ele for utilizado, nao lista as mensagens -> CORRIGIDO em mail_archiver.js*/ 
     1850                    //if (headers_msgs.msg_sample.body.length > 0) 
     1851                                    tr_element.msg_sample = Base64.decode(headers_msgs.msg_sample.body).substr(0,180) + "..."; //trecho do body que sera exibido com o assunto; //blabla 
     1852                             } else { 
     1853                                    //if (headers_msgs.msg_sample.body.length > 0) 
     1854                                        tr_element.msg_sample = Base64.decode(headers_msgs.msg_sample.body).substr(0,120) + "..."; //trecho do body que sera exibido com o assunto; 
     1855                          } 
     1856 
     1857                // preferencia dos tooltips 
     1858                if(headers_msgs.msg_sample && preferences.preview_msg_tip == "1" && headers_msgs.msg_sample.body !== "") { 
     1859                    tr_element.tip = Base64.decode(headers_msgs.msg_sample.body).substr(3,300) + "..."; //trecho do body que sera exibido no tool-tip; 
     1860                } 
     1861            } 
     1862        } 
     1863 
     1864                 
    16841865                if ((headers_msgs.Unseen == 'U') || (headers_msgs.Recent == 'N')){ 
    1685                         if ((headers_msgs.Flagged == 'F') || headers_msgs.Importance.toLowerCase().indexOf("high")!=-1 ) 
     1866                        if ((headers_msgs.Flagged == 'F') || ( headers_msgs.Importance !== undefined && headers_msgs.Importance.toLowerCase().indexOf("high")!=-1 ) ) 
    16861867                                add_className(tr_element, 'flagged_msg'); 
    16871868                        add_className(tr_element, 'tr_msg_unread'); 
     
    17171898 
    17181899                td_element2 = createTDElement(0,1,"td_msg"); 
    1719                 if (headers_msgs.attachment == 1) 
     1900                if (headers_msgs.attachment == 1 || headers_msgs.attachment.number_attachments> 0) 
    17201901                        td_element2.innerHTML = "<img src ='templates/"+template+"/images/clip.gif' >"; 
    17211902 
     
    18872068                else 
    18882069                { 
    1889                         td_element4.innerHTML += headers_msgs.subject + "<span style=\"color:#b3b3b3;\">  " + tr_element.msg_sample + "</span>";//modificacao feita para exibir o trecho do body ao lado do assunto da mensagem; 
     2070                        td_element4.innerHTML += ($.trim(headers_msgs.subject) == "" ? "("+get_lang("No Subject")+")" : headers_msgs.subject) + "<span style=\"color:#b3b3b3;\">  " + tr_element.msg_sample + "</span>";//modificacao feita para exibir o trecho do body ao lado do assunto da mensagem; 
    18902071                } 
    18912072 
     
    19062087                } 
    19072088                 
    1908                 td_element26 = createTDElement(0,6,"td_msg","center","td_message_followup_"+headers_msgs.msg_number); 
    1909                 $(td_element26).addClass("td-followup-flag"); 
    1910                 td_element26.innerHTML = '<div class="flag-edited" style="width:8px;height:6px;"><img src="../prototype/modules/mail/img/flagEditor.png"></div>'; 
    1911          
     2089                  td_element26 = createTDElement(0,6,"td_msg","center","td_message_followup_"+headers_msgs.msg_number); 
     2090                  $(td_element26).addClass("td-followup-flag"); 
     2091 
     2092        if(get_current_folder().split("_")[0] != "local"){ 
     2093                  td_element26.innerHTML = '<div class="flag-edited" style="width:8px;height:6px;"><img src="../prototype/modules/mail/img/flagEditor.png"></div>'; 
     2094            } else { 
     2095            td_element26.innerHTML = ""; 
     2096        } 
     2097         
    19122098                if (headers_msgs.followupflagged) { 
    19132099                        if(headers_msgs.followupflagged.followupflag.id < 7){ 
     
    21252311        search_box_type = search; 
    21262312        if (typeof(clean_selected) == "undefined"){      
    2127                 $.ajax({                         
     2313                 
     2314        $.ajax({                         
    21282315                        url: "controller.php?" + $.param( {action: "$this.imap_functions.getMessagesIds",  
    21292316                                folder: get_current_folder(),                                    
     
    21512338                        } 
    21522339                }); 
     2340         
    21532341        }        
    21542342        proxy_mensagens.messages_list(current_folder,1,preferences.max_email_per_page,sort,search,sort_box_reverse,preferences.preview_msg_subject,preferences.preview_msg_tip,handler_draw_box); 
     
    24302618        var _maxChar = menuHidden ? 40 : 15; 
    24312619 
    2432         if (info_msg.from.name) 
    2433         { 
    2434                 var spanName = document.createElement("SPAN"); 
    2435                         spanName.innerHTML = info_msg.from.name; 
    2436                 _name = spanName.innerHTML.length > _maxChar ? spanName.innerHTML.substring(0,_maxChar) + "..." : spanName.innerHTML; 
    2437         } 
    2438         else 
    2439                 _name = info_msg.from.email.length > _maxChar ? info_msg.from.email.substring(0,_maxChar) + "..." : info_msg.from.email; 
     2620    if(info_msg.from){ 
     2621        if (info_msg.from.name) 
     2622        { 
     2623                var spanName = document.createElement("SPAN"); 
     2624                        spanName.innerHTML = info_msg.from.name; 
     2625                _name = spanName.innerHTML.length > _maxChar ? spanName.innerHTML.substring(0,_maxChar) + "..." : spanName.innerHTML; 
     2626        } 
     2627        else 
     2628                _name = info_msg.from.email.length > _maxChar ? info_msg.from.email.substring(0,_maxChar) + "..." : info_msg.from.email; 
     2629    } 
    24402630 
    24412631        td.innerHTML = _name.bold() + ', ' + info_msg.smalldate; 
     
    25162706        var option_mark_as_unseen = document.createElement("SPAN"); 
    25172707                option_mark_as_unseen.className = "reply_options"; 
    2518         option_mark_as_unseen.onclick = function () {changeLinkState(this,'seen'); 
    2519                 proxy_mensagens.proxy_set_message_flag(folder_id,'unseen'); 
     2708            option_mark_as_unseen.onclick = function () {changeLinkState(this,'seen'); 
     2709                proxy_mensagens.proxy_set_message_flag(folder_id,'unseen',null,ID.split("_r_")[0]); 
    25202710                write_msg(get_lang('Message marked as ')+get_lang("Unseen")); 
    25212711        }; 
     
    25322722                option_mark_important.onclick = function() { 
    25332723                        var _this = this; 
    2534                         proxy_mensagens.proxy_set_message_flag(folder_id,'unflagged', function(success){ 
    2535                                 if (success) { 
    2536                                         changeLinkState(_this, 'important'); 
    2537                                         write_msg(get_lang('Message marked as ') + get_lang("Normal")); 
    2538                                 } 
    2539                         } ); 
    2540  
     2724            changeLinkState(_this, 'important'); 
     2725                        proxy_mensagens.proxy_set_message_flag(folder_id,'unflagged',null,ID.split("_r_")[0]); 
     2726            write_msg(get_lang('Message marked as ')+get_lang("Normal")); 
    25412727                }; 
    2542                 option_mark_important.innerHTML = get_lang("Normal"); 
     2728        option_mark_important.innerHTML = get_lang("Normal"); 
    25432729        } 
    25442730        else{ 
    2545                 option_mark_important.onclick = function() {changeLinkState(this,'normal'); 
    2546                         proxy_mensagens.proxy_set_message_flag(folder_id,'flagged'); 
     2731                option_mark_important.onclick = function() {changeLinkState(this,'normal',null,ID.substr(0, ID.length-2)); 
     2732                        proxy_mensagens.proxy_set_message_flag(folder_id,'flagged',null,ID.split("_r_")[0]); 
    25472733                        write_msg(get_lang('Message marked as ')+get_lang("Important")); 
    25482734                }; 
     
    29943180        var tr1 = document.createElement("TR"); 
    29953181        tr1.className = "tr_message_header"; 
    2996         var td1 = document.createElement("TD"); 
    2997         td1.innerHTML = get_lang("From: "); 
    2998         td1.appendChild(deny_email(info_msg.from.email)); 
    2999         td1.width = "7%"; 
     3182    if(info_msg.from){ 
     3183        var td1 = document.createElement("TD"); 
     3184        td1.innerHTML = get_lang("From: "); 
     3185        td1.appendChild(deny_email(info_msg.from.email)); 
     3186        td1.width = "7%"; 
     3187    } 
    30003188 
    30013189        if (info_msg.sender){ 
     
    30223210        var from = document.createElement("TD"); 
    30233211        from.id = "from_"+ID; 
    3024         from.innerHTML = info_msg.from.full; 
     3212    if(info_msg.from){ 
     3213           from.innerHTML = info_msg.from.full; 
     3214    } 
    30253215        if (info_msg.Draft != "X"){ 
    30263216                from.innerHTML += draw_plugin_cc(ID, info_msg.from); 
     
    30313221        from_values.id = "from_values_"+ID; 
    30323222        from_values.type = "HIDDEN"; 
    3033         from_values.value = info_msg.from.full; //Veio do IMAP, sem images nem links. 
     3223    if(info_msg.from){ 
     3224        from_values.value = info_msg.from.full; //Veio do IMAP, sem images nem links. 
     3225    } 
    30343226 
    30353227        var local_message = document.createElement("INPUT"); 
     
    30393231        local_message.value = (info_msg.local_message)?"1":"0"; 
    30403232 
    3041         tr1.appendChild(td1); 
     3233    if(info_msg.from){ 
     3234           tr1.appendChild(td1); 
     3235    } 
    30423236        tr1.appendChild(from); 
    30433237        tr1.appendChild(from_values); 
     
    51265320 
    51275321function build_quota(data){ 
     5322    //MAILARCHIVE 
     5323    // se for a pasta de mensagens locais 
     5324    if(proxy_mensagens.is_local_folder(current_folder)) { 
     5325        return;         
     5326    } 
     5327 
    51285328        id = "content_quota"; 
    51295329        q_limit = data['quota_limit']; 
     
    54665666                ((expresso_offline)?" ":'<span class="message_options_export"><span ' + change_font_color + ' title="'+get_lang("Export")+'" class="message_options" onclick="proxy_mensagens.export_all_messages()">'+get_lang("Export")+'</span></span>') + 
    54675667                ((expresso_offline)?" ":'<span class="message_options_import"><span ' + change_font_color + ' title="'+get_lang("Import")+'" class="message_options" onclick="import_window()">'+get_lang("Import")+'</span></span>'); 
    5468         if(preferences.use_local_messages==1 && !expresso_offline) 
    5469                 if(proxy_mensagens.is_local_folder(current_folder)) 
    5470                         span_options.innerHTML += '&nbsp; <span id="localOption" ' + change_font_color + ' title="'+get_lang("Unarchive")+'" class="message_options" onclick="expresso_local_messages.unarchive_msgs(\''+folder+'\',null)">'+get_lang("Unarchive")+'</span>'; 
    5471                 else 
    5472                         span_options.innerHTML += '&nbsp; <span id="localOption" ' + change_font_color + ' title="'+get_lang("Archive")+'" class="message_options" onclick="archive_msgs(\''+folder+'\',null)">'+get_lang("Archive")+'</span>'; 
     5668 
     5669    //Link arquivar e desarquivar com ação 
     5670    //MAILARCHIVER 
     5671    if(preferences.use_local_messages==1){ 
     5672        if(expresso_mail_archive.enabled){ 
     5673           if(proxy_mensagens.is_local_folder(current_folder))//Unarchive link 
     5674             span_options.innerHTML += '&nbsp; <span title="'+get_lang("Unarchive")+'" class="message_options" onclick="expresso_mail_archive.unarchieve(\''+folder+'\', null, null);">'+get_lang("Unarchive")+'</span>'; 
     5675           else//Archive link                  
     5676             span_options.innerHTML += '&nbsp; <span title="'+get_lang("Archive")+'" class="message_options" onclick="archive_msgs(\''+folder+'\',null,null)">'+get_lang("Archive")+'</span>'; 
     5677        } 
     5678    } 
     5679 
    54735680        if (use_spam_filter) { 
    54745681                if ( current_folder == 'INBOX'+cyrus_delimiter+'Spam' ) { 
     
    54875694                span_R.appendChild(span_D); 
    54885695        } 
     5696     
     5697    var answer = '<span ' + change_font_color + ' id="span_flag_ANSWERED" class="'+(search_box_type == 'ANSWERED' ? 'message_options_over' : 'message_options')+'" title="'+get_lang("title_answered")+'" onclick="if(\'ANSWERED\' == \''+search_box_type+'\') return false;sort_box(\'ANSWERED\',\''+sort_box_type+'\')">'+get_lang("l_answered")+'</span>, '; 
     5698 
    54895699        span_D.innerHTML = 
    54905700                 get_lang("List")+': '+ 
     
    54925702        '<span ' + change_font_color + ' id="span_flag_UNSEEN" class="'+(search_box_type == 'UNSEEN' ? 'message_options_over' : 'message_options')+'" title="'+get_lang("l_unseen")+'" onclick="if(\'UNSEEN\' == \''+search_box_type+'\') return false;sort_box(\'UNSEEN\',\''+sort_box_type+'\')">'+get_lang("l_unseen")+'</span>, '+ 
    54935703        '<span ' + change_font_color + ' id="span_flag_SEEN" class="'+(search_box_type == 'SEEN' ? 'message_options_over' : 'message_options')+'" title="'+get_lang("l_seen")+'" onclick="if(\'SEEN\' == \''+search_box_type+'\') return false;sort_box(\'SEEN\',\''+sort_box_type+'\')">'+get_lang("l_seen")+'</span>, '+ 
    5494         '<span ' + change_font_color + ' id="span_flag_ANSWERED" class="'+(search_box_type == 'ANSWERED' ? 'message_options_over' : 'message_options')+'" title="'+get_lang("title_answered")+'" onclick="if(\'ANSWERED\' == \''+search_box_type+'\') return false;sort_box(\'ANSWERED\',\''+sort_box_type+'\')">'+get_lang("l_answered")+'</span>, '+ 
     5704        answer+ 
    54955705        '<span ' + change_font_color + ' id="span_flag_FLAGGED" class="'+(search_box_type == 'FLAGGED' ? 'message_options_over' : 'message_options')+'" title="'+get_lang("l_important")+'" onclick="if(\'FLAGGED\' == \''+search_box_type+'\') return false;sort_box(\'FLAGGED\',\''+sort_box_type+'\')">'+get_lang("l_important")+'</span>&nbsp;&nbsp;'; 
    54965706        draw_paging(num_msgs); 
  • trunk/expressoMail1_2/js/local_messages.js

    r5264 r7414  
    157157 
    158158local_messages.prototype.init_local_messages = function(){ //starts only database operations 
    159                  
     159                return 'retorno local_messages.prototype.init_local_messages'; 
     160} 
     161 
     162local_messages.prototype.init_local_messages_old = function(){ 
    160163    if(this.dbGears==null || this.localServer==null || this.store == null) 
    161164        this.create_objects(); 
     
    835838 
    836839local_messages.prototype.get_local_range_msgs = function(folder,msg_range_begin,emails_per_page,sort,sort_reverse,search,preview_msg_subject,preview_msg_tip) { 
    837  
     840        this.init_local_messages(); 
     841} 
     842local_messages.prototype.get_local_range_msgs_old = function(folder,msg_range_begin,emails_per_page,sort,sort_reverse,search,preview_msg_subject,preview_msg_tip) { 
    838843    this.init_local_messages(); 
    839844    var retorno = new Array(); 
  • trunk/expressoMail1_2/js/main.js

    r7392 r7414  
    11// Tempo do auto refresh (em milisegundos) 
    22var time_refresh = 300000; 
     3 
     4//MAILARCHIVER-01 
     5// Intervalo de tempo de verificacao de comunicacao com o MailArchiver (milisegundos) 
     6var check_services_interval = 2000; 
     7// Numero de tentativas de reconexao 
     8var check_services_tryouts = 1; 
     9// Limite de tentativas de reconexao 
     10var check_services_tryouts_limit = 5; 
     11 
    312 
    413// tempo do auto save (em milisegundos) 
     
    615var autosave_time = 40000; 
    716var results_search_messages = "";  
    8 var cabecalho = '<h4>ExpressoLivre - ExpressoMail</h4>';  
    9  
     17var cabecalho = '<h4>ExpressoLivre - ExpressoMail</h4>'; 
    1018var auxNotificationCriteriaVetor = []; 
    1119var auxNotification; 
     
    107115                Element('tableDivAppbox').width = '100%'; 
    108116 
     117    //MailArchiver save offset to gmt user preference data to list correctly date/time from messages list 
     118    var save_gmtoffset = function(data){ 
     119        gmtoffset = data; 
     120    } 
     121 
    109122        var save_preferences = function(data){ 
    110123 
     
    124137                current_folder="INBOX"; 
    125138                 
    126                 if( (window.google && google.gears) && !google.gears.factory.getPermission()) 
     139                /*if( (window.google && google.gears) && !google.gears.factory.getPermission()) 
    127140                    preferences.use_local_messages=0; 
    128141                 
     
    141154                        setTimeout('auto_archiving()', 30000); 
    142155                         
    143                 } 
     156                }*/ 
    144157                $.ajax({                         
    145158                        url: "controller.php?" + $.param( {action: "$this.imap_functions.getMessagesIds", 
     
    168181                        } 
    169182                }); 
     183                /*Carrega a lista de mensagens*/ 
     184 
     185        //MAILARCHIVER-02 
     186        //Try to get ArchiveServices object directly 
     187        if(ArchiveServices) 
     188            expresso_mail_archive.Startup(); 
     189        //ArchiveServices not runnnig: catch the user preferences to set up message at header 
     190        else{ 
     191            if(preferences.use_local_messages=="1") 
     192                write_msg(get_lang('Sorry, but Mail Archiver does not seems to be running or installed at this workstation. By now, we are turning off local messages!')); 
     193        } 
     194 
     195                var  handler_populateSelectedMsgs = function(data){ 
     196                        populateSelectedMsgs(data); 
     197                } 
     198                cExecute ("$this.imap_functions.get_msgs&folder=INBOX&sort_box_type=SORTARRIVAL&search_box_type=ALL&sort_box_reverse=1&msg_range_begin=1", handler_populateSelectedMsgs); 
    170199                //Substituido por padrão Jquery 
    171200                cExecute ("$this.imap_functions.get_range_msgs2&folder=INBOX&msg_range_begin=1&msg_range_end="+preferences.max_email_per_page+"&sort_box_type=SORTARRIVAL&search_box_type=ALL&sort_box_reverse=1", handler_draw_box); 
     
    182211                //Troca da forma de construção de menu para o plugin jquery.contextMenu 
    183212                //ConstructMenuTools(); 
    184                  
    185                 if ( (preferences.use_local_messages==1) && (expresso_local_messages.is_offline_installed()) )  //Precisa ser feito após a renderização da caixa de emails 
    186                         check_mail_in_queue(); 
     213                //MAILARCHIVER-00 
     214                //if ( (preferences.use_local_messages==1) && (expresso_local_messages.is_offline_installed()) )  //Precisa ser feito após a renderização da caixa de emails 
     215                        //check_mail_in_queue(); 
    187216                 
    188217                // Insere a applet de criptografia 
     
    619648                                 
    620649                } 
     650 
    621651                //Change msg class to read. 
    622652                if (!msg_is_read(ID)) 
    623653                { 
    624                         set_msg_as_read(ID, true); 
     654            //MAILARCHIVER-01 TAG MESSAGE AS SEEN 
     655            if (proxy_mensagens.is_local_folder(get_current_folder())){ 
     656                expresso_mail_archive.drawdata = null //no draw action 
     657                var tl = expresso_mail_archive.pattern.tagConfig('unseen', ID, 1); 
     658                expresso_mail_archive.taglist = tl; 
     659                expresso_mail_archive.progressbar = window.setTimeout("expresso_mail_archive.tagMessage()",1);                             
     660            } 
     661            set_msg_as_read(ID, true); 
    625662                        if (msg_info.cacheHit || (!proxy_mensagens.is_local_folder(get_current_folder()) && msg_info.original_ID)) 
    626663                        { 
    627                                 set_message_flag(ID, "seen"); // avoid caducous (lazy) data 
     664                set_message_flag(ID, "seen"); // avoid caducous (lazy) data 
    628665                        } 
    629666                } 
     
    731768                                { 
    732769                                        selectedPagingMsgs[data[i].msg_number] = false; 
     770                                        totalFolderMsgs++; 
    733771                                        updateSelectedMsgs(false,data[i].msg_number); 
    734772                                        var new_msg = this.make_tr_message(data[i], current_folder, data.offsetToGMT); 
     
    866904                } 
    867905                connector.purgeCache(); 
    868                 update_menu(); 
     906                cExecute("$this.imap_functions.get_folders_list&onload=true", update_menu); 
    869907                resizeMailList(); 
    870908 
     
    950988                          
    951989                        if (!archive && (parseInt(preferences.save_deleted_msg)) && (folder != userTrashFolder)){  
    952                     if(currentTab == 0) 
    953                                                 msgs_number = get_selected_messages(); 
    954990                            move_msgs2(folder, ""+msgs_number, border_ID, userTrashFolder,special_folders['Trash'],show_success_msg );  
    955                                 return; 
    956         } 
     991                                        return; 
     992                                } 
    957993 
    958994        var handler_delete_msgs = function(data){ 
     
    10381074        } 
    10391075         
    1040         if(currentTab == 0 ) 
    1041                 msgs_number = get_selected_messages(); 
    1042  
    10431076        if (msgs_number.length > 0 || parseInt(msgs_number) > 0) 
    10441077                cExecute ("$this.imap_functions.delete_msgs&folder="+folder+"&msgs_number="+msgs_number+"&border_ID="+border_ID+"&sort_box_type="+sort_box_type+"&search_box_type="+search_box_type+"&sort_box_reverse="+sort_box_reverse, handler_delete_msgs); 
     
    10561089        var remove_currente_folder = ""; 
    10571090        var id_border = currentTab.replace(/[a-zA-Z_]+/, ""); 
    1058          
     1091 
     1092        //Validação para não poder manipular mensagens locais na busca 
     1093        if (currentTab.indexOf('search_local') != -1 || proxy_mensagens.is_local_folder(new_folder)) 
     1094        { 
     1095                alert(get_lang("You cant manipulate local messages on search")); 
     1096                return; 
     1097        } 
     1098 
    10591099        var delete_msg = false; 
    10601100         
     
    10651105         
    10661106        if( preferences.use_local_messages == 1 && expresso_local_messages.isArchiving( selected_messages, folder ) ){ 
    1067           alert( "Impossivel mover mensagens que estão ainda estão sendo arquivadas." ); 
     1107          alert( "Impossivel mover mensagens que ainda estão sendo arquivadas." ); 
    10681108          return; 
    10691109        } 
     
    12331273                                return false; 
    12341274                        }else{ 
    1235                                 data = data.split("/").reverse(); //Recupera o nome da pasta do array 
    1236                                 write_msg(get_lang('Error moving message.')+" "+get_lang('Permission denied to folder "%1".', data[0])); 
     1275                                write_msg(get_lang('Error moving message.')+" "+get_lang('Permission denied to folder "%1".', new_folder_name)); 
     1276                                /*Verifica se a pasta destino é a "Trash" e se a pasta origem e destino são do mesma estrutura compartilhada*/ 
     1277                                if(new_folder_name == "Trash" && folder.split("/")[1] == new_folder.split("/")[1]){ 
     1278                                        alert(get_lang("You can not remove the message with the preference 'Send to Trash' enabled. There is no permission to move messages to the trash folder.")); 
     1279                                } 
    12371280                                return false; 
    12381281                        } 
     
    13601403                        draw_paging(n_total_msg); 
    13611404                        Element('tot_m').innerHTML = n_total_msg; 
     1405                        totalFolderMsgs -= data.msgs_number.length; 
    13621406                } 
    13631407                refresh(); 
     
    13751419                } 
    13761420        } catch (e) {}  
    1377  
    1378         if(currentTab == 0) 
     1421    //Validação para recuperar o id caso não seja aba de listagem 
     1422        if (currentTab == 0 && msgs_number == "selected") 
    13791423                msgs_number = get_selected_messages(); 
     1424        else if (currentTab != 0 && msgs_number == "selected") 
     1425                msgs_number = currentTab.substr(0,currentTab.indexOf('_r')); 
    13801426 
    13811427        if(openTab.type[currentTab] == 1){ 
     
    13841430 
    13851431        // se a aba estiver aberta e selecionada, apenas a msg da aba é movida 
    1386         if(currentTab.toString().indexOf("_r") != -1) 
     1432        if(currentTab.toString().indexOf("_r") != -1 && currentTab == border_ID) 
    13871433        { 
    13881434                //se a aba for aberta atraves de uma pesquisa 
     
    13931439        } 
    13941440        refresh(); 
    1395         if (parseInt(msgs_number) > 0 || msgs_number.length > 0){ 
    1396                 // remove a flag $FilteredMessage da mensagem, depois move 
    1397                 var handler_removeFlag = function(){ 
    1398                         $.ajax({ 
    1399                                 url: 'controller.php?' + $.param( {action: '$this.imap_functions.move_messages', 
    1400                                                                     folder: folder, 
    1401                                                                     msgs_number: ""+msgs_number, 
    1402                                                                     border_ID: border_ID, 
    1403                                                                     sort_box_type: sort_box_type, 
    1404                                                                     search_box_type: search_box_type, 
    1405                                                                     sort_box_reverse: sort_box_reverse, 
    1406                                                                     reuse_border: border_ID, 
    1407                                                                     new_folder: new_folder, 
    1408                                                                     new_folder_name: new_folder_name, 
    1409                                                                     get_previous_msg: ( !not_opem_previus ? preferences.delete_and_show_previous_message : false ), 
    1410                                                                     decoded: true } ), 
    1411  
    1412                                 success: function( data ){ 
    1413                                     data = connector.unserialize( data ); 
    1414                                     $.each(msgs_number.split(","), function(index, value){ 
    1415                                         delete selectedPagingMsgs[value]; 
    1416                                         msgFolder =  Base64.encode(get_current_folder()); 
    1417                                         tabToRemove = value + "_r_" + msgFolder.replace(/=/g,""); 
    1418                                         if ($("#"+tabToRemove)){ 
    1419                                                 delete_border(tabToRemove,'false'); 
    1420                                         } 
     1441 
     1442        if (proxy_mensagens.is_local_folder(folder)){ 
     1443         
     1444                expresso_mail_archive.update_counters = true; 
     1445        //Folder de onde sai a mensagem é local (armazenamento local) 
     1446 
     1447        if(msgs_number=='selected'){ 
     1448            msgs_number = get_selected_messages(); 
     1449        } 
     1450 
     1451        if (new_folder == 'local_root'){ 
     1452            alert(get_lang("Select a folder!")); 
     1453        } 
     1454                     
     1455        if (parseInt(msgs_number) > 0 || msgs_number.length > 0) { 
     1456            if (proxy_mensagens.is_local_folder(new_folder)){ 
     1457                //esta tirando de um folder local para outro folder local 
     1458                //expresso_mail_archive.moveMessages(new_folder.substr(6), msgs_number); 
     1459                expresso_mail_archive.moveMessages(new_folder.replace('local_messages_', ''), msgs_number); 
     1460            } 
     1461            else{ 
     1462                //esta tirando de um folder local para um folder IMAP (desarquivamento) 
     1463                if(!new_folder){ 
     1464                    new_folder = 'INBOX'; 
     1465                } 
     1466                if(currentTab.toString().indexOf("_r") != -1){ 
     1467                    msgs_number = currentTab.toString().substr(0,currentTab.toString().indexOf("_r")); 
     1468                }                       
     1469                expresso_mail_archive.unarchieve(folder, new_folder, msgs_number); 
     1470            } 
     1471        } 
     1472        else{ 
     1473            write_msg(get_lang('No selected message.')); 
     1474        } 
     1475        } 
     1476        else{ 
     1477        if (proxy_mensagens.is_local_folder(new_folder)){ 
     1478            //esta tirando de um folder não local para um folder local (arquivamento) 
     1479            if(msgs_number=='selected'){ 
     1480                archive_msgs(folder, new_folder); 
     1481            } 
     1482            else{ 
     1483                archive_msgs(folder, new_folder, msgs_number); 
     1484            } 
     1485        } 
     1486        else{ 
     1487            //esta tirando de um folder não local para outro folder não local (move) 
     1488            //move_msgs(folder, msgs_number, border_ID, new_folder, new_folder_name); 
     1489                        if (parseInt(msgs_number) > 0 || msgs_number.length > 0){ 
     1490                                // remove a flag $FilteredMessage da mensagem, depois move 
     1491                                var handler_removeFlag = function(){ 
     1492                                        $.ajax({ 
     1493                                                url: 'controller.php?' + $.param( {action: '$this.imap_functions.move_messages', 
     1494                                                                                    folder: folder, 
     1495                                                                                    msgs_number: ""+msgs_number, 
     1496                                                                                    border_ID: border_ID, 
     1497                                                                                    sort_box_type: sort_box_type, 
     1498                                                                                    search_box_type: search_box_type, 
     1499                                                                                    sort_box_reverse: sort_box_reverse, 
     1500                                                                                    reuse_border: border_ID, 
     1501                                                                                    new_folder: new_folder, 
     1502                                                                                    new_folder_name: new_folder_name, 
     1503                                                                                    get_previous_msg: ( !not_opem_previus ? preferences.delete_and_show_previous_message : false ), 
     1504                                                                                    decoded: true } ), 
     1505 
     1506                                                success: function( data ){ 
     1507                                                    data = connector.unserialize( data ); 
     1508                                                    $.each(msgs_number.split(","), function(index, value){ 
     1509                                                        delete selectedPagingMsgs[value]; 
     1510                                                        msgFolder =  Base64.encode(get_current_folder()); 
     1511                                                        tabToRemove = value + "_r_" + msgFolder.replace(/=/g,""); 
     1512                                                        if ($("#"+tabToRemove)){ 
     1513                                                                delete_border(tabToRemove,'false'); 
     1514                                                        } 
     1515                                                    }); 
     1516                                                    totalFolderMsgs -= msgs_number.split(",").length; 
     1517 
     1518                                                    //TESTE 
     1519                                                    selectAllFolderMsgs(); 
     1520                                                $('.select-link').unbind('click'); 
     1521 
     1522                                                    if( data ) 
     1523                                                        handler_move_msgs( data ); 
     1524                                                }, 
     1525                                                beforeSend: function( jqXHR, settings ){ 
     1526                                                        connector.showProgressBar(); 
     1527                                            }, 
     1528                                            complete: function( jqXHR, settings ){ 
     1529                                                        connector.hideProgressBar(); 
     1530                                          } 
     1531 
    14211532                                    }); 
    1422                                     totalFolderMsgs -= msgs_number.split(",").length; 
    1423  
    1424                                     //TESTE 
    1425                                     selectAllFolderMsgs(); 
    1426                                 $('.select-link').unbind('click'); 
    1427  
    1428                                     if( data ) 
    1429                                         handler_move_msgs( data ); 
    1430                                 }, 
    1431                                 beforeSend: function( jqXHR, settings ){ 
    1432                                         connector.showProgressBar(); 
    1433                             }, 
    1434                             complete: function( jqXHR, settings ){ 
    1435                                         connector.hideProgressBar(); 
    1436                           } 
    1437  
    1438                     }); 
    1439                 } 
    1440                 var hasFolder = false; 
    1441                 $.each(fromRules, function(index, value) { 
    1442                         if(value == folder){ 
    1443                                 hasFolder = true; 
    1444                                 cExecute ("$this.imap_functions.removeFlagMessagesFilter&folder="+folder+"&msg_number="+msgs_number, handler_removeFlag);  
    1445                                 return false; 
    1446                         } 
    1447                 }); 
    1448                 if(!hasFolder){ 
    1449                         handler_removeFlag(); 
    1450                 } 
    1451                  
    1452         }else 
    1453                 write_msg(get_lang('No selected message.')); 
     1533                                } 
     1534                                var hasFolder = false; 
     1535                                $.each(fromRules, function(index, value) { 
     1536                                        if(value == folder){ 
     1537                                                hasFolder = true; 
     1538                                                cExecute ("$this.imap_functions.removeFlagMessagesFilter&folder="+folder+"&msg_number="+msgs_number, handler_removeFlag);  
     1539                                                return false; 
     1540                                        } 
     1541                                }); 
     1542                                if(!hasFolder){ 
     1543                                        handler_removeFlag(); 
     1544                                } 
     1545                                 
     1546                        }else 
     1547                                write_msg(get_lang('No selected message.')); 
     1548        } 
     1549    }    
     1550 
     1551    //Código adicionado para o correto funcionamento da seleção independente de paginação. 
     1552    $.each(msgs_number.split(","), function(index, value){ 
     1553        delete selectedPagingMsgs[value]; 
     1554    }); 
     1555    totalFolderMsgs = totalFolderMsgs - msgs_number.split(",").length; 
     1556    selectAllFolderMsgs(false); 
     1557    updateSelectedMsgs(); 
     1558         
    14541559} 
    14551560 
     
    15501655 
    15511656 
    1552 function archive_msgs(folder,folder_dest,id_msgs) { 
     1657 function archive_msgs(folder,folder_dest,id_msgs) { 
     1658    write_msg(get_lang('Starting to archive messages')); 
     1659 
     1660    if(currentTab.toString().indexOf("_r") != -1){ 
     1661        id_msgs = currentTab.toString().substr(0,currentTab.toString().indexOf("_r")); 
     1662    } 
     1663 
     1664    if(!id_msgs) 
     1665        id_msgs = get_selected_messages(); 
     1666 
     1667    if(folder_dest=='local_root' || folder_dest==null)//Default archive destiny = local_inbox folder 
     1668        folder_dest = 'local_inbox'; 
     1669     
     1670    if (parseInt(id_msgs) > 0 || id_msgs.length > 0){        
     1671        //expresso_mail_archive.Archive(folder,folder_dest,id_msgs); 
     1672        window.setTimeout("expresso_mail_archive.Archive('" + folder + "','" + folder_dest + "','" + id_msgs + "')", 1); 
     1673        selectAllFolderMsgs(false); 
     1674    } 
     1675    else 
     1676        write_msg(get_lang('No selected message.')); 
     1677 
     1678 
     1679        /* 
    15531680        if(proxy_mensagens.is_local_folder(folder)) { 
    15541681                write_msg(get_lang("You cant archive local mails")); 
     
    15871714        var handler_arquivar_mensagens = function(data) { 
    15881715           
    1589             var msgs_info = []; 
     1716            //var msgs_info = []; 
    15901717           
    1591             for( var i = 0; i < data.length; i++ ) 
    1592                 msgs_info[i] = connector.unserialize( data[i] ); 
     1718            //for( var i = 0; i < data.length; i++ ) 
     1719                //msgs_info[i] = connector.unserialize( data[i] ); 
    15931720 
    15941721            //vejo se já tinha mensagens locais 
    1595             var h = expresso_local_messages.has_local_mails(); 
     1722            //var h = expresso_local_messages.has_local_mails(); 
    15961723             
    1597             expresso_local_messages.insert_mails( msgs_info, folder_dest, function( s, f ){complete_archiving( s, f, h )} ); 
    1598  
     1724            //expresso_local_messages.insert_mails( msgs_info, folder_dest, function( s, f ){complete_archiving( s, f, h )} ); 
     1725 
     1726            expresso_mail_archive.Archive(folder,folder_dest,id_msgs); 
    15991727            document.getElementById("overlay").style.visibility = "hidden"; 
    16001728        } 
     
    16191747 
    16201748        }); 
     1749        */ 
     1750         
    16211751} 
    16221752 
     
    23072437{    
    23082438        if (Element("attachments_" + old_id_border)) 
    2309         { 
    2310                 var fileUploadMSG = $('#fileupload_msg'+new_border_ID);          
    2311                 var attachments = document.getElementById("attachments_" + old_id_border).getElementsByTagName("a");     
    2312                 var imagens = block_quoted_body.match(/<img[^>]*>/g); 
     2439    { 
     2440        var fileUploadMSG = $('#fileupload_msg'+new_border_ID);          
     2441        var attachments = $("#attachments_" + old_id_border).find("a");  
     2442                if(openTab.imapBox[new_border_ID].split("local").length > 1 && attachments.length > 0){ 
     2443                        alert("Não é possivel utilizar os anexos das mensagens locais, favor desarquivar para ter acesso aos anexos"); 
     2444                        return false; 
     2445                } 
     2446                 
     2447        var imagens = block_quoted_body.match(/<img[^>]*>/g); 
    23132448                var arrayAttachments = []; 
    23142449                var arrayAttachmentsA = []; 
     
    23182453                            if((attachments[i].tagName=="SPAN") || (attachments[i].tagName=="IMG") || ((attachments[i].href.indexOf("javascript:download_local_attachment")==-1)&&(attachments[i].href.indexOf("javascript:download_attachments")==-1))) 
    23192454                                    continue; 
    2320  
    2321                                 var arrayAtt = attachments[i].href.replace("javascript:download_attachments(", "").replace(")", "").split(',');                                  
     2455                                if(attachments[i].href.split("local") > 1){ 
     2456                                        var arrayAtt = attachments[i].href.replace("javascript:download_local_attachment(", "").replace(")", "").split(',');                                  
     2457                                }else{ 
     2458                                        var arrayAtt = attachments[i].href.replace("javascript:download_attachments(", "").replace(")", "").split(',');                                  
     2459                                } 
     2460                                 
    23222461                                var att = new Object(); 
    23232462                                var regex = new RegExp( "'", "g" ); 
     
    24082547                                    arrayAttachmentsA.push(attachments[i]); 
    24092548                                } 
    2410                     } 
     2549        } 
    24112550                //------------------- 
    24122551                 
     
    25052644    var fileUploadMSG = $('#fileupload_msg'+new_border_ID); 
    25062645    var attachments = $("#attachments_" + old_id_border).find("a");                      
     2646 
     2647        if(openTab.imapBox[new_border_ID].split("local").length > 1 && attachments.length > 0){ 
     2648                alert("Não é possivel utilizar os anexos das mensagens locais, favor desarquivar para ter acesso aos anexos"); 
     2649                return false; 
     2650        } 
     2651 
    25072652    for (var i = 0; i < attachments.length; i++){ 
    25082653            if((attachments[i].tagName=="SPAN") || (attachments[i].tagName=="IMG") || ((attachments[i].href.indexOf("javascript:download_local_attachment")==-1)&&(attachments[i].href.indexOf("javascript:download_attachments")==-1))) 
    25092654                    continue; 
    25102655                fileUploadMSG.find(' .attachments-list').show(); 
    2511                 var arrayAtt = attachments[i].href.replace("javascript:download_attachments(", "").replace(")", "").split(',');                                  
     2656                if(attachments[i].href.split("local").length > 1){ 
     2657                        var arrayAtt = attachments[i].href.replace("javascript:download_local_attachment(", "").replace(")", "").split(',');                                     
     2658                }else{ 
     2659                        var arrayAtt = attachments[i].href.replace("javascript:download_attachments(", "").replace(")", "").split(',');                                          
     2660                } 
    25122661                var att = new Object(); 
    25132662                var regex = new RegExp( "'", "g" ); 
     
    31153264 
    31163265function set_messages_flag_search_local(flag){ 
    3117         var msgs_flag = this.get_selected_messages_search(); 
    3118         if(local_messages.prototype.set_messages_flag(msgs_flag, flag, true)){ 
    3119                 var id_border = currentTab.replace(/[a-zA-Z_]+/, ""); 
    3120                 var msgs = msgs_flag.split(','); 
    3121                 for(var i = 0; i < msgs.length; i++){ 
    3122                         Element("search_local_msg"+id_border+"_check_box_message_"+msgs[i]).checked = false; 
    3123                 } 
    3124                 draw_tree_folders(); 
    3125                 Element('chk_box_select_all_messages_search_local').checked = false; 
    3126                 refresh(); 
    3127                 write_msg(get_lang('The messages were marked with success!'));           
    3128         }else{ 
    3129                 write_msg(get_lang('Error marking messages.')); 
    3130         } 
     3266        // var msgs_flag = this.get_selected_messages_search(); 
     3267        // if(local_messages.prototype.set_messages_flag(msgs_flag, flag, true)){ 
     3268        //      var id_border = currentTab.replace(/[a-zA-Z_]+/, ""); 
     3269        //      var msgs = msgs_flag.split(','); 
     3270        //      for(var i = 0; i < msgs.length; i++){ 
     3271        //              Element("search_local_msg"+id_border+"_check_box_message_"+msgs[i]).checked = false; 
     3272        //      } 
     3273        //      draw_tree_folders(); 
     3274        //      Element('chk_box_select_all_messages_search_local').checked = false; 
     3275        //      refresh(); 
     3276        //      write_msg(get_lang('The messages were marked with success!'));           
     3277        // }else{ 
     3278        //      write_msg(get_lang('Error marking messages.')); 
     3279        // } 
    31313280} 
    31323281 
     
    36373786} 
    36383787 
    3639 function empty_trash_imap(shared, button){ 
     3788function empty_trash_imap(shared, button, type){ 
    36403789        if(shared){ 
    36413790                var folder_part = $(button).parents("li:first").attr("id").split(cyrus_delimiter); 
     
    36773826                'overlay_opacity' : 0.5, 
    36783827                'onClose':  function(caption) { 
     3828 
    36793829                        if(caption == get_lang("Yes")){ 
    3680                                 cExecute ("$this.imap_functions.empty_folder&clean_folder="+"imapDefaultTrashFolder"+(shared ? "&shared="+folder : ""), handler_empty_trash); 
     3830                if(type.id == "local_messages_trash"){ 
     3831                    expresso_mail_archive.deleteAllMessages(type.id); 
     3832                    cExecute("$this.imap_functions.get_folders_list&onload=true", update_menu); 
     3833                } else { 
     3834                    cExecute ("$this.imap_functions.empty_folder&clean_folder="+"imapDefaultTrashFolder"+(shared ? "&shared="+folder : ""), handler_empty_trash); 
     3835                }  
    36813836                        } 
    36823837                } 
     
    36843839} 
    36853840 
    3686 function empty_spam_imap(shared, button){ 
     3841function empty_spam_imap(shared, button, type){ 
    36873842        if(shared){ 
    36883843                var folder_part = $(button).parents("li:first").attr("id").split(cyrus_delimiter); 
     
    37253880                'onClose':  function(caption) { 
    37263881                        if(caption == get_lang("Yes")){ 
    3727                                 cExecute ("$this.imap_functions.empty_folder&clean_folder="+"imapDefaultSpamFolder"+(shared ? "&shared="+folder : ""), handler_empty_spam); 
     3882                if(type.id == "local_messages_spam"){  
     3883                    expresso_mail_archive.deleteAllMessages(type.id); 
     3884                    cExecute("$this.imap_functions.get_folders_list&onload=true", update_menu); 
     3885                } else { 
     3886                    cExecute ("$this.imap_functions.empty_folder&clean_folder="+"imapDefaultSpamFolder"+(shared ? "&shared="+folder : ""), handler_empty_spam); 
     3887                }  
    37283888                        } 
    37293889                } 
     
    37313891} 
    37323892 
     3893function buildExportArchiver(msgsArchive, name_box){ 
     3894 
     3895    var hand_export = function(data){ 
     3896        if(!data){ 
     3897            write_msg(get_lang('Error compressing messages (ZIP). Contact the administrator.')) 
     3898        }else if(data["empty_folder"] || data == "empty_folder"){ 
     3899            write_msg(get_lang("The selected folder is empty.")); 
     3900        }else 
     3901          download_attachments(null, null, data, null,null, get_current_folder().split("_")[2] +'.zip'); 
     3902    } 
     3903 
     3904    var array = new Array(); 
     3905 
     3906    for(var i =0; i < msgsArchive.length; i++){ 
     3907        eachMsg = { 
     3908                'ContentType' : msgsArchive[i].ContentType, 
     3909                'from' : { 'email' : msgsArchive[i].from.email, 'full' : msgsArchive[i].from.full, 'name' : msgsArchive[i].from.name}, 
     3910                'msg_sample' : msgsArchive[i].msg_sample, 
     3911                'subject' : msgsArchive[i].subject, 
     3912                'to' : { 'email' : msgsArchive[i].to.email, 'full' : msgsArchive[i].to.full, 'name' : msgsArchive[i].to.name}, 
     3913                'toaddress2' : msgsArchive[i].toaddress2, 
     3914                'msg_number' : msgsArchive[i].msg_number, 
     3915                'date' : new Date(msgsArchive[i].timestamp).toString()   
     3916        }; 
     3917        array.push(eachMsg); 
     3918    } 
     3919 
     3920    $.ajax({ 
     3921        type: "POST", 
     3922        url: "controller.php?action=$this.exporteml.export_all_byLocalFolder", 
     3923        data: { folder: name_box, type: "msg_local", messages : array} 
     3924    }).done(function(msg) { 
     3925        hand_export(msg.split('"')[1]); 
     3926    }); 
     3927} 
    37333928 
    37343929function export_all_selected_msgs(){ 
    3735         if (openTab.type[currentTab] > 1){           
     3930        if(get_current_folder().split("_")[0] == "local"){ 
     3931 
     3932        if(get_selected_messages().indexOf(",") != -1){ 
     3933            expresso_mail_archive.getSomeMsgs(get_selected_messages().split(",")); 
     3934        } else { 
     3935            expresso_mail_archive.getSomeMsgs([get_selected_messages()]); 
     3936        } 
     3937         
     3938        buildExportArchiver(expresso_mail_archive.getSomeMsg, get_current_folder().split("_")[2]); 
     3939 
     3940    } else { 
     3941 
     3942    if (openTab.type[currentTab] > 1){       
    37363943                source_msg(currentTab,openTab.imapBox[currentTab]); 
    37373944                return; 
     
    37793986        else 
    37803987                write_msg(get_lang('No selected message.')); 
     3988    } 
    37813989} 
    37823990 
     
    38264034                var _params = _target.id.split(";;"); 
    38274035                download_attachments(Base64.encode(_params[0]),_params[1],_params[2],_params[3],_params[4],file_type); 
    3828         } 
    3829 } 
     4036                if($(_target).parent().attr("href").split("http").length > 1){ 
     4037                        var part_find = thumb.toString().split("#"); 
     4038                        var part2_find = part_find[1].split("/temp"); 
     4039                        var part_id_dwl = part2_find[0] + '/temp/download' + part2_find[1];  
     4040                        download_local_attachment(part_id_dwl); 
     4041                        return; 
     4042                }else{ 
     4043                        var _params = _target.id.split(";;");    
     4044                        download_attachments(_params[0],_params[1],_params[2],_params[3],_params[4],file_type); 
     4045                } 
     4046        } 
     4047} 
     4048 
    38304049function save_image2(info){  
    38314050        var obj = jQuery.parseJSON(unescape(info));  
     
    45554774} 
    45564775 
     4776function create_new_local_folder(parentFolderId, name){ 
     4777 
     4778    if(typeof(parentFolderId) == "string"){ 
     4779        parentFolderId = parentFolderId.split("_"); 
     4780        var parentName = parentFolderId[2]; 
     4781    } 
     4782     
     4783 
     4784    expresso_mail_archive.createFolder(parentName, name); 
     4785 
     4786} 
     4787 
    45574788function create_new_folder(name_folder, base_path){ 
    45584789        //Limit reached folders 
     
    47444975DataLayer.poll('message',30); 
    47454976 
    4746  
     4977//MAILARCHIVER-04 
     4978function services_retry(){ 
     4979    try{ 
     4980        connector.purgeCache();  
     4981        //window.alert('expresso var dump:\nenabled = ' + expresso_mail_archive.enabled + '\ntimer = ' + expresso_mail_archive.timer +'\ncounter = ' + expresso_mail_archive.counter); 
     4982 
     4983        if ((expresso_mail_archive.enabled == null) && (expresso_mail_archive.timer == null) && (expresso_mail_archive.counter > 0)){ 
     4984            connector.hideProgressBar(); 
     4985            //connector.resetProgressBarText(); 
     4986            write_msg(get_lang('Sorry, but you need to reload this web page. Click at reload page at web browsing top navigation.')); 
     4987            return; 
     4988        } 
     4989 
     4990        if (arguments.length == 0){ 
     4991           write_msg(get_lang('Trying to communicate with Mail Archiver...')); 
     4992        } 
     4993 
     4994        connector.showProgressBar(); 
     4995        var head = document.getElementById('send_queue'); 
     4996         
     4997        var script_xdr= document.createElement('script'); 
     4998        var script_xdr_tag_id = 'mail_archiver_retry_xdr';     
     4999         
     5000        var script_request= document.createElement('script'); 
     5001        var script_request_tag_id = 'mail_archiver_retry_request';                 
     5002         
     5003        var script_cors= document.createElement('script'); 
     5004        var script_cors_tag_id = 'mail_archiver_retry_cors'; 
     5005         
     5006        var script_utils= document.createElement('script'); 
     5007        var script_utils_tag_id = 'mail_archiver_retry_utils'; 
     5008 
     5009        if(document.getElementById(script_xdr_tag_id)){ 
     5010            document.getElementById(script_xdr_tag_id).parentNode.removeChild(document.getElementById(script_xdr_tag_id)); 
     5011        } 
     5012 
     5013        if(document.getElementById(script_request_tag_id)){ 
     5014            document.getElementById(script_request_tag_id).parentNode.removeChild(document.getElementById(script_request_tag_id)); 
     5015        } 
     5016 
     5017        if(document.getElementById(script_cors_tag_id)){ 
     5018            document.getElementById(script_cors_tag_id).parentNode.removeChild(document.getElementById(script_cors_tag_id)); 
     5019        } 
     5020         
     5021        if(document.getElementById(script_utils_tag_id)){ 
     5022            document.getElementById(script_utils_tag_id).parentNode.removeChild(document.getElementById(script_utils_tag_id)); 
     5023        }         
     5024 
     5025        //IE XDR ADAPTER 
     5026        script_xdr.type= 'text/javascript'; 
     5027        script_xdr.src=  mail_archive_protocol + '://' + mail_archive_host + ':' + mail_archive_port  + '/arcservutil/cxf-addon-xdr-adapter.js'; 
     5028        script_xdr.id= script_xdr_tag_id; 
     5029        head.appendChild(script_xdr); 
     5030 
     5031        //CXF TRANSPORT OBJECT 
     5032        script_request.type= 'text/javascript'; 
     5033        script_request.src= mail_archive_protocol + '://' + mail_archive_host + ':' + mail_archive_port  + '/arcservutil/cxf-addon-cors-request-object.js'; 
     5034        script_request.id= script_request_tag_id; 
     5035        head.appendChild(script_request); 
     5036 
     5037        //CXF CORS OBJECT 
     5038        script_cors.type= 'text/javascript'; 
     5039        script_cors.src= mail_archive_protocol + '://' + mail_archive_host + ':' + mail_archive_port  + '/arcservutil/cxf-addon-cors-utils.js'; 
     5040        script_cors.id= script_cors_tag_id; 
     5041        head.appendChild(script_cors); 
     5042 
     5043        //CXF CORE 
     5044        script_utils.type= 'text/javascript'; 
     5045        script_utils.src= mail_archive_protocol + '://' + mail_archive_host + ':' + mail_archive_port  + '/arcserv/ArchiveServices?js&nojsutils'; 
     5046        script_utils.id= script_utils_tag_id; 
     5047        head.appendChild(script_utils); 
     5048 
     5049        ttintval = window.setTimeout('check_services_restart()', 1000); 
     5050    } 
     5051    catch (e){ 
     5052        write_msg(get_lang('Sorry, but Mail Archiver still seems to be sleeping. Check out your system services!')); 
     5053        connector.hideProgressBar(); 
     5054        //connector.resetProgressBarText(); 
     5055        check_services_tryouts = 1; 
     5056    } 
     5057} 
     5058 
     5059//MAILARCHIVER-05 
     5060function check_services_restart(){ 
     5061    try{ 
     5062                write_msg(get_lang('Wait: attempt %1 from %2...', check_services_tryouts, check_services_tryouts_limit)); 
     5063        if(check_services_tryouts <= 5){ 
     5064            try{ 
     5065                ArchiveServices = new web_service_mailarchiver_serpro__ArchiveServices(); 
     5066                ArchiveServices.url = mail_archive_protocol + "://" + mail_archive_host + ":" + mail_archive_port + "/arcserv/ArchiveServices"; 
     5067                window.clearInterval(ttintval); 
     5068                expresso_mail_archive.Restart(expresso_mail_archive); 
     5069            } 
     5070            catch (e){ 
     5071                check_services_tryouts++; 
     5072                window.clearInterval(ttintval); 
     5073                ttintval = window.setTimeout('services_retry(true)',1); 
     5074            } 
     5075        } 
     5076        else{ 
     5077            write_msg(get_lang('Sorry, but Mail Archiver still seems to be sleeping. Check out your system services!')); 
     5078            connector.hideProgressBar(); 
     5079            //connector.resetProgressBarText(); 
     5080            check_services_tryouts = 1; 
     5081        } 
     5082    } 
     5083    catch (e){ 
     5084        write_msg(get_lang('Sorry, but Mail Archiver still seems to be sleeping. Check out your system services!')); 
     5085        connector.hideProgressBar(); 
     5086        //connector.resetProgressBarText(); 
     5087        check_services_tryouts = 1; 
     5088    } 
     5089} 
     5090 
  • trunk/expressoMail1_2/js/messages_controller.js

    r7200 r7414  
    99 * Retorna os cabeçalhos das mensagens a serem desenhadas na caixa de email. 
    1010 */ 
    11         messages_proxy.prototype.messages_list = function(folder,msg_range_begin,emails_per_page,sort_box_type,search_box_type,sort_box_reverse,preview_msg_subject,preview_msg_tip,call_back) { 
     11    messages_proxy.prototype.messages_list = function(folder,msg_range_begin,emails_per_page,sort_box_type,search_box_type,sort_box_reverse,preview_msg_subject,preview_msg_tip,call_back) { 
     12        if(this.is_local_folder(folder)) { 
     13 
     14            //MAILARCHIVER-01 
     15             
     16            //var baseFolder = folder.substr(6); 
     17            var baseFolder = folder.replace('local_messages_', ''); 
     18            var tree_name; 
     19            //var drawinginfo = {treeObject: tree_name, treeName: tree_name, folderName: baseFolder}; 
     20            var drawinginfo = {}; 
     21            expresso_mail_archive.update_counters = false; 
     22            expresso_mail_archive.currentfolder = baseFolder; 
     23            expresso_mail_archive.getFolderInfo(expresso_mail_archive.currentfolder); 
     24            expresso_mail_archive.drawdata = drawinginfo; 
     25 
     26            if(tree_name == 'tree_folders'){ //only the 'tree_folders' must show messages. 'folders_tree' are just for managment operation 
     27                var exp_dfs = new Array(baseFolder,msg_range_begin,emails_per_page,sort_box_type,search_box_type, sort_box_reverse,preview_msg_subject,preview_msg_tip); 
     28                expresso_mail_archive.queryconfig.setExpressoDefaults(exp_dfs); 
     29                expresso_mail_archive.listMessages(); 
     30            } 
     31            else{ 
     32                if (!tree_name){ 
     33                    //window.alert('sem arvore para atualizar, com sort_box_type =' + sort_box_type + ' e search_box_type= ' + search_box_type + ' reverse -- ' + sort_box_reverse); 
     34                    var exp_dfs = new Array(baseFolder,msg_range_begin,emails_per_page,sort_box_type,search_box_type,sort_box_reverse,preview_msg_subject,preview_msg_tip); 
     35                    expresso_mail_archive.queryconfig.setExpressoDefaults(exp_dfs); 
     36                    expresso_mail_archive.listMessages(); 
     37                } 
     38                if(tree_name == 'folders_tree'){ 
     39                    /*var div_export_local = document.createElement('div'); 
     40                    div.style.width 
     41                    var lbl_check = document.createElement('label'); 
     42                    var check_export_local_recursive = document.createElement('input'); 
     43                    var lbl_combo = document.createElement('label'); 
     44                    var combo_export_local_format = document.createElement('select');*/ 
     45                    //window.alert('alert td content = ' + Element('div_buttons').getElementsByTagName('table')[0].tbody[0].tr[4].td[0].innerHTML); 
     46                    //Element('div_buttons').appendChild(div_export_local); 
     47                } 
     48            } 
     49 
     50        }else { 
     51            $.ajax({ 
     52                url: "controller.php?" + $.param( {action: "$this.imap_functions.get_range_msgs3",  
     53                                    folder: folder,  
     54                                    msg_range_begin: msg_range_begin,  
     55                                    msg_range_end: emails_per_page,  
     56                                    sort_box_type: sort_box_type,  
     57                                    search_box_type: search_box_type,  
     58                                    sort_box_reverse: sort_box_reverse } ), 
     59 
     60                  success: function( data ){ 
     61                    data = connector.unserialize(data); 
     62                     
     63                    if( data ) 
     64                        call_back( data ); 
     65                  }, 
     66                  beforeSend: function( jqXHR, settings ){ 
     67                    connector.showProgressBar(); 
     68                  }, 
     69                  complete: function( jqXHR, settings ){ 
     70                    connector.hideProgressBar(); 
     71                  } 
     72               
     73            }); 
     74        } 
     75    } 
     76        messages_proxy.prototype.messages_list_old = function(folder,msg_range_begin,emails_per_page,sort_box_type,search_box_type,sort_box_reverse,preview_msg_subject,preview_msg_tip,call_back) { 
    1277                if(this.is_local_folder(folder)) { 
    1378                        var real_folder = folder.substr(6);              
     
    53118        messages_proxy.prototype.get_msg = function(msg_number,msg_folder,set_flag,call_back) { 
    54119                if(this.is_local_folder(msg_folder)) { 
    55                         if(set_flag) 
    56                                 expresso_local_messages.set_messages_flag(msg_number,"seen"); 
    57                         var data = expresso_local_messages.get_local_mail(msg_number);   
    58  
    59                         eval("call_back(data)"); 
     120                         
     121 
     122            //if(set_flag) 
     123                        //      expresso_local_messages.set_messages_flag(msg_number,"seen"); 
     124                        // var data = expresso_local_messages.get_local_mail(msg_number);        
     125            //MAILARCHIVER-02 
     126            expresso_mail_archive.getMessage(msg_number); 
     127 
     128                        //eval("call_back(data)"); 
    60129                }else{ 
    61130                    $.ajax({ 
     
    86155                if (folder == 'null') 
    87156                        folder = get_current_folder(); 
    88                 if (msgs_number == 'selected') 
    89                         msgs_number = get_selected_messages(); 
    90                  
     157 
     158        //Validação para recuperar o id caso não seja aba de listagem 
     159                if (msgs_number == 'selected' && currentTab != 0) //Recupera apenas o id da mensagem aberta 
     160                        msgs_number = currentTab.substr(0,currentTab.indexOf('_r')); 
     161        else if (msgs_number == 'selected' && currentTab == 0) 
     162            msgs_number = get_selected_messages(); 
     163 
    91164                if(currentTab != 0 && currentTab.indexOf("search_")  >= 0){ 
    92165                        var content_search = document.getElementById('content_id_'+currentTab); 
     
    100173                if (!this.is_local_folder(folder)){ 
    101174                        delete_msgs(folder, msgs_number, border_ID); 
    102                 }else { 
    103                         if((folder != 'local_Trash') && (expresso_local_messages.as_trash())){ 
    104                                 expresso_local_messages.move_messages('Trash', msgs_number); 
    105                                 this.aux_interface_remove_mails(msgs_number, 'local_Trash', border_ID); 
    106                                 draw_tree_local_folders(); 
    107                                 update_local_box();  
    108                                 refresh();  
    109                         }else{ 
    110                         expresso_local_messages.delete_msgs(msgs_number, border_ID); 
    111                         draw_tree_local_folders(); 
    112                                 update_local_box();  
    113                                 refresh(); 
    114                         } 
    115                 } 
     175                }else {     
     176            //MAILARCHIVER-03 
     177            var msg_to_delete = Element(msgs_number); 
     178            //user has preference to show previous message on deleting one 
     179            if (isNaN(currentTab) && parseInt(preferences.delete_and_show_previous_message) && msg_to_delete) { 
     180                    if (msg_to_delete.previousSibling){  
     181                            var previous_msg = msg_to_delete.previousSibling.id; 
     182                             
     183                            //user has preference to maintain default folder structure at local folders, so we have trash folder 
     184                            if(preferences.auto_create_local == 1){ 
     185                                //user has preference to "save" delete messasge on trash folder, so move it to there 
     186                                if (((preferences.save_deleted_msg == true)) && (folder != expresso_mail_archive.specialfolders.trash)){ 
     187                                    expresso_mail_archive.folder_destination = 'trash'; 
     188                                    expresso_mail_archive.moveMessages(expresso_mail_archive.folder_destination, msgs_number); 
     189                                    delete_border(currentTab,'false');  
     190                                    expresso_mail_archive.getMessage(previous_msg); 
     191                                } 
     192                                //user does not want to save messages deleted on trash. purge them imediatly 
     193                                else{ 
     194                                    expresso_mail_archive.deleteMessages(msgs_number); 
     195                                    delete_border(currentTab,'false');  
     196                                    expresso_mail_archive.getMessage(previous_msg) 
     197                                }                                                                                 
     198                            } 
     199                            //maybe, we do not have trash. 
     200                            else{ 
     201                                //user has preference to "save" delete messasge on trash folder, so move it to there 
     202                                if (((preferences.save_deleted_msg == true)) && (folder != expresso_mail_archive.specialfolders.trash)){ 
     203                                    expresso_mail_archive.createFolder("","Trash"); 
     204                                    expresso_mail_archive.folder_destination = 'trash'; 
     205                                    expresso_mail_archive.moveMessages(expresso_mail_archive.folder_destination, msgs_number); 
     206                                    delete_border(currentTab,'false'); 
     207                                    expresso_mail_archive.getMessage(previous_msg); 
     208                                } 
     209                                //user does not want to save messages deleted on trash. purge them imediatly 
     210                                else{ 
     211                                    expresso_mail_archive.deleteMessages(msgs_number); 
     212                                    delete_border(currentTab,'false');  
     213                                    expresso_mail_archive.getMessage(previous_msg) 
     214                                }                                           
     215                            } 
     216                    }  
     217                    //there is no previous message existing to show. Just delete de view context 
     218                    else{  
     219                           //user has preference to maintain default folder structure at local folders, so we have trash folder 
     220                           if(preferences.auto_create_local == 1){ 
     221                                if (((preferences.save_deleted_msg == true)) && (folder != expresso_mail_archive.specialfolders.trash)){ 
     222                                    expresso_mail_archive.folder_destination = 'trash'; 
     223                                    expresso_mail_archive.moveMessages(expresso_mail_archive.folder_destination, msgs_number); 
     224                                    delete_border(currentTab,'false');  
     225                                } 
     226                                //user does not want to save messages deleted on trash. purge them imediatly 
     227                                else{ 
     228                                    expresso_mail_archive.deleteMessages(msgs_number); 
     229                                    delete_border(currentTab,'false');  
     230                                }                                        
     231                           } 
     232                            //maybe, we do not have trash. Purge message so. 
     233                            else{ 
     234                                //user has preference to "save" delete messasge on trash folder, so move it to there 
     235                                if (((preferences.save_deleted_msg == true)) && (folder != expresso_mail_archive.specialfolders.trash)){ 
     236                                    expresso_mail_archive.createFolder("","Trash"); 
     237                                    expresso_mail_archive.folder_destination = 'trash'; 
     238                                    expresso_mail_archive.moveMessages(expresso_mail_archive.folder_destination, msgs_number); 
     239                                    expresso_mail_archive.getMessage(previous_msg); 
     240                                } 
     241                                //user does not want to save messages deleted on trash. purge them imediatly 
     242                                else{ 
     243                                    expresso_mail_archive.deleteMessages(msgs_number); 
     244                                }                                     
     245                            } 
     246                    }  
     247            }  
     248            //user has no preferece to show previous message on deleting 
     249            else{  
     250                if(preferences.auto_create_local == 1){ 
     251                    //user has preference to "save" delete messasge on trash folder, so move it to there 
     252                    if (((preferences.save_deleted_msg == true)) && (folder.replace('messages_','') != expresso_mail_archive.specialfolders.trash)){ 
     253                        expresso_mail_archive.folder_destination = 'trash'; 
     254                        expresso_mail_archive.moveMessages(expresso_mail_archive.folder_destination, msgs_number); 
     255                        delete_border(currentTab,'false'); 
     256                    } 
     257                    //user does not want to save messages deleted on trash (or is cleaning it). purge them imediatly 
     258                    else{ 
     259                        expresso_mail_archive.deleteMessages(msgs_number); 
     260                        delete_border(currentTab,'false'); 
     261                    }                             
     262                } 
     263                //maybe, we do not have trash. Purge message so. 
     264                else{ 
     265                    //user has preference to "save" delete messasge on trash folder, so move it to there 
     266                    if (((preferences.save_deleted_msg == true)) && (folder.replace('messages_','') != expresso_mail_archive.specialfolders.trash)){ 
     267                        expresso_mail_archive.createFolder("","Trash"); 
     268                        expresso_mail_archive.folder_destination = 'trash'; 
     269                        expresso_mail_archive.moveMessages(expresso_mail_archive.folder_destination, msgs_number); 
     270                    } 
     271                    //user does not want to save messages deleted on trash. purge them imediatly 
     272                    else{ 
     273                        expresso_mail_archive.deleteMessages(msgs_number); 
     274                    }      
     275                } 
     276            } 
     277                } 
     278 
     279        //Código adicionado para o correto funcionamento da seleção independente de paginação. 
     280        $.each(msgs_number.split(","), function(index, value){ 
     281            delete selectedPagingMsgs[value]; 
     282        }); 
     283        totalFolderMsgs = totalFolderMsgs - msgs_number.split(",").length; 
     284        selectAllFolderMsgs(false); 
     285        updateSelectedMsgs(); 
    116286        } 
    117287         
     
    119289 
    120290                if(info_msg.local_message==true) { 
    121                         return "javascript:download_local_attachment('"+ 
    122                                         expresso_local_messages.get_url_anexo(info_msg.msg_number,info_msg.attachments[numero_ordem_anexo].pid)+ 
    123                                         "')"; 
     291            //ma serpro 
     292                        // return "javascript:download_local_attachment('"+ 
     293                        //              expresso_local_messages.get_url_anexo(info_msg.msg_number,info_msg.attachments[numero_ordem_anexo].pid)+ 
     294                        //              "')"; 
     295            //MAILARCHIVER-04 
     296            return "javascript:download_local_attachment('"+ mail_archive_protocol+'://'+mail_archive_host+':'+mail_archive_port+'/temp/download/' +info_msg.attachments[numero_ordem_anexo].pid + "')"; 
    124297                } 
    125298                else { 
     
    139312         
    140313        messages_proxy.prototype.proxy_set_messages_flag = function (flag,msg_number){ 
    141                 if(this.is_local_folder(get_current_folder())) { 
    142                         expresso_local_messages.set_messages_flag(msg_number,flag); 
    143                 } 
    144                 else { 
    145                         set_messages_flag(flag,msg_number); 
    146                                 // Verifica se a pasta que esta selecionada contem a opção "Não lidas" ativada 
    147                                 // caso exista, ele chama novamente a opção "Não lidas" para atualizar a pasta. 
    148                                 if('UNSEEN' == search_box_type) 
    149                                         return sort_box('UNSEEN','SORTARRIVAL'); 
    150                 } 
    151         } 
    152          
    153         messages_proxy.prototype.proxy_set_message_flag = function (msg_number,flag,func_after_flag_change){ 
    154                 var msg_number_folder = Element("new_input_folder_"+msg_number+"_r"); //Mensagens respondidas/encaminhadas 
     314        //MAILARCHIVER 
     315        if(this.is_local_folder(get_current_folder())) {            
     316            var msglist = get_selected_messages();     
     317            var arrlist = msglist.split(","); 
     318            var operation; 
     319            var strtag; 
     320             
     321            for(var i in arrlist){ 
     322                switch(flag.toLowerCase()){ 
     323                    case 'unseen': 
     324                        strtag = "unseen"; 
     325                        operation = 0; 
     326                        set_msg_as_unread(arrlist[i]); 
     327                        break; 
     328                    case 'seen': 
     329                        strtag = "unseen"; 
     330                        operation = 1; 
     331                        set_msg_as_read(arrlist[i]); 
     332                        break; 
     333                    case 'flagged': 
     334                        strtag = "flagged, importance_high"; 
     335                        operation = 0; 
     336                        set_msg_as_flagged(arrlist[i]); 
     337                        break; 
     338                    case 'unflagged': 
     339                        strtag = "flagged, importance_high"; 
     340                        operation = 1; 
     341                        set_msg_as_unflagged(arrlist[i]); 
     342                        break; 
     343                } 
     344                expresso_mail_archive.currenttag = flag; 
     345                var tl = expresso_mail_archive.pattern.tagConfig(strtag, arrlist[i], operation); 
     346                expresso_mail_archive.taglist = tl;                              
     347                expresso_mail_archive.progressbar = window.setTimeout("expresso_mail_archive.tagMessage()",1); 
     348            } 
     349        } 
     350        else { 
     351            set_messages_flag(flag,msg_number); 
     352            // Verifica se a pasta que esta selecionada contem a opção "Não lidas" ativada 
     353            // caso exista, ele chama novamente a opção "Não lidas" para atualizar a pasta. 
     354            if('UNSEEN' == search_box_type) 
     355                return sort_box('UNSEEN','SORTARRIVAL'); 
     356        } 
     357        } 
     358         
     359        messages_proxy.prototype.proxy_set_message_flag = function (msg_number,flag,func_after_flag_change,msgid){ 
     360        var msg_number_folder = Element("new_input_folder_"+msg_number+"_r"); //Mensagens respondidas/encaminhadas 
    155361                if(!msg_number_folder) 
    156362                        var msg_number_folder = Element("input_folder_"+msg_number+"_r"); //Mensagens abertas 
    157363                var folder = msg_number_folder ?  msg_number_folder.value : get_current_folder(); 
    158                 if(this.is_local_folder(folder)) { 
    159                         expresso_local_messages.set_message_flag(msg_number,flag, func_after_flag_change); 
    160                 } 
    161                 else { 
    162                         set_message_flag(msg_number,flag, func_after_flag_change); 
    163                 } 
     364 
     365        //MAILARCHIVER 
     366        if(this.is_local_folder(folder)) { 
     367            if(!msgid) 
     368                msgid = msg_number; 
     369            var taglist = flag; 
     370            var operation; 
     371     
     372            switch(flag.toLowerCase()){ 
     373                case 'unseen': 
     374                    strtag = "unseen"; 
     375                    operation = 0; 
     376                    set_msg_as_unread(msgid); 
     377                    break; 
     378                case 'seen': 
     379                    strtag = "unseen"; 
     380                    operation = 1; 
     381                    set_msg_as_read(msgid); 
     382                    break; 
     383                case 'flagged': 
     384                    strtag = 'flagged, importance_high'; 
     385                    operation = 0; 
     386                    set_msg_as_flagged(msgid); 
     387                    break; 
     388                case 'unflagged': 
     389                    strtag = "flagged, importance_high"; 
     390                    operation = 1; 
     391                    set_msg_as_unflagged(msgid); 
     392                    break; 
     393                case 'forwarded': 
     394                    strtag = "forwarded"; 
     395                    operation = 0; 
     396                    set_msg_as_flagged(msgid); 
     397                case 'answered': 
     398                    strtag = "answered"; 
     399                    operation = 0; 
     400                    set_msg_as_flagged(msgid);                                   
     401                     
     402            }                 
     403             
     404            expresso_mail_archive.drawdata = null; 
     405            var tl = expresso_mail_archive.pattern.tagConfig(strtag, msgid, operation); 
     406            expresso_mail_archive.currenttag = flag; 
     407            expresso_mail_archive.taglist = tl; 
     408            expresso_mail_archive.progressbar = window.setTimeout("expresso_mail_archive.tagMessage()",1); 
     409        } 
     410        else { 
     411            set_message_flag(msg_number,flag, func_after_flag_change); 
     412        } 
    164413        } 
    165414         
     
    290539                if (! folder || folder == 'null') 
    291540                        folder = Element("input_folder_"+msgs_number+"_r") ? Element("input_folder_"+msgs_number+"_r").value : (openTab.imapBox[currentTab] ? openTab.imapBox[currentTab]:get_current_folder()); 
    292                 if ((this.is_local_folder(folder)) && (this.is_local_folder(new_folder))) { //Move entre pastas não locais... 
    293                         if (folder == new_folder){ 
    294                                 write_msg(get_lang('The origin folder and the destination folder are the same.')); 
     541 
     542        //MAILARCHIVER-08 
     543        if (this.is_local_folder(folder)){ 
     544            expresso_mail_archive.update_counters = true; 
     545            //Folder de onde sai a mensagem é local (armazenamento local) 
     546            if (folder == new_folder){ 
     547                write_msg(get_lang('The origin folder and the destination folder are the same.')); 
    295548                                return; 
    296                         } 
    297                         if(msgs_number=='selected') 
    298                                 msgs_number = get_selected_messages(); 
    299                         if (new_folder == 'local_root') 
    300                                 alert(get_lang("Select a folder!")); 
    301                         if (parseInt(msgs_number) > 0 || msgs_number.length > 0) { 
    302                                 expresso_local_messages.move_messages(new_folder.substr(6), msgs_number); 
    303                                 this.aux_interface_remove_mails(msgs_number, new_folder_name, border_ID); 
    304                                 draw_tree_local_folders(); 
    305                                 update_local_box(); 
    306                         } 
    307                         else  
    308                                 write_msg(get_lang('No selected message.')); 
    309                 } 
    310                 else  
    311                         if ((!this.is_local_folder(folder)) && (!this.is_local_folder(new_folder))) { //Move entre pastas locais... 
    312                                 move_msgs(folder, msgs_number, border_ID, new_folder, new_folder_name); 
    313                         }else if ((!this.is_local_folder(folder)) && (this.is_local_folder(new_folder))) { 
    314                                 if(msgs_number=='selected') 
    315                                         archive_msgs(folder,new_folder); 
    316                                 else 
    317                                         archive_msgs(folder,new_folder,msgs_number); 
    318  
    319                                  
    320                                 draw_tree_local_folders(); 
    321                                 refresh(); 
    322                         } 
    323                         else { 
    324                 //Por Bruno Costa (bruno.vieira-costa@serpro.gov.br) permite o desarquivamento de menssagens chamando a função unarchive_msgs quando uma msg é movida de uma pasta local para uma pasta remota. 
    325  
    326                                 expresso_local_messages.unarchive_msgs(folder,new_folder,msgs_number); 
    327                 //write_msg(get_lang("you can't move mails from local to server folders")); 
    328                         } 
    329                  
    330                  
     549            }                     
     550 
     551            //Validação para recuperar o id caso não seja aba de listagem 
     552            if (msgs_number == 'selected' && currentTab != 0) //Recupera apenas o id da mensagem aberta 
     553                msgs_number = currentTab.substr(0,currentTab.indexOf('_r')); 
     554            else 
     555                msgs_number = get_selected_messages(); 
     556 
     557            if (new_folder == 'local_root'){ 
     558                alert(get_lang("Select a folder!")); 
     559            } 
     560                         
     561            if (parseInt(msgs_number) > 0 || msgs_number.length > 0) { 
     562                if (this.is_local_folder(new_folder)){ 
     563                    //esta tirando de um folder local para outro folder local 
     564                    expresso_mail_archive.moveMessages(new_folder.replace("local_messages_",""), msgs_number); 
     565                    if(currentTab != 0) 
     566                        delete_border(currentTab,'false');  
     567                } 
     568                else{ 
     569                    //esta tirando de um folder local para um folder IMAP (desarquivamento) 
     570                    if(!new_folder){ 
     571                        new_folder = 'INBOX'; 
     572                    } 
     573                    if(currentTab.toString().indexOf("_r") != -1){ 
     574                        msgs_number = currentTab.toString().substr(0,currentTab.toString().indexOf("_r")); 
     575                    }                       
     576                    expresso_mail_archive.unarchieve(folder, new_folder, msgs_number); 
     577                } 
     578            } 
     579            else{ 
     580                write_msg(get_lang('No selected message.')); 
     581            } 
     582        }else{ 
     583            if (this.is_local_folder(new_folder)){ 
     584                //esta tirando de um folder não local para um folder local (arquivamento) 
     585                if(msgs_number=='selected'){ 
     586                    archive_msgs(folder, new_folder); 
     587                } 
     588                else{ 
     589                    archive_msgs(folder, new_folder, msgs_number); 
     590                } 
     591            } 
     592            else{ 
     593                //esta tirando de um folder não local para outro folder não local (move) 
     594                move_msgs(folder, msgs_number, border_ID, new_folder, new_folder_name); 
     595            } 
     596        }        
     597 
     598        //Adicionado código para o correto funcionamento da seleção independente de paginação. 
     599        $.each(msgs_number.split(","), function(index, value){ 
     600            delete selectedPagingMsgs[value]; 
     601        }); 
     602        totalFolderMsgs = totalFolderMsgs - msgs_number.split(",").length; 
     603        selectAllFolderMsgs(false); 
     604        updateSelectedMsgs(); 
    331605        } 
    332606         
     
    462736 
    463737    messages_proxy.prototype.export_all_messages = function(folder){ 
    464  
    465                 if (!folder){ 
    466                         folder = get_current_folder(); 
    467                 } 
    468  
    469                 if(!this.is_local_folder(folder)){ 
    470                         export_all_selected_msgs(); 
    471                 }else{ 
    472                         local_messages.prototype.local_messages_to_export(); 
    473                 } 
    474         } 
     738        if (!folder) { 
     739            folder = get_current_folder(); 
     740        } 
     741 
     742        if(!this.is_local_folder(folder) || folder.split("_")[0] == "local"){ 
     743            export_all_selected_msgs(); 
     744        }else{ 
     745            local_messages.prototype.local_messages_to_export(); 
     746        } 
     747        } 
     748         
     749 
     750 
     751        /* Airton 
     752        * Método que vai chamar efetivamente o método Archive. 
     753        * TO-DO: Tirar desse arquivo o método e passar pra outro arquivo 
     754        */ 
     755        messages_proxy.prototype.archive_message = function(folder, msgs_number) { 
     756                if(msgs_number == 'get_selected_messages') 
     757                        msgs_number = get_selected_messages(); 
     758                         
     759                expresso_mail_archive.Archive("INBOX", "inbox", msgs_number); 
     760        } 
     761         
     762         
     763         
    475764        /* 
    476765        messages_proxy.prototype.proxy_export_all_msg=function(){ 
  • trunk/expressoMail1_2/js/search.js

    r7386 r7414  
    11        xhr = false; 
     2 
     3        var folder              = {}; 
    24         
    35        function searchE() 
     
    144146        } 
    145147         
     148        //draws folder list 
    146149        searchE.prototype.foldersTree = function() 
    147150        { 
    148                 var treeFoldersSearch = new dFTree({name : 'treeFoldersSearch'}); 
    149                  
    150                 var root        = new dNode({id : 'root', caption: get_lang('My Folders'), onClick: "ttree.setFolder('root')"}); 
    151                  
    152                 treeFoldersSearch.add(root, 'root'); 
    153  
    154                 for(var i = 0; i < folders.length ; i++ ) 
    155                 { 
    156                         var nn = new dNode({id:folders[i].folder_id, caption: lang_folder(folders[i].folder_name), plusSign:folders[i].folder_hasChildren, onClick: "ttree.setFolder('"+folders[i].folder_id+"')"}); 
     151                /*Insere a árvore de diretórios*/ 
     152 
     153                var foldersTree = jQuery("#divFoldersSearch") 
     154                .removeClass('empty-container') 
     155                .html(DataLayer.render(BASE_PATH + 'api/templates/foldertree.ejs', {folders: [cp_tree1, cp_tree2, cp_tree3 ]})) 
     156                .find("#foldertree").treeview() 
     157                .click(function(event) 
     158                { 
     159                        //request new selected folder messages 
     160                        var target = $(event.target); 
     161 
     162                        if( target.is('.collapsable-hitarea, .expandable-hitarea, .lastCollapsable, .lastExpandable, .treeview') ) 
     163                            return; 
     164 
     165                        if( !target.attr('id') ) 
     166                            target = target.parent(); 
     167 
     168                if (target.attr('id') == "foldertree") return; 
    157169                         
    158                         if ( folders[i].folder_parent == '' ) 
    159                         { 
    160                                 folders[i].folder_parent = 'root'; 
    161                         } 
    162             else if ( folders[i].folder_parent.indexOf('user') != -1 ) 
    163             { 
    164                 //if ( treeFoldersSearch.getNodeById('user') ) 
    165                 { 
    166                         var n_root_shared_folders = new dNode({id:'user', caption:get_lang("Shared Folders"), plusSign:true}); 
    167                     treeFoldersSearch.add( n_root_shared_folders,'root'); 
    168                 } 
    169             } 
    170  
    171                         // Ver Ticket #1548 
    172                         if( folders[i].folder_parent != 'root') 
    173                         { 
    174                 var node_parent = treeFoldersSearch.getNodeById(folders[i].folder_parent); 
    175                  
    176                 if( typeof node_parent != 'undefined') 
    177                 { 
    178                         node_parent.plusSign = true; 
    179                         treeFoldersSearch.alter(node_parent); 
    180                 } 
    181             } 
     170                        folder                  = {}; 
     171                        folder.id               = target.attr('id'); 
     172                        folder.child    = target.find('.folder'); 
     173                        folder.caption  = target.find('span').attr('title');                     
    182174                         
    183                         treeFoldersSearch.add( nn, folders[i].folder_parent ); 
    184                 } 
    185  
    186                 treeFoldersSearch.draw( $("#divFoldersSearch")[0] ); 
    187                 treeFoldersSearch.getNodeById("root")._select(); 
    188                 root.changeState(); 
     175                        $('.filetree span.folder.selected').removeClass('selected'); 
     176                        if(!target.is('#foldertree > .expandable, #foldertree > .collapsable')) 
     177                                $(target).children('.folder').addClass('selected'); 
     178 
     179                        selectedFolder = { 
     180                            id: folder.id,  
     181                            name: folder.child.attr('title'), 
     182                            'class': folder.child.attr('class') 
     183                        }; 
     184                }); 
     185 
    189186        } 
    190187         
     
    413410        searchE.prototype.viewLocalMessage = function() 
    414411        { 
     412                /* 
    415413                var data                        = [2]; 
    416414                var gears                       = []; 
     
    449447                                                 
    450448                        EsearchE.mount_result( data, 'SORTDATE' ); 
     449                } 
     450                */ 
     451 
     452                var data                        = [2]; 
     453                var gears                       = []; 
     454                var local_folders       = []; 
     455          
     456        //MailArchiver - local data 
     457        if ( preferences.use_local_messages == 1 ) 
     458                { 
     459                data['data_gears']      = expresso_mail_archive.search_queryresult; 
     460            data['num_msgs']    = expresso_mail_archive.search_queryresult.length; 
     461                write_msg( data['num_msgs'] + " " + get_lang("results found")); 
     462                        EsearchE.mount_result(data , 'SORTDATE'); 
    451463                } 
    452464        } 
     
    545557                        if (j == 4) 
    546558                        { 
    547                                 td.setAttribute("width", colSizes[1][4]); 
    548                                 td.id = "td_message_followup_search_"+uid_msg; 
    549                                 td.setAttribute("class","search-result-item"); 
    550                                 td1 = '<div class="flag-edited" style="width:8px;height:6px;"><img src="../prototype/modules/mail/img/flagEditor.png"></div>'; 
     559                                if(border_id.split("local").length == 1){ 
     560                                        td.setAttribute("width", colSizes[1][4]); 
     561                                        td.id = "td_message_followup_search_"+uid_msg; 
     562                                        td.setAttribute("class","search-result-item"); 
     563                                        td1 = '<div class="flag-edited" style="width:8px;height:6px;"><img src="../prototype/modules/mail/img/flagEditor.png"></div>'; 
     564                                                         
     565                                        $(td).click(function(event, ui){         
     566                                                var messageClickedId = $(this).attr('id').match(/td_message_followup_search_([\d]+)/)[1]; 
    551567                                                 
    552                                 $(td).click(function(event, ui){         
    553                                         var messageClickedId = $(this).attr('id').match(/td_message_followup_search_([\d]+)/)[1]; 
     568                                                var followupColor = $('tr[role="'+messageClickedId+'_'+mailbox+'"] #td_message_followup_search_' + messageClickedId).find(".flag-edited").css('backgroundColor'); 
     569                                                 
     570                                                $('tr[role="'+messageClickedId+'_'+mailbox+'"] #td_message_followup_search_' + messageClickedId).find(".flag-edited") 
     571                                                .html('<img alt="Carregando" title="Carregando" style="margin-left:-3px; margin-top:-4px; width:13px; height:13px;" src="../prototype/modules/mail/img/ajax-loader.gif" />');    
     572                                                         
     573                                                $('tr[role="'+messageClickedId+'_'+mailbox+'"] #td_message_followup_search_' + messageClickedId).find(".flag-edited").css("background", "transparent"); 
     574                         
     575                                                /**TODO Alterar após melhorias no filtro da camada javascript*/ 
     576                                                DataLayer.remove('followupflagged', false); 
     577                                                var flagged = DataLayer.get('followupflagged', {filter: [ 
     578                                                        'AND',  
     579                                                        ['=', 'messageNumber', messageClickedId],  
     580                                                        ['=', 'folderName', mailbox] 
     581                                                ]}); 
     582                                                if(flagged == '' || flagged == [] || flagged == 'undefined'){ 
     583                                                        /** 
     584                                                        * Aplica followupflag de Acompanhamento 
     585                                                        */ 
     586                                                        aux.followupflagged = { 
     587                                                                uid : User.me.id, 
     588                                                                folderName : mailbox,  
     589                                                                messageNumber : messageClickedId,  
     590                                                                alarmTime : false,  
     591                                                                backgroundColor : '#FF2016', 
     592                                                                followupflagId: '1' 
     593                                                        }; 
    554594                                         
    555                                         var followupColor = $('tr[role="'+messageClickedId+'_'+mailbox+'"] #td_message_followup_search_' + messageClickedId).find(".flag-edited").css('backgroundColor'); 
    556                                          
    557                                         $('tr[role="'+messageClickedId+'_'+mailbox+'"] #td_message_followup_search_' + messageClickedId).find(".flag-edited") 
    558                                         .html('<img alt="Carregando" title="Carregando" style="margin-left:-3px; margin-top:-4px; width:13px; height:13px;" src="../prototype/modules/mail/img/ajax-loader.gif" />');    
    559                                                  
    560                                         $('tr[role="'+messageClickedId+'_'+mailbox+'"] #td_message_followup_search_' + messageClickedId).find(".flag-edited").css("background", "transparent"); 
    561                  
    562                                         /**TODO Alterar após melhorias no filtro da camada javascript*/ 
    563                                         DataLayer.remove('followupflagged', false); 
    564                                         var flagged = DataLayer.get('followupflagged', {filter: [ 
    565                                                 'AND',  
    566                                                 ['=', 'messageNumber', messageClickedId],  
    567                                                 ['=', 'folderName', mailbox] 
    568                                         ]}); 
    569                                         if(flagged == '' || flagged == [] || flagged == 'undefined'){ 
    570                                                 /** 
    571                                                 * Aplica followupflag de Acompanhamento 
    572                                                 */ 
    573                                                 aux.followupflagged = { 
    574                                                         uid : User.me.id, 
    575                                                         folderName : mailbox,  
    576                                                         messageNumber : messageClickedId,  
    577                                                         alarmTime : false,  
    578                                                         backgroundColor : '#FF2016', 
    579                                                         followupflagId: '1' 
    580                                                 }; 
    581                                  
    582                                                 aux.followupflagged.id = DataLayer.put('followupflagged', aux.followupflagged); 
    583                                                 DataLayer.commit(false, false, function(data){ 
    584                                                         var fail = false; 
    585                                                         $.each(data, function(index, value) { 
    586                                                                 fail = false; 
    587                                                                 if(typeof value === 'string'){ 
    588                                                                         fail = value; 
     595                                                        aux.followupflagged.id = DataLayer.put('followupflagged', aux.followupflagged); 
     596                                                        DataLayer.commit(false, false, function(data){ 
     597                                                                var fail = false; 
     598                                                                $.each(data, function(index, value) { 
     599                                                                        fail = false; 
     600                                                                        if(typeof value === 'string'){ 
     601                                                                                fail = value; 
     602                                                                        } 
     603                                                                }); 
     604                                                                 
     605                                                                $('tr[role="'+messageClickedId+'_'+mailbox+'"] #td_message_followup_search_' + messageClickedId).find(".flag-edited") 
     606                                                                .html('<img src="../prototype/modules/mail/img/flagEditor.png">'); 
     607                                                                 
     608                                                                if (fail) { 
     609                                                                     
     610                                                                    var isCurrentFolder = current_folder == mailbox ? '#td_message_followup_' + messageClickedId + ', ' : '';    
     611                                                                    $(isCurrentFolder + 'tr[role="'+messageClickedId+'_'+mailbox+'"] #td_message_followup_search_' + messageClickedId).find(".flag-edited").css("background", "#CCCCCC"); 
     612                                                                    MsgsCallbackFollowupflag[fail](); 
     613                                                                    return false; 
     614                                                                } 
     615                                                                 
     616                                                                if(current_folder == mailbox){ 
     617                                                                        $('#td_message_followup_' + messageClickedId + ', ' +  
     618                                                                        'tr[role="'+messageClickedId+'_'+mailbox+'"] #td_message_followup_search_' + messageClickedId).attr('title', get_lang('Follow up')).find(".flag-edited").css("background", aux.followupflagged.backgroundColor);         
     619                                                                }else{                                                           
     620                                                                        $('tr[role="'+messageClickedId+'_'+mailbox+'"] #td_message_followup_search_' + messageClickedId).attr('title', get_lang('Follow up')).find(".flag-edited").css("background", aux.followupflagged.backgroundColor);               
     621                                                                }                                                                
     622                                                                updateCacheFollowupflag(messageClickedId, mailbox, true); 
     623                                                        }); 
     624 
     625                                                         
     626                                                }else if(onceOpenedHeadersMessages[mailbox][messageClickedId]['followupflagged'].followupflag.name == 'Follow up'){ 
     627                                                        /** 
     628                                                        * Remover followupflag de Acompanhamento (DFD0078:RI25) 
     629                                                        */ 
     630                                                        $(this).find(".flag-edited").css("background", "#cccccc"); 
     631                                                        DataLayer.remove('followupflagged', flagged[0].id ); 
     632                                                        DataLayer.commit(false, false, function(){ 
     633                                                                $('tr[role="'+messageClickedId+'_'+mailbox+'"] #td_message_followup_search_' + messageClickedId).find(".flag-edited") 
     634                                                                .html('<img src="../prototype/modules/mail/img/flagEditor.png">'); 
     635                                                                if(current_folder == mailbox){ 
     636                                                                        updateCacheFollowupflag(messageClickedId, mailbox, false); 
     637                                                                 
     638                                                                        $('#td_message_followup_' + messageClickedId + ', ' +  
     639                                                                          'tr[role="'+messageClickedId+'_'+mailbox+'"] #td_message_followup_search_' + messageClickedId).attr('title', '').find(".flag-edited").css("background", '#CCC'); 
     640                                                                         
     641                                                                        $('#td_message_followup_' + messageClickedId + ', ' +  
     642                                                                                'tr[role="'+messageClickedId+'_'+mailbox+'"] #td_message_followup_search_' + messageClickedId).find(".flag-edited") 
     643                                                                                .find("img").attr("src", "../prototype/modules/mail/img/flagEditor.png").css("margin-left","0");                         
     644                                                                }else{ 
     645                                                                        updateCacheFollowupflag(messageClickedId, mailbox, false); 
     646                                                                         
     647                                                                        $('tr[role="'+messageClickedId+'_'+mailbox+'"] #td_message_followup_search_' + messageClickedId).attr('title', '').find(".flag-edited").css("background", '#CCC'); 
     648                                                                         
     649                                                                        $('tr[role="'+messageClickedId+'_'+mailbox+'"] #td_message_followup_search_' + messageClickedId).find(".flag-edited") 
     650                                                                                .find("img").attr("src", "../prototype/modules/mail/img/flagEditor.png").css("margin-left","0"); 
    589651                                                                } 
    590652                                                        }); 
    591                                                          
     653 
     654                                                } else { 
    592655                                                        $('tr[role="'+messageClickedId+'_'+mailbox+'"] #td_message_followup_search_' + messageClickedId).find(".flag-edited") 
    593656                                                        .html('<img src="../prototype/modules/mail/img/flagEditor.png">'); 
    594                                                          
    595                                                         if (fail) { 
    596                                                              
    597                                                             var isCurrentFolder = current_folder == mailbox ? '#td_message_followup_' + messageClickedId + ', ' : '';    
    598                                                             $(isCurrentFolder + 'tr[role="'+messageClickedId+'_'+mailbox+'"] #td_message_followup_search_' + messageClickedId).find(".flag-edited").css("background", "#CCCCCC"); 
    599                                                             MsgsCallbackFollowupflag[fail](); 
    600                                                             return false; 
    601                                                         } 
    602                                                          
    603                                                         if(current_folder == mailbox){ 
    604                                                                 $('#td_message_followup_' + messageClickedId + ', ' +  
    605                                                                 'tr[role="'+messageClickedId+'_'+mailbox+'"] #td_message_followup_search_' + messageClickedId).attr('title', get_lang('Follow up')).find(".flag-edited").css("background", aux.followupflagged.backgroundColor);         
    606                                                         }else{                                                           
    607                                                                 $('tr[role="'+messageClickedId+'_'+mailbox+'"] #td_message_followup_search_' + messageClickedId).attr('title', get_lang('Follow up')).find(".flag-edited").css("background", aux.followupflagged.backgroundColor);               
    608                                                         }                                                                
    609                                                         updateCacheFollowupflag(messageClickedId, mailbox, true); 
    610                                                 }); 
    611  
    612                                                  
    613                                         }else if(onceOpenedHeadersMessages[mailbox][messageClickedId]['followupflagged'].followupflag.name == 'Follow up'){ 
    614                                                 /** 
    615                                                 * Remover followupflag de Acompanhamento (DFD0078:RI25) 
    616                                                 */ 
    617                                                 $(this).find(".flag-edited").css("background", "#cccccc"); 
    618                                                 DataLayer.remove('followupflagged', flagged[0].id ); 
    619                                                 DataLayer.commit(false, false, function(){ 
    620                                                         $('tr[role="'+messageClickedId+'_'+mailbox+'"] #td_message_followup_search_' + messageClickedId).find(".flag-edited") 
    621                                                         .html('<img src="../prototype/modules/mail/img/flagEditor.png">'); 
    622                                                         if(current_folder == mailbox){ 
    623                                                                 updateCacheFollowupflag(messageClickedId, mailbox, false); 
    624                                                          
    625                                                                 $('#td_message_followup_' + messageClickedId + ', ' +  
    626                                                                   'tr[role="'+messageClickedId+'_'+mailbox+'"] #td_message_followup_search_' + messageClickedId).attr('title', '').find(".flag-edited").css("background", '#CCC'); 
    627                                                                  
    628                                                                 $('#td_message_followup_' + messageClickedId + ', ' +  
    629                                                                         'tr[role="'+messageClickedId+'_'+mailbox+'"] #td_message_followup_search_' + messageClickedId).find(".flag-edited") 
    630                                                                         .find("img").attr("src", "../prototype/modules/mail/img/flagEditor.png").css("margin-left","0");                         
    631                                                         }else{ 
    632                                                                 updateCacheFollowupflag(messageClickedId, mailbox, false); 
    633                                                                  
    634                                                                 $('tr[role="'+messageClickedId+'_'+mailbox+'"] #td_message_followup_search_' + messageClickedId).attr('title', '').find(".flag-edited").css("background", '#CCC'); 
    635                                                                  
    636                                                                 $('tr[role="'+messageClickedId+'_'+mailbox+'"] #td_message_followup_search_' + messageClickedId).find(".flag-edited") 
    637                                                                         .find("img").attr("src", "../prototype/modules/mail/img/flagEditor.png").css("margin-left","0"); 
    638                                                         } 
    639                                                 }); 
    640  
     657                                                        $('tr[role="'+messageClickedId+'_'+mailbox+'"] #td_message_followup_search_' + messageClickedId).find(".flag-edited").css("background", followupColor); 
     658                                                        $(this).parents('[role="'+messageClickedId+'_'+mailbox+'"]').attr('class', 'selected_msg').find(':checkbox').trigger('click'); 
     659                                                        configureFollowupflag(); 
     660                                                } 
     661                                                //if(!){} 
     662 
     663                                        });              
     664                                }                
     665                        } 
     666                        if (j == 5) 
     667                        { 
     668                                if(border_id.split("local").length == 1){ 
     669                                        td.setAttribute("width", colSizes[1][5]); 
     670                                        td.id = "td_message_labels_search_"+uid_msg; 
     671                                        td.setAttribute("class","td-label-search");                              
     672                                         
     673                                        if (aux.labels) { 
     674                                                td1 = '<img src="../prototype/modules/mail/img/tag.png">'; 
     675                                                updateLabelsColumn(aux)          
    641676                                        } else { 
    642                                                 $('tr[role="'+messageClickedId+'_'+mailbox+'"] #td_message_followup_search_' + messageClickedId).find(".flag-edited") 
    643                                                 .html('<img src="../prototype/modules/mail/img/flagEditor.png">'); 
    644                                                 $('tr[role="'+messageClickedId+'_'+mailbox+'"] #td_message_followup_search_' + messageClickedId).find(".flag-edited").css("background", followupColor); 
    645                                                 $(this).parents('[role="'+messageClickedId+'_'+mailbox+'"]').attr('class', 'selected_msg').find(':checkbox').trigger('click'); 
    646                                                 configureFollowupflag(); 
     677                                                td1 = ''; 
    647678                                        } 
    648                                         //if(!){} 
    649  
    650                                 });                              
    651                         } 
    652                         if (j == 5) 
    653                         { 
    654                                 td.setAttribute("width", colSizes[1][5]); 
    655                                 td.id = "td_message_labels_search_"+uid_msg; 
    656                                 td.setAttribute("class","td-label-search");                              
    657                                  
    658                                 if (aux.labels) { 
    659                                         td1 = '<img src="../prototype/modules/mail/img/tag.png">'; 
    660                                         updateLabelsColumn(aux)          
    661                                 } else { 
    662                                         td1 = ''; 
    663679                                } 
    664680                        } 
     
    735751                                td.onclick              = _onclick; 
    736752 
    737                                 if( validate_date( aux.udate ) ) 
    738                                 { 
     753                                if(validate_date(new String(aux.udate))){ 
    739754                                        var td1 = aux.udate; 
    740755                                } 
     
    12561271                if(typeof(Data.data_gears)=="undefined") 
    12571272                        EsearchE.show_paging( Data['num_msgs'] ); 
     1273 
     1274                Data = null; 
     1275                data = null; 
    12581276        } 
    12591277 
     
    12751293        { 
    12761294                var sel = Element("sel_search_nm_box1"); 
     1295                this.name_box_search = folder.id; 
    12771296                 
    12781297                if (!proxy_mensagens.is_local_folder(this.name_box_search)) 
     
    12981317                                name_box_def = this.name_box_search.substr(final_pos+1); 
    12991318                        } 
    1300                         else 
    1301                                 name_box_def = this.name_box_search.substr(6);//Retira o 'local_' 
     1319                        else { 
     1320                                name_box_def = folder.caption + " (local)"; //this.name_box_search.substr(6);//Retira o 'local_' 
     1321                        } 
    13021322                } 
    13031323                 
     
    14901510                        if (preferences.use_local_messages == 1) 
    14911511                        { 
    1492                                 temp = expresso_local_messages.list_local_folders(); 
    1493                                 for (var x in temp) 
    1494                                 { 
    1495                                         local_folders.push(temp[x][0]); 
    1496                                 } 
     1512                                local_folders[0] = ""; //se local_folders[0] estiver vazio, busca em todas as pastas 
    14971513                        } 
    14981514                } 
     
    15661582                        { 
    15671583                                expresso_local_messages.setSortType('SORTDATE'); 
    1568                                 tmp = expresso_local_messages.search( local_folders, fields ); 
     1584                                //tmp = expresso_local_messages.search( local_folders, fields ); 
     1585                                expresso_mail_archive.search(local_folders, fields); 
     1586                                tmp = expresso_mail_archive.search_queryresult; 
    15691587                        } 
    15701588 
     
    15751593                        } 
    15761594 
    1577                         if ( tmp.length > 0 ) 
    1578                         { 
    1579                                 allMsg['gears_num_msgs'] = tmp.length ; 
     1595                        if (tmp) { 
     1596                                if ( tmp.length > 0 ) 
     1597                                { 
     1598                                        allMsg['gears_num_msgs'] = tmp.length ; 
     1599                                } 
     1600                        } else { 
     1601                                allMsg['gears_num_msgs'] = 0; 
    15801602                        } 
    15811603 
     
    15861608                        else 
    15871609                        { 
    1588                                 if( ( tmp.length > 0) && ( !data['num_msgs'] ) )  
     1610                                if( ( tmp && tmp.length > 0) && ( !data['num_msgs'] ) )  
    15891611                                { 
    15901612                                        EsearchE.viewLocalMessage(); 
     
    15961618                                                EsearchE.func_clean(); 
    15971619                                        } 
    1598                                          
    15991620                                        write_msg( count + " " + get_lang("results found") ); 
    16001621                                         
     
    16461667        searchE.prototype.quickSearchMail = function(value, page, sort, border_id) 
    16471668        { 
    1648                 var local_folders = new Array(); 
     1669                var local_folders = new Array; 
    16491670                var temp; 
    16501671                var not_found_corrent_folder = true; 
     
    16571678                } 
    16581679                 
     1680                //Inserido valor vazio no array para representar todas as pastas locais 
    16591681                if (preferences.use_local_messages == 1) 
    1660                 { 
    1661                         temp = expresso_local_messages.list_local_folders(); 
    1662                         for (var x in temp) 
    1663                         { 
    1664                                 local_folders.push(temp[x][0]); 
    1665                         } 
    1666                 } 
     1682                        local_folders.push(""); 
    16671683 
    16681684                this.sort               = sort || this.sort || "SORTDATE"; 
     
    17111727                            write_msg( "pesquisando " + labels[0] + link, true ); 
    17121728                            var keepFilled = false; 
    1713                              
     1729                            //Inserida variável de controle para correta manipulação das mensagens locais 
     1730                            var local_messages_link = true; 
    17141731 
    17151732                            var handler = function( data ) 
     
    17231740                                        }; 
    17241741 
    1725                                         // Gears - local 
    1726                                         if ( local_folders.length > 0 ){ 
    1727                                                 expresso_local_messages.setSortType('SORTDATE'); 
    1728                                                 var tmp = expresso_local_messages.search( local_folders, "##ALL <=>" + url_encode(value) + "##" );  
    1729  
    1730                                                 if( tmp.length > 0 ) 
    1731                                                         if( !allMsg['num_msgs'] ){ 
    1732                                                                 clean_msg(); 
    1733                                                             not_found_corrent_folder = false; 
    1734                                                                 if(tmp.length) 
    1735                                                                         allMsg['gears_num_msgs'] = tmp.length; 
    1736                                                         }else 
    1737                                                                 allMsg['gears_num_msgs'] = tmp.length; 
    1738         } 
    1739  
    1740                                         if( !allMsg['num_msgs'] && !url.length && not_found_corrent_folder){ 
    1741                                                 clean_msg(); 
    1742                                                 return EsearchE.viewLocalMessage(); 
    1743                                         } 
     1742                                        //MAILARCHIVER 
     1743                        if(local_messages_link){ //Código executado apenas na primeira vez. 
     1744                                if ( local_folders.length > 0 ){ 
     1745                                    expresso_mail_archive.search_queryresult = null; //Limpa a variável global para não exibir resultados anteriores 
     1746                                    expresso_mail_archive.search(local_folders, "##ALL <=>" + url_encode(value) + "##"); 
     1747                                    tmp = expresso_mail_archive.search_queryresult; 
     1748                                    if(tmp == null){ 
     1749                                        tmp = new Object(); 
     1750                                        tmp.length = 0; 
     1751                                    } 
     1752                                } 
     1753                                EsearchE.localResults = tmp.length; 
     1754 
     1755                                if( tmp.length > 0 ) 
     1756                                { 
     1757                                    allMsg['gears_num_msgs'] = tmp.length ; 
     1758                                } 
     1759                        } 
    17441760 
    17451761                                        if( allMsg['num_msgs'] ) 
     
    17541770                                                        async: true, 
    17551771                                                        success: function(data){ 
     1772                                                                //Inserida variável de controle para correta manipulação das mensagens locais 
     1773                                                                local_messages_link = false; 
    17561774                                                                handler(data); 
    17571775                                                        }, 
     
    17591777                                                                connector.showProgressBar(); 
    17601778                                                        }, 
    1761                                                           complete: function( jqXHR, settings ){ 
     1779                                                        complete: function( jqXHR, settings ){ 
    17621780                                                                connector.hideProgressBar(); 
    17631781                                                        } 
     
    17691787                                         
    17701788                            } 
    1771                              
     1789 
    17721790                            xhr = $.ajax({ 
    17731791                                url: 'controller.php?action='+url.shift(), 
  • trunk/expressoMail1_2/js/wfolders.js

    r6910 r7414  
    9797                winSaveFile.next().css("background-color", "#E0EEEE"); 
    9898                         
     99                /*Insere a árvore de diretórios*/ 
    99100                var foldersTree = jQuery("#foldertree-container-sendFileMessage") 
    100101                .removeClass('empty-container') 
    101                 .html(DataLayer.render(BASE_PATH + 'api/templates/foldertree.ejs', {folders: [cp_tree1, cp_tree2, [] ]})) 
     102                //Adicionado parametro cp_tree3 para mensagens locais (MailArchiver) 
     103                .html(DataLayer.render(BASE_PATH + 'api/templates/foldertree.ejs', {folders: [cp_tree1, cp_tree2, cp_tree3 ]})) 
    102104                .find("#foldertree").treeview() 
    103105                .click(function(event) 
  • trunk/expressoMail1_2/setup/phpgw_pt-br.lang

    r7354 r7414  
    937937One of his messages can not be marked as read, because it contains a read confirmation. expressoMail1_2 pt-br   Uma de suas mensagens não pode ser marcada como lida, pois contém uma confirmação de leitura. 
    938938 of its messages could not be marked as read, because it contains a read confirmation.  expressoMail1_2 pt-br    de suas mensagens não puderam ser marcadas como lida, pois contém uma confirmação de leitura. 
    939 Cant share with yourself.       expressoMail1_2 pt-br   Não é possível compartilhar com você mesmo.  
     939Cant share with yourself.       expressoMail1_2 pt-br   Não é possível compartilhar com você mesmo. 
     940You can not remove the message with the preference 'Send to Trash' enabled. There is no permission to move messages to the trash folder.        expressoMail1_2 pt-br   Não é possível remover a mensagem com a preferencia 'Enviar para lixeira' ativada. Não existe permissão para mover mensagens para a pasta lixeira. 
     941Moving message %1 of %2 expressoMail1_2 pt-br   Movendo mensagem %1 de %2 
     942All done. Message(s) moved successfully expressoMail1_2 pt-br   Concluído. Mensagem(ns) movida(s) com sucesso. 
     943Starting to move messages       expressoMail1_2 pt-br   Iniciando a movimentação de mensagens 
     944MailArchiver does not seems to be running or installed at this workstation, local messages are disabled. Check it out!  expressoMail1_2 pt-br   O MailArchiver não parece estar rodando ou instalado nesta estação de trabalho, as mensagens locais estão desativadas. Verifique! 
     945Starting to unarchive messages  expressoMail1_2 pt-br   Iniciando o desarquivamento de mensagens 
     946Messages successfully unarchived        expressoMail1_2 pt-br   Mensagens desarquivadas com sucesso 
     947All done. End of archive messages operation     expressoMail1_2 pt-br   Concluído. Operação de arquivamento encerrada 
     948No messages were unarchived     expressoMail1_2 pt-br   Nenhuma mensagem foi desarquivada 
     949Some messages weren't successfully unarchived   expressoMail1_2 pt-br   Algumas mensagens não puderam ser desarquivadas 
     950Coudn't unarchive message       expressoMail1_2 pt-br   Não foi possível desarquivar mensagem 
     951Message successfully unarchived expressoMail1_2 pt-br   Mensagem desarquivada com sucesso 
     952Unarchiving message %1 of %2    expressoMail1_2 pt-br   Desarquivando mensagem %1 de %2 
     953Message %1 of %2 successfully archived  expressoMail1_2 pt-br   Mensagem %1 de %2 arquivada com sucesso 
     954Sorry, but Mail Archiver does not seems to be running or installed at this workstation. By now, we are turning off local messages!      expressoMail1_2 pt-br   Desculpe, mas o Mail Archiver não parece estar rodando ou instalado nesta estação de trabalho. De momento, estamos desativando as mensagens locais! 
     955Sorry, but Mail Archiver still seems to be sleeping. Check out your system services!    expressoMail1_2 pt-br   Desculpe, mas o Mail Archiver parece continuar offline. Verifique os serviços do seu sistema! 
  • trunk/expressoMail1_2/templates/default/main.css

    r7398 r7414  
    130130.context-menu-item.icon-delete-box{ background-image: url(images/user_delete.png); } 
    131131.context-menu-item.icon-quick-search-contact{ background-image: url(images/zoom.png); } 
     132/* Airton. Adicionando o ícone da opção de arquivar do menu de contexto do expressoMail */ 
     133.context-menu-item.icon-archive{ background-image: url(images/archive.png); } 
    132134 
    133135 
     
    15861588        cursor: text; 
    15871589} 
     1590 
     1591/* Mail Archive */ 
     1592.local-folder { 
     1593 
     1594} 
     1595 
     1596.local-connect { 
     1597        width: 16px; 
     1598        height: 16px; 
     1599        background: url("images/connect_delete.gif") no-repeat; 
     1600        display: inline-block; 
     1601        cursor: pointer; 
     1602} 
     1603 
     1604.local-admin { 
     1605        width: 16px; 
     1606        height: 16px; 
     1607        background: url("images/config.png") no-repeat; 
     1608        display: inline-block; 
     1609        cursor: pointer; 
     1610} 
  • trunk/prototype/modules/attach_message/attach_message.js

    r7048 r7414  
    268268 
    269269        success: function( data ){ 
    270  
    271                 data = adaptOffline( data ); 
    272  
    273270                var tree1 = new Array(); 
    274271                var tree2 = new Array(); 
  • trunk/prototype/modules/mail/js/foldertree.js

    r7091 r7414  
    44var cp_tree1; 
    55var cp_tree2; 
     6//Marcosw início 
     7var cp_tree3; 
     8//Marcosw fim 
     9var mail_archive_url; 
    610function unorphanize(root, element) { 
    7         var ok = false; 
    8         var f = 0; 
    9         for (var i=0; i<root.length; i++) { 
    10                 if (root[i].id == element.parentFolder) { 
    11                         element.children = new Array();  
    12                         root[i].children.push(element); 
    13                         return true; 
    14                 } else if (ok = unorphanize(root[i].children, element)) { 
    15                         break; 
    16                 } 
    17         } 
    18         return ok; 
     11    var ok = false; 
     12    var f = 0; 
     13    for (var i=0; i<root.length; i++) { 
     14        if (root[i].id == element.parentFolder) { 
     15            element.children = new Array();  
     16            root[i].children.push(element); 
     17            return true; 
     18        } else if (ok = unorphanize(root[i].children, element)) { 
     19            break; 
     20        } 
     21    } 
     22    return ok; 
    1923} 
    2024 
     25function mount_children_localfolders_list(folder){  
     26    folder.children = new Array(); 
     27    folder.id_search = folder.id; 
     28    folder.id = 'local_messages_'+folder.id, 
     29    folder.commonName =  folder.name, 
     30    folder.parentId = folder.parentid, 
     31    folder.type = 'localFolder', 
     32    folder.name = folder.id, 
     33    folder.messageCount = { 
     34                             total: folder.messages, 
     35                             unseen: folder.unseen 
     36                          } 
     37 
     38    if(folder.haschild){ 
     39        expresso_mail_archive.getFoldersList(folder.id_search); 
     40        folder.children = expresso_mail_archive.folders; 
     41 
     42        for(var i = 0; i < folder.children.length; i++){ 
     43            mount_children_localfolders_list(folder.children[i]); 
     44        } 
     45 
     46    } 
     47} 
     48 
    2149function count_unseen_children(folder){ 
    22         if(folder.children.length){ 
    23                 for(var i=0; i< folder.children.length; i++){ 
    24                         if(folder.children[i].children.length) 
    25                                 folder.children[i]['children_unseen'] = (folder.children[i]['children_unseen'] ? folder.children[i]['children_unseen'] : 0) + count_unseen_children(folder.children[i]); 
    26                          
    27                         folder['children_unseen'] = (folder['children_unseen'] ? folder['children_unseen'] : 0)+ (folder.children[i]['children_unseen'] ? folder.children[i]['children_unseen'] : 0) + parseInt(folder.children[i].messageCount.unseen);                         
    28                 } 
    29                 return folder['children_unseen']; 
    30         }else{ 
    31                 return parseInt(folder.messageCount.unseen); 
    32         } 
     50 
     51    if(folder.children.length){ 
     52        for(var i=0; i< folder.children.length; i++){ 
     53             
     54                if(folder.children[i].children.length) 
     55                folder.children[i]['children_unseen'] = (folder.children[i]['children_unseen'] ? folder.children[i]['children_unseen'] : 0) + count_unseen_children(folder.children[i]);     
     56            
     57            folder['children_unseen'] = (folder['children_unseen'] ? folder['children_unseen'] : 0)+ (folder.children[i]['children_unseen'] ? folder.children[i]['children_unseen'] : 0) + parseInt(folder.children[i].messageCount.unseen);             
     58        } 
     59        return folder['children_unseen']; 
     60    } else { 
     61        return parseInt(folder.messageCount.unseen); 
     62    } 
    3363} 
    3464 
    3565function valid_tabs(children_of_this_folder, folder_to_move){ 
    36         var borders_open = $("#border_tr").children(); 
    37  
    38         var error = false; 
    39         for(var i = 1; i <= borders_open.length -2; i ++){ 
    40                 //VERIFICA A CADA FILHO DA PASTA SE ESTA eventNSAGEM E DESTA PASTA 
    41                 $.each(children_of_this_folder, function(index, value){ 
    42                         if($(children_of_this_folder[index]).attr('id') == openTab.imapBox[$(borders_open[i]).find("input[type=hidden]").attr("name")]){ 
    43                                 error = true; 
    44                                 write_msg(get_lang("One or more messages from any sub-folder are open")); 
    45                                 return error; 
    46                                  
    47                         } 
    48                 }); 
    49                 if(error){ 
    50                         return error; 
    51                 } 
    52                 //VERIFICA SE EXISTE NA PASTA A SER MOVIDA 
    53                 if(openTab.imapBox[$(borders_open[i]).find("input[type=hidden]").attr("name")] == folder_to_move){ 
    54                         error = true; 
    55                         write_msg(get_lang("One or more messages from this folder are open")); 
    56                         return error; 
    57                 } 
    58         } 
     66    var borders_open = $("#border_tr").children(); 
     67 
     68    var error = false; 
     69    for(var i = 1; i <= borders_open.length -2; i ++){ 
     70        //VERIFICA A CADA FILHO DA PASTA SE ESTA eventNSAGEM E DESTA PASTA 
     71        $.each(children_of_this_folder, function(index, value){ 
     72            if($(children_of_this_folder[index]).attr('id') == openTab.imapBox[$(borders_open[i]).find("input[type=hidden]").attr("name")]){ 
     73                error = true; 
     74                write_msg(get_lang("One or more messages from any sub-folder are open")); 
     75                return error; 
     76                 
     77            } 
     78        }); 
     79        if(error){ 
     80            return error; 
     81        } 
     82        //VERIFICA SE EXISTE NA PASTA A SER MOVIDA 
     83        if(openTab.imapBox[$(borders_open[i]).find("input[type=hidden]").attr("name")] == folder_to_move){ 
     84            error = true; 
     85            write_msg(get_lang("One or more messages from this folder are open")); 
     86            return error; 
     87        } 
     88    } 
    5989} 
    6090 
    6191function draw_new_tree_folder(callback){ 
    62          
    63         var folders = DataLayer.get("folder", true); 
    64          
    65         if(!selected){ 
    66                 selected = "INBOX"; 
    67         } 
    68         /* 
    69         if( folders ) 
    70         { 
    71             folders = $.map( folders, function( folder ){ 
    72                   return { 
    73                     id: folder.folder_id, 
    74                     commonName: folder.folder_name, 
    75                     parentFolder: folder.folder_parent === "root" ? "" : folder.folder_parent, 
    76                     messageCount: { total : '', unseen : '0' } 
    77                   }; 
    78             }); 
    79         } 
    80         else 
    81             folders = DataLayer.get("folder", true); 
    82         */ 
    83         var tree1 = new Array(); 
    84         var tree2 = new Array(); 
    85         var tree3 = new Array(); 
    86         for (var i=0; i<folders.length; i++) { 
    87                 if (/^INBOX/.test(folders[i].id)) { 
    88                         if (!unorphanize(tree1, folders[i])) { 
    89                                 folders[i].children = new Array(); 
    90                                 tree1.push(folders[i]); 
    91                         } 
    92                 } 
    93                 else if (/^user/.test(folders[i].id)) { 
    94                         if (!unorphanize(tree2, folders[i])) { 
    95                                 folders[i].children = new Array(); 
    96                                 tree2.push(folders[i]); 
    97                         } 
    98                 } 
    99                 else if (/^local_messages/.test(folders[i].id)) { 
    100                         if (!unorphanize(tree3, folders[i])) { 
    101                                 folders[i].children = new Array(); 
    102                                 tree3.push(folders[i]); 
    103                         } 
    104                 } 
    105         } 
    106          
    107         for(var i =0; i<tree1.length; i++){ 
    108                 count_unseen_children(tree1[i]); 
    109         } 
    110         for(var i =0; i<tree2.length; i++){ 
    111                 count_unseen_children(tree2[i]); 
    112         } 
    113         for(var i =0; i<tree3.length; i++){ 
    114                 count_unseen_children(tree3[i]); 
    115         } 
    116         cp_tree1 = tree1; 
    117         cp_tree2 = tree2; 
    118         var shared_acls = {}; 
    119  
    120         $.each(cp_tree2, function(index, value){ 
    121                 shared_acls[value.id] = value.acl_share; 
    122         }); 
    123  
    124         $("#content_folders").removeClass("menu-degrade").parent().removeClass("image-menu"); 
    125         var html = DataLayer.render('../prototype/modules/mail/templates/detailedfoldertree.ejs', {folders: [tree1, tree2, tree3]}); 
    126         var folders_html = $("#content_folders").html(html).find(".mainfoldertree").treeview({ 
    127                         persist: "cookie", 
    128                         animated: "fast" 
    129         }).find(".folder").unbind("click").click(function(event){ 
    130                  
    131                 // MUDANÇA DE PASTAS! 
    132                 var target = $(this);    
    133                  
    134                 if($(".folders-loading").length) 
    135                         return; 
    136                  
    137                 if($(event.target).parent().is(".float-menu")) 
    138                         return; 
    139                          
    140                 if( target.is('.collapsable-hitarea, .expandable-hitarea, .lastCollapsable-hitarea, .lastExpandable-hitarea, .treeview ,.folder_unseen,.ui-icon, .float-menu, .new_folder, .folders-loading, .head_folder, .shared-folders') ) 
    141                         return; 
    142                  
    143                 if( target.parent().find(".new_folder").length) 
    144                         return; 
    145                          
    146                 if( !target.attr('id') ) 
    147                         target = target.parent(); 
    148                 if (target[0] == $(".mainfoldertree")[0]) return; 
    149                 var uiId = target.attr('id'); 
    150                 var child = target.find('.folder'); 
    151                    
    152                 if(!target.is('.mainfoldertree > .expandable-hitarea, .mainfoldertree > .collapsable-hitarea')){ 
    153                         $('.filetree span.folder.selected').removeClass('selected'); 
    154                         $(target).children('.folder').addClass('selected'); 
    155                 } 
    156                 $(this).addClass("folders-loading"); 
    157                 selected = target.attr('id'); 
    158                 change_folder(target.attr('id'), child.attr('title'));   
    159  
    160                 $.ajax({ 
    161                           url : "controller.php?"+ $.param( { action: "$this.imap_functions.get_folders_list", folder: target.attr('id') } ), 
    162                           success : function(data){ 
    163                                   data = connector.unserialize(data); 
    164  
    165                                   if(data) 
    166                                     build_quota(data); 
    167                           } 
    168                 }); 
    169  
    170         }).filter('.followup-messages').click(function(event, ui){ 
    171                 search_emails("UNDELETED KEYWORD \"$Followupflagged\""); 
    172         }).end().end(); 
    173          
    174         folders_html.find('[id="'+selected+'"]').children().addClass("selected"); 
    175         $(".folder").not(".head_folder").not(".shared-folders").parent().find(".folder").not(".head_folder,.inbox,.drafts,.sent,.spam,.trash").draggable({ 
    176                 // DRAG DE PASTAS 
    177                 start : function(){ 
    178                         $(this).css("color", "gray"); 
    179                 }, 
    180                 stop : function(){ 
    181                         $(this).css("color", ""); 
    182                 }, 
    183                 revert: "invalid", 
    184                 helper: function(event){ 
    185                         if($.trim(($(this).text().split("["))[0]).length > 18) 
    186                                 return $(DataLayer.render('../prototype/modules/mail/templates/draggin_box.ejs', {texto : (($(this).text().split("["))[0]).substring(0,18) + "...", type: "folder"})); 
    187                         return $(DataLayer.render('../prototype/modules/mail/templates/draggin_box.ejs', {texto : (($(this).text().split("["))[0]), type: "folder"})); 
    188                 }, 
    189                 delay: 150, 
    190                 refreshPositions: true, 
    191                 zIndex : 2700, 
    192                 //scroll: true,  
    193                 //scrollSensitivity: 100, 
    194                 //scrollSpeed: 100, 
    195                 containment: "#divAppbox"  
    196         }).end().droppable({ 
    197                 //DROP DE PASTAS 
    198                 over : function(a, b){ 
    199                         //INICIO : SE A PASTA CONTER FILHAS EXPANDE  
    200                         over = $(this); 
    201                         $(this).addClass("folder-over"); 
    202                         if(($(this)[0] != $(this).parent().find(".head_folder")[0])) 
    203                                 if($(this).prev()[0]) 
    204                                         if($(this).parent().find(".expandable-hitarea")[0] == $(this).prev()[0]){ 
    205                                                 setTimeout(function(){ 
    206                                                         if(over.hasClass("folder-over")) 
    207                                                                 over.prev().trigger("click"); 
    208                                                 }, 500); 
    209                                                  
    210                                         } 
    211                         //FIM : SE A PASTA CONTER FILHAS EXPANDE 
    212                          
    213                         //SETA BORDA EM VOLTA DA PASTA 
    214                 }, 
    215                 out : function(){ 
    216                         //RETIRA BORDA EM VOLTA DA PASTA 
    217                         $(this).removeClass("folder-over"); 
    218                 }, 
    219                 drop : function(event, ui){ 
    220                         $(this).removeClass("folder-over"); 
    221                         if($(this).parent().attr('id') == undefined){ 
    222                                 var folder_to = 'INBOX'; 
    223                                 var to_folder_title = get_lang("Inbox"); 
    224                         }else{ 
    225                                 var folder_to = $(this).parent().attr('id'); 
    226                                 var to_folder_title = $(this).attr('title'); 
    227                         }                
    228                         var folder_to_move = ui.draggable.parent().attr('id'); 
    229                         var border_id = ui.draggable.find("input[type=hidden]").attr("name"); 
    230                         // eventnsagens : SE O DROP VIER DA LISTA DE eventNSAGENS : 
    231                         if(folder_to_move == "tbody_box"){ 
    232                                 move_msgs2(get_current_folder(), 'selected', 0, folder_to, to_folder_title,true); 
    233                                 return refresh(); 
    234                         } 
    235                         //SE FOR DE UMA PESQUISA RAPIDA 
    236                         else if(ui.draggable.parents('[id^="content_id_"]')[0]){ 
    237                                 move_search_msgs("content_id_"+border_id, folder_to, to_folder_title); 
    238                                 return refresh(); 
    239                         } 
    240                         // eventnsagens : SE O DROP VIER DE UMA ABA ABERTA 
    241                         else if(folder_to_move == "border_tr"){ 
    242                                 var id_msg = border_id.split("_")[0]; 
    243                                 folder = $("#input_folder_"+border_id+"_r")[0] ? $("#input_folder_"+border_id+"_r").val() : (openTab.imapBox[border_id] ? openTab.imapBox[border_id]:get_current_folder()); 
    244                                 alternate_border(border_id); 
    245                                 move_msgs2(folder, id_msg, border_id, folder_to, to_folder_title,true); 
    246                                 return refresh(); 
    247                         } 
    248                         // SE O DROP VIER DA LISTA DE PASTAS 
    249                         else{ 
    250                                 var folder_to_exist = folder_to_move.split(cyrus_delimiter);     
    251                                 folder_to_exist = folder_to+cyrus_delimiter+folder_to_exist[folder_to_exist.length-1]; 
    252                                  
    253                                 //VERIFICA SE EXISTE UMA eventNSAGENS ABERTA NESTA PASTA E NAS SUAS FILHAS 
    254  
    255                                 if(valid_tabs(ui.draggable.parent().find("li"), folder_to_move)){ 
    256                                         return; 
    257                                 } 
    258                                 //FIM : VERIFICA SE EXISTE UMA eventNSAGENS ABERTA NESTA PASTA E NAS SUAS FILHAS; 
    259                                  
    260                                 // VALIDA SE O USUARIO ESTA TENTANDO MOVER A PASTA PARA O eventSMO LOCAL 
    261                                 if(folder_to_exist == folder_to_move){ 
    262                                         return write_msg(get_lang("Thie folder is already in this place")); 
    263                                 } 
    264                                  
    265                                 // VALIDA SE O USUARIO ESTA TENTANDO MOVER A PASTA ABERTA NO momentO 
    266                                 if(folder_to_move == get_current_folder()){ 
    267                                         return write_msg(get_lang("It's not possible move this folder, because it is being used in the moment!")); 
    268                                 } 
    269                                  
    270                                 // VALIDA SE O USUARIO ESTA TENTANDO MOVER UMA PASTA FILHA DA PASTA ABERTA NO momentO 
    271                                 if(ui.draggable.parent().find(".selected")[0]){ 
    272                                         return write_msg(get_lang("It's not possible move this folder, because its subfolder is being used in the moment!")); 
    273                                 } 
    274                                  
    275                                 // VALIDA SE O USUARIO ESTA TENTANDO MOVER UMA PASTA PAI PARA DENTRO DE UMA FILHA 
    276                                 if(ui.draggable.parent().find('[id="'+folder_to+'"]')[0]){ 
    277                                         return write_msg(get_lang("It's not possible to move this folder to its subfolders!")); 
    278                                 }                                        
    279                                  
    280                                 if($('[id="'+folder_to_exist+'"]').length){ 
    281                                         return write_msg(get_lang("Can not move this folder to this location, because the target has already a folder with this name")); 
    282                                 } 
    283                                  
    284                                 $(this).addClass("folders-loading"); 
    285                                  
    286                                 $.ajax({ 
    287                                         url : "controller.php?"+ $.param( { action: "$this.imap_functions.move_folder", folder_to_move: folder_to_move, folder_to: folder_to } ), 
    288                                         success : function(data){ 
    289                                                 cExecute("$this.imap_functions.get_folders_list&onload=true", update_menu); 
    290                                                 data = connector.unserialize(data); 
    291                                                 if(data == "Permission denied"){ 
    292                                                         write_msg(get_lang("Permission denied")); 
    293                                                 }else if(data){ 
    294                                                         write_msg(get_lang("The folder was successfully moved")); 
    295                                                 } 
    296                                                 else{ 
    297                                                         write_msg(get_lang("ERROR moving your folder.")); 
    298                                                 } 
    299                                         } 
    300                                 }); 
    301                         } 
    302                 } 
    303         }); 
    304         $(".folder").not(".shared-folders").parent().find(".folder").hover( 
    305                 function(){ 
    306                         //CASO A LI NÃO TENHA UM eventNU FLUTUANTE AINDA, O eventNU É ADICIONADO! 
    307                         if(!$(this).children(":last").hasClass("float-menu") && !$(this).children(":last").hasClass("new_folder")){ 
    308                                 var folder_ = $(this); 
    309                                 var folder_name; 
    310                                 var shared = { 
    311                                         head : false, 
    312                                         valid : false 
    313                                 }; 
    314                                 if(folder_.parent().attr('id')){ 
    315                                         folder_name = folder_.parent().attr('id').split(cyrus_delimiter); 
    316                                         folder_name = folder_name[folder_name.length -1]; 
    317                                         shared.valid = folder_.parent().attr('id').search("user/") == 0 ? true : false; 
    318                                 }else 
    319                                         folder_name = "Root"; 
    320                                  
    321                                 if(shared.valid){ 
    322                                         shared.head = folder_.parent().attr('id').split(cyrus_delimiter).length == 2 ?  true : false; 
    323                                         var folder_name_parts = folder_.parent().attr('id').split(cyrus_delimiter); 
    324                                         var acls = shared_acls[folder_name_parts[0]+cyrus_delimiter+folder_name_parts[1]]; 
    325  
    326                                 } 
    327  
    328                                 html = DataLayer.render("../prototype/modules/mail/templates/float_folder_menu.ejs", {name_folder : folder_name, flag : shared, acl : acls});                                    
    329                                         //FUNÇÃO DO eventNU FLUTUANTE EDITAR < BEGIN 
    330                                 var esc = false; 
    331                                 $(folder_).append(html).find(".float-menu-edit").click(function(){ 
    332                                         var folder_id = $(this).parents(".closed:first").attr('id'); 
    333                                         var name = $.trim($(this).parents(".closed:first").find("span:first").text().split("[")[0]); 
    334                                         if($(this).parents(".closed:first").find("span:first").hasClass("selected")) 
    335                                                 return write_msg(get_lang("It's not possible rename this folder, because it is being used in the moment!")); 
    336                                         if($(this).parents(".closed:first").find(".selected").length) 
    337                                                 return write_msg(get_lang("It's not possible rename this folder, because its subfolder is being used in the moment!"));  
    338                                         if(valid_tabs($(this).parents("li:first").find("li"), folder_id)) 
    339                                                 return; 
    340                                         $(this).parents(".closed:first").find("span:first").empty().append("<input class='new_folder folder' type='text' maxlength='100'></input>"); 
    341                                         $(".new_folder").focus().keydown(function(event){ 
    342                                                 event.stopPropagation(); 
    343                                                 if(event.keyCode == 13){ 
    344                                                         if($(this).val() != ""){ 
    345                                                                 if($(this).val().match(/[\/\`\~\^\<\>\|\\\"\!\@\#\$\%\&\*\+\(\)\[\]\{\}\?;:]/gi)){ 
    346                                                                         return write_msg(get_lang("cannot create folder. try other folder name")); 
    347                                                                 } 
    348                                                                 var new_name = folder_id.replace(/[a-zA-Z0-9á-úÁ-Ú^\s_-]+$/, $(this).val()); 
    349                                                                 if($('[id="'+new_name+'"]').length){ 
    350                                                                         $(".folders-loading").removeClass("folders-loading"); 
    351                                                                         write_msg(get_lang("Mailbox already exists")); 
    352                                                                         return draw_new_tree_folder(); 
    353                                                                 } 
    354                                                                 $(".new_folder").parent().addClass("folders-loading"); 
    355                                                                 $.ajax({ 
    356                                                                         url : "controller.php?action=$this.imap_functions.ren_mailbox", 
    357                                                                         type : "POST", 
    358                                                                         data : "current="+folder_id+"&rename="+new_name, 
    359                                                                         success : function(data){ 
    360                                                                                 data = connector.unserialize(data); 
    361                                                                                 if(data == "Permission denied"){ 
    362                                                                                         $(".folders-loading").removeClass("folders-loading"); 
    363                                                                                         cExecute("$this.imap_functions.get_folders_list&onload=true", update_menu); 
    364                                                                                         return write_msg(get_lang("Permission denied")); 
    365                                                                                 } 
    366                                                                                 write_msg(get_lang("The folder was successfully rename")); 
    367                                                                                 cExecute("$this.imap_functions.get_folders_list&onload=true", update_menu); 
    368                                                                         } 
    369                                                                 }); 
    370                                                         }else{ 
    371                                                                 $(".new_folder").focusout(); 
    372                                                         } 
    373                                                 }else if( event.keyCode == 27){ 
    374                                                         draw_new_tree_folder(); 
    375                                                 } 
    376                                         }).focusout(function(){ 
    377                                                 draw_new_tree_folder(); 
    378                                         }).val(name); 
    379                                 }) 
    380                                 //FUNÇÃO DO eventNU FLUTUANTE EDITAR < END 
    381                                 //FUNÇÃO DO eventNU FLUTUANTE EXCLUIR < BEGIN 
    382                                 .end().find(".float-menu-remove").click(function(){ 
    383                                          
    384                                         var folder_id = $(this).parents(".closed:first").attr('id'); 
    385                                         var folder_name = "<strong>"+$.trim($(this).parents(".closed:first").find(".folder").text().split("[")[0])+"</strong>"; 
    386                                          
    387                                         if(valid_tabs($(this).parents("li:first").find("li"), folder_id)) 
    388                                                 return; 
    389                                         $(this).parents(".closed:first").find(".folder").addClass("folders-loading");  
    390                                          
    391                                         if($(this).parents(".closed:first").find("ul").length){ 
    392                                                 $(this).parents(".closed:first").find(".folder").removeClass("folders-loading"); 
    393                                                 return write_msg(get_lang("Delete/move subfolders first")); 
    394                                         } 
    395                                         if($(this).parents(".closed:first").find(".selected").length){ 
    396                                                 $(this).parents(".closed:first").find(".folder").removeClass("folders-loading"); 
    397                                                 return write_msg(get_lang("It's not possible delete this folder, because it is being used in the moment!"));  
    398                                         } 
    399                                         var folder_span = $(this); 
    400                                         var confirm_text = get_lang("Do you wish to exclude the folder "); 
    401                                         $.Zebra_Dialog(confirm_text+folder_name, { 
    402                                                 'type':     'question', 
    403                                                 'overlay_opacity': '0.5', 
    404                                                 'buttons':  [get_lang('Yes'), get_lang('No')], 
    405                                                 'onClose':  function(caption) { 
    406                                                         if(caption == get_lang('Yes')){ 
    407                                                                 $.ajax({ 
    408                                                                         url : "controller.php?action=$this.imap_functions.delete_mailbox", 
    409                                                                         type: "POST", 
    410                                                                         data : "del_past="+folder_id, 
    411                                                                         success : function(data){ 
    412                                                                                 data = connector.unserialize(data); 
    413                                                                                 if(data == "Mailbox does not exist"){ 
    414                                                                                         $(".folders-loading").removeClass("folders-loading"); 
    415                                                                                         return write_msg(get_lang("Mailbox does not exist")); 
    416                                                                                 }else if(data == "Permission denied"){ 
    417                                                                                         $(".folders-loading").removeClass("folders-loading"); 
    418                                                                                         cExecute("$this.imap_functions.get_folders_list&onload=true", update_menu); 
    419                                                                                         return write_msg(get_lang("Permission denied")); 
    420                                                                                 } 
    421                                                                                 write_msg(get_lang("The folder %1 was successfully removed", folder_name)); 
    422                                                                                 cExecute("$this.imap_functions.get_folders_list&onload=true", update_menu); 
    423                                                                         } 
    424                                                                 }); 
    425                                                         }else{ 
    426                                                                 folder_span.parents(".closed:first").find(".folder").removeClass("folders-loading"); 
    427                                                                 return; 
    428                                                         } 
    429                                                 } 
    430                                         }); 
    431                                         /* if(!confirm(confirm_text + folder_name)){ 
    432                                                 $(this).parents(".closed:first").find(".folder").removeClass("folders-loading"); 
    433                                                 return; 
    434                                         } */ 
    435                                 }) 
    436                                 //FUNÇÃO DO eventNU FLUTUANTE EXCLUIR < END 
    437                                 //FUNÇÃO DO eventNU FLUTUANTE NOVA PASTA < BEGIN 
    438                                 .end().find(".float-menu-new").click(function(){ 
    439                                         $(this).parents(".float-menu").hide(); 
    440                                         var selected_li = $(this).parents(".closed:first"); 
    441                                         if(selected_li.find("ul:first").length){ 
    442                                                 var new_folder = $("<li><input class='new_folder folder' type='text' maxlength='100'></input></li>").appendTo(selected_li.find("ul:first"));                                                             
    443                                                 if(selected_li.find(".expandable-hitarea").length){ 
    444                                                         selected_li.find(".expandable-hitarea").trigger('click'); 
    445                                                 } 
    446                                                 selected_li.find("ul:first").treeview({ 
    447                                                         add: new_folder 
    448                                                 }); 
    449                                         }else if(selected_li.length){ 
    450                                                 var new_folder = $("<ul><li><input class='new_folder folder' type='text' maxlength='100'></input></li></ul>").appendTo(selected_li);                                                             
    451                                                 selected_li.treeview({ 
    452                                                         add: new_folder 
    453                                                 }); 
    454                                         }else{ 
    455                                                 selected_li = $(this).parents(".head_folder").parent(); 
    456                                                 if($(this).parents(".head_folder").parent().find(".expandable-hitarea").length){ 
    457                                                         $(this).parents(".head_folder").parent().find(".expandable-hitarea").trigger('click'); 
    458                                                 } 
    459                                                 var new_folder = $("<ul><li><input class='new_folder folder' type='text' maxlength='100'></input></li></ul>").appendTo(selected_li);                                                             
    460                                                 selected_li.treeview({ 
    461                                                         add: new_folder 
    462                                                 }); 
    463                                         } 
    464                                          
    465                                         selected_li.find(".new_folder").Watermark("Nova Pasta").focus().keydown(function(event){ 
    466                                                 event.stopPropagation(); 
    467                                                 if(event.keyCode == 13){ 
    468                                                         if($(this).val().match(/[\`\~\^\<\>\|\\\"\!\@\#\$\%\&\*\+\(\)\[\]\{\}\?;:]/gi)){ 
    469                                                                 return write_msg(get_lang("cannot create folder. try other folder name")); 
    470                                                         } 
    471                                                         if($('[id="'+ (selected_li.attr('id')? selected_li.attr('id') : "INBOX") + cyrus_delimiter + $(this).val()+'"]').length){ 
    472                                                                 $(".folders-loading").removeClass("folders-loading"); 
    473                                                                 write_msg(get_lang("Mailbox already exists")); 
    474                                                                 return draw_new_tree_folder(); 
    475                                                         } 
    476                                                         $(".new_folder").parent().addClass("folders-loading"); 
    477                                                         create_new_folder(($(this).val() != "" ? $(this).val() : get_lang("New Folder")), (selected_li.attr('id')? selected_li.attr('id') : "INBOX")); 
    478                                                 }else if( event.keyCode == 27){ 
    479                                                         draw_new_tree_folder(); 
    480                                                 } 
    481                                         }).focusout(function(){ 
    482                                                 draw_new_tree_folder(); 
    483                                         }); 
    484                                 }).end().find(".float-menu-export").click(function(){ 
    485                                         //proxy_mensagens.export_all_messages($(this).parents("li:first").attr("id")) 
    486  
    487                                         var name_box = $(this).parents("li:first").attr("id"); 
    488                                         var name_folder = name_box.split(cyrus_delimiter)[name_box.split(cyrus_delimiter).length-1]; 
    489  
    490                                         var hand_export = function(data){ 
    491                                                 if(!data){ 
    492                                                         write_msg(get_lang('Error compressing messages (ZIP). Contact the administrator.')) 
    493                                                 }else if(data["empty_folder"]){ 
    494                                                         write_msg(get_lang("The selected folder is empty.")); 
    495                                                 }else 
    496                                                   download_attachments(null, null, data, null,null, name_folder +'.zip'); 
    497                                         } 
    498                                         cExecute("$this.exporteml.export_all",hand_export,"folder="+name_box);   
    499                                         write_msg(get_lang('You must wait while the messages will be exported...'));             
    500                                 }); 
    501                                 //FUNÇÃO DO eventNU FLUTUANTE NOVA PASTA < END 
    502                         } 
    503                         if(!$(".new_folder").length){ 
    504                                 $(this).find(".float-menu:first").css("display", ""); 
    505                         } 
    506                 }, 
    507                 function(){ 
    508                         $(this).find(".float-menu:first").hide(); 
    509                 } 
    510         ); 
    511         $("#new_m").html($('.selected').find(".folder_unseen").html() ? $('.selected').find(".folder_unseen").html() : "0").css("color", "red"); 
     92    var folders = DataLayer.get("folder", true);     
     93 
     94if(preferences.use_local_messages != 0){ 
     95 
     96    if(expresso_mail_archive.folders && !expresso_offline && expresso_mail_archive.enabled == true) { //MailArchive 
     97        //pega pastas locais do mailarchiver e insere no array de pastas 
     98            expresso_mail_archive.getFoldersList("home"); 
     99            treeFolders = expresso_mail_archive.folders; 
     100 
     101            for(var i=0; i<treeFolders.length; i++ ){ 
     102                mount_children_localfolders_list(treeFolders[i]); 
     103            } 
     104             
     105            for(var i = 0; i < treeFolders.length; i++){ 
     106                folders.push(treeFolders[i]); 
     107            } 
     108  
     109    } 
    512110} 
     111 
     112    if(!selected){ 
     113        selected = "INBOX"; 
     114    } 
     115 
     116    var tree1 = new Array(); 
     117    var tree2 = new Array(); 
     118    var tree3 = new Array(); 
     119    for (var i=0; i<folders.length; i++) { 
     120        if (/^INBOX/.test(folders[i].id)) { 
     121            if (!unorphanize(tree1, folders[i])) { 
     122                folders[i].children = new Array(); 
     123 
     124                tree1.push(folders[i]); 
     125            } 
     126        } 
     127        else if (/^user/.test(folders[i].id)) { 
     128            if (!unorphanize(tree2, folders[i])) { 
     129                folders[i].children = new Array(); 
     130                tree2.push(folders[i]); 
     131            } 
     132        } 
     133        else if (/^local_messages/.test(folders[i].id)) { 
     134            
     135                tree3.push(folders[i]); 
     136             
     137        } 
     138    } 
     139     
     140    for(var i =0; i<tree1.length; i++){ 
     141        count_unseen_children(tree1[i]); 
     142    } 
     143    for(var i =0; i<tree2.length; i++){ 
     144        count_unseen_children(tree2[i]); 
     145    } 
     146    for(var i =0; i<tree3.length; i++){ 
     147        count_unseen_children(tree3[i]); 
     148    } 
     149    cp_tree1 = tree1; 
     150    cp_tree2 = tree2; 
     151    //Marcosw inicio 
     152    cp_tree3 = tree3; 
     153    //Marcosw fim 
     154    var shared_acls = {}; 
     155 
     156    $.each(cp_tree2, function(index, value){ 
     157        shared_acls[value.id] = value.acl_share; 
     158    }); 
     159 
     160    $("#content_folders").removeClass("menu-degrade").parent().removeClass("image-menu"); 
     161    mail_archive_url = mail_archive_protocol + "://" + mail_archive_host + ":" + mail_archive_port + "/admin"; 
     162    var html = DataLayer.render('../prototype/modules/mail/templates/detailedfoldertree.ejs', {folders: [tree1, tree2, tree3]}); 
     163    var folders_html = $("#content_folders").html(html).find(".mainfoldertree").treeview({ 
     164            persist: "cookie", 
     165            animated: "fast" 
     166    }).find(".folder").unbind("click").click(function(event){ 
     167 
     168        if ($(this).next().hasClass("local-connect")) { 
     169            return; 
     170        } 
     171 
     172        if ($(this).hasClass("local-folder")) { 
     173            return; 
     174        } 
     175         
     176        // MUDANÇA DE PASTAS! 
     177        var target = $(this);    
     178         
     179        if($(".folders-loading").length) 
     180            return; 
     181         
     182        if($(event.target).parent().is(".float-menu")) 
     183            return; 
     184             
     185        if( target.is('.collapsable-hitarea, .expandable-hitarea, .lastCollapsable-hitarea, .lastExpandable-hitarea, .treeview ,.folder_unseen,.ui-icon, .float-menu, .new_folder, .folders-loading, .head_folder, .shared-folders') ) 
     186            return; 
     187         
     188        if( target.parent().find(".new_folder").length) 
     189            return; 
     190             
     191        if( !target.attr('id') ) 
     192            target = target.parent(); 
     193        if (target[0] == $(".mainfoldertree")[0]) return; 
     194        var uiId = target.attr('id'); 
     195        var child = target.find('.folder'); 
     196           
     197        if(!target.is('.mainfoldertree > .expandable-hitarea, .mainfoldertree > .collapsable-hitarea')){ 
     198            $('.filetree span.folder.selected').removeClass('selected'); 
     199            $(target).children('.folder').addClass('selected'); 
     200        } 
     201        $(this).addClass("folders-loading"); 
     202        selected = target.attr('id'); 
     203        change_folder(target.attr('id'), child.attr('title'));   
     204 
     205        $.ajax({ 
     206              url : "controller.php?"+ $.param( { action: "$this.imap_functions.get_folders_list", folder: target.attr('id') } ), 
     207              success : function(data){ 
     208                  data = connector.unserialize(data); 
     209 
     210                  if(data) 
     211                    build_quota(data); 
     212              } 
     213        }); 
     214 
     215    }).filter('.followup-messages').click(function(event, ui){ 
     216        search_emails("UNDELETED KEYWORD \"$Followupflagged\""); 
     217    }).end().end(); 
     218     
     219    folders_html.find('[id="'+selected+'"]').children().addClass("selected"); 
     220    $(".folder").not(".head_folder").not(".shared-folders").parent().find(".folder").not(".head_folder,.inbox,.drafts,.sent,.spam,.trash").draggable({ 
     221        // DRAG DE PASTAS 
     222        start : function(){ 
     223            $(this).css("color", "gray"); 
     224        }, 
     225        stop : function(){ 
     226            $(this).css("color", ""); 
     227        }, 
     228        revert: "invalid", 
     229        helper: function(event){ 
     230            if($.trim(($(this).text().split("["))[0]).length > 18) 
     231                return $(DataLayer.render('../prototype/modules/mail/templates/draggin_box.ejs', {texto : (($(this).text().split("["))[0]).substring(0,18) + "...", type: "folder"})); 
     232            return $(DataLayer.render('../prototype/modules/mail/templates/draggin_box.ejs', {texto : (($(this).text().split("["))[0]), type: "folder"})); 
     233        }, 
     234        delay: 150, 
     235        refreshPositions: true, 
     236        zIndex : 2700, 
     237        //scroll: true,  
     238        //scrollSensitivity: 100, 
     239        //scrollSpeed: 100, 
     240        containment: "#divAppbox"  
     241    }).end().droppable({ 
     242        //DROP DE PASTAS 
     243        over : function(a, b){ 
     244            //INICIO : SE A PASTA CONTER FILHAS EXPANDE  
     245            over = $(this); 
     246            $(this).addClass("folder-over"); 
     247            if(($(this)[0] != $(this).parent().find(".head_folder")[0])) 
     248                if($(this).prev()[0]) 
     249                    if($(this).parent().find(".expandable-hitarea")[0] == $(this).prev()[0]){ 
     250                        setTimeout(function(){ 
     251                            if(over.hasClass("folder-over")) 
     252                                over.prev().trigger("click"); 
     253                        }, 500); 
     254                         
     255                    } 
     256            //FIM : SE A PASTA CONTER FILHAS EXPANDE 
     257             
     258            //SETA BORDA EM VOLTA DA PASTA 
     259        }, 
     260        out : function(){ 
     261            //RETIRA BORDA EM VOLTA DA PASTA 
     262            $(this).removeClass("folder-over"); 
     263        }, 
     264        drop : function(event, ui){ 
     265            $(this).removeClass("folder-over"); 
     266            if($(this).parent().attr('id') == undefined){ 
     267                var folder_to = 'INBOX'; 
     268                var to_folder_title = get_lang("Inbox"); 
     269            }else{ 
     270                var folder_to = $(this).parent().attr('id'); 
     271                var to_folder_title = $(this).attr('title'); 
     272            }        
     273            var folder_to_move = ui.draggable.parent().attr('id'); 
     274            var border_id = ui.draggable.find("input[type=hidden]").attr("name"); 
     275            // eventnsagens : SE O DROP VIER DA LISTA DE eventNSAGENS : 
     276            if(folder_to_move == "tbody_box"){ 
     277                move_msgs2(get_current_folder(), 'selected', 0, folder_to, to_folder_title,true); 
     278                return refresh(); 
     279            } 
     280            //SE FOR DE UMA PESQUISA RAPIDA 
     281            else if(ui.draggable.parents('[id^="content_id_"]')[0]){ 
     282                move_search_msgs("content_id_"+border_id, folder_to, to_folder_title); 
     283                return refresh(); 
     284            } 
     285            // eventnsagens : SE O DROP VIER DE UMA ABA ABERTA 
     286            else if(folder_to_move == "border_tr"){ 
     287                var id_msg = border_id.split("_")[0]; 
     288                folder = $("#input_folder_"+border_id+"_r")[0] ? $("#input_folder_"+border_id+"_r").val() : (openTab.imapBox[border_id] ? openTab.imapBox[border_id]:get_current_folder()); 
     289                alternate_border(border_id); 
     290                move_msgs2(folder, id_msg, border_id, folder_to, to_folder_title,true); 
     291                return refresh(); 
     292            } 
     293            // SE O DROP VIER DA LISTA DE PASTAS 
     294            else{ 
     295                var folder_to_exist = folder_to_move.split(cyrus_delimiter);     
     296                folder_to_exist = folder_to+cyrus_delimiter+folder_to_exist[folder_to_exist.length-1]; 
     297                 
     298                //VERIFICA SE EXISTE UMA eventNSAGENS ABERTA NESTA PASTA E NAS SUAS FILHAS 
     299 
     300                if(valid_tabs(ui.draggable.parent().find("li"), folder_to_move)){ 
     301                    return; 
     302                } 
     303                //FIM : VERIFICA SE EXISTE UMA eventNSAGENS ABERTA NESTA PASTA E NAS SUAS FILHAS; 
     304                 
     305                // VALIDA SE O USUARIO ESTA TENTANDO MOVER A PASTA PARA O eventSMO LOCAL 
     306                if(folder_to_exist == folder_to_move){ 
     307                    return write_msg(get_lang("Thie folder is already in this place")); 
     308                } 
     309                 
     310                // VALIDA SE O USUARIO ESTA TENTANDO MOVER A PASTA ABERTA NO momentO 
     311                if(folder_to_move == get_current_folder()){ 
     312                    return write_msg(get_lang("It's not possible move this folder, because it is being used in the moment!")); 
     313                } 
     314                 
     315                // VALIDA SE O USUARIO ESTA TENTANDO MOVER UMA PASTA FILHA DA PASTA ABERTA NO momentO 
     316                if(ui.draggable.parent().find(".selected")[0]){ 
     317                    return write_msg(get_lang("It's not possible move this folder, because its subfolder is being used in the moment!")); 
     318                } 
     319                 
     320                // VALIDA SE O USUARIO ESTA TENTANDO MOVER UMA PASTA PAI PARA DENTRO DE UMA FILHA 
     321                if(ui.draggable.parent().find('[id="'+folder_to+'"]')[0]){ 
     322                    return write_msg(get_lang("It's not possible to move this folder to its subfolders!")); 
     323                }                    
     324                 
     325                if($('[id="'+folder_to_exist+'"]').length){ 
     326                    return write_msg(get_lang("Can not move this folder to this location, because the target has already a folder with this name")); 
     327                } 
     328                 
     329                $(this).addClass("folders-loading"); 
     330 
     331 
     332                if($(this).parent().parent().parent().find("input").val() == "localFolder"){ 
     333                    var idFolder = $(this).parent().attr("id").split("_")[2]; 
     334 
     335                    expresso_mail_archive.moveFolder(idFolder, folder_to_move.split("_")[2]); 
     336                     cExecute("$this.imap_functions.get_folders_list&onload=true", update_menu); 
     337                } else { 
     338                    $.ajax({ 
     339                        url : "controller.php?"+ $.param( { action: "$this.imap_functions.move_folder", folder_to_move: folder_to_move, folder_to: folder_to } ), 
     340                        success : function(data){ 
     341                            cExecute("$this.imap_functions.get_folders_list&onload=true", update_menu); 
     342                            data = connector.unserialize(data); 
     343                            if(data == "Permission denied"){ 
     344                                write_msg(get_lang("Permission denied")); 
     345                            }else if(data){ 
     346                                write_msg(get_lang("The folder was successfully moved")); 
     347                            } else { 
     348                                write_msg(get_lang("ERROR moving your folder.")); 
     349                            } 
     350                        } 
     351                    }); 
     352                } 
     353            } 
     354        } 
     355    }); 
     356    $(".folder").not(".shared-folders").parent().find(".folder").hover( 
     357        function(){ 
     358            //CASO A LI NÃO TENHA UM eventNU FLUTUANTE AINDA, O eventNU É ADICIONADO! 
     359            if(!$(this).children(":last").hasClass("float-menu") && !$(this).children(":last").hasClass("new_folder") && !($(this).next().hasClass("local-connect"))){ /*se houver a classe local-connect, não adiciona o botão de conectar*/ 
     360                var folder_ = $(this); 
     361                var folder_name; 
     362                var shared = { 
     363                    head : false, 
     364                    valid : false 
     365                }; 
     366                if(folder_.parent().attr('id')){ 
     367                    folder_name = folder_.parent().attr('id').split(cyrus_delimiter); 
     368                    folder_name = folder_name[folder_name.length -1]; 
     369                    shared.valid = folder_.parent().attr('id').search("user/") == 0 ? true : false; 
     370                }else 
     371                    folder_name = "Root"; 
     372                 
     373                if(shared.valid){ 
     374                    shared.head = folder_.parent().attr('id').split(cyrus_delimiter).length == 2 ?  true : false; 
     375                    var folder_name_parts = folder_.parent().attr('id').split(cyrus_delimiter); 
     376                    var acls = shared_acls[folder_name_parts[0]+cyrus_delimiter+folder_name_parts[1]]; 
     377 
     378                } 
     379 
     380                html = DataLayer.render("../prototype/modules/mail/templates/float_folder_menu.ejs", {name_folder : folder_name, flag : shared, acl : acls});                    
     381                    //FUNÇÃO DO eventNU FLUTUANTE EDITAR < BEGIN 
     382                var esc = false; 
     383                $(folder_).append(html).find(".float-menu-edit").click(function(){ 
     384                    var folder_id = $(this).parents(".closed:first").attr('id'); 
     385                    var name = $.trim($(this).parents(".closed:first").find("span:first").text().split("[")[0]); 
     386                    if($(this).parents(".closed:first").find("span:first").hasClass("selected")) 
     387                        return write_msg(get_lang("It's not possible rename this folder, because it is being used in the moment!")); 
     388                    if($(this).parents(".closed:first").find(".selected").length) 
     389                        return write_msg(get_lang("It's not possible rename this folder, because its subfolder is being used in the moment!"));  
     390                    if(valid_tabs($(this).parents("li:first").find("li"), folder_id)) 
     391                        return; 
     392                    $(this).parents(".closed:first").find("span:first").empty().append("<input class='new_folder folder' type='text' maxlength='100'></input>"); 
     393                    $(".new_folder").focus().keydown(function(event){ 
     394                        event.stopPropagation(); 
     395                         
     396                        if(event.keyCode == 13){ 
     397                            if($(this).val() != ""){ 
     398 
     399                                if($(this).val().match(/[\/\`\~\^\<\>\|\\\"\!\@\#\$\%\&\*\+\(\)\[\]\{\}\?;:]/gi)){ 
     400                                    return write_msg(get_lang("cannot create folder. try other folder name")); 
     401                                } 
     402                                var new_name = folder_id.replace(/[a-zA-Z0-9á-úÁ-Ú^\s_-]+$/, $(this).val()); 
     403                                if($('[id="'+new_name+'"]').length){ 
     404                                    $(".folders-loading").removeClass("folders-loading"); 
     405                                    write_msg(get_lang("Mailbox already exists")); 
     406                                    return draw_new_tree_folder(); 
     407                                } 
     408                                $(".new_folder").parent().addClass("folders-loading"); 
     409 
     410                                if($(this).parent().parent().parent().find("input").val() == "localFolder"){ 
     411                                    var idFolder = $(this).parent().parent().attr("id").split("_")[2]; 
     412                                    expresso_mail_archive.renameFolder(idFolder, new_name); 
     413                                     cExecute("$this.imap_functions.get_folders_list&onload=true", update_menu); 
     414                                } else { 
     415 
     416                                $.ajax({ 
     417                                    url : "controller.php?action=$this.imap_functions.ren_mailbox", 
     418                                    type : "POST", 
     419                                    data : "current="+folder_id+"&rename="+new_name, 
     420                                    success : function(data){ 
     421                                        data = connector.unserialize(data); 
     422                                        if(data == "Permission denied"){ 
     423                                            $(".folders-loading").removeClass("folders-loading"); 
     424                                            cExecute("$this.imap_functions.get_folders_list&onload=true", update_menu); 
     425                                            return write_msg(get_lang("Permission denied")); 
     426                                        } 
     427                                        write_msg(get_lang("The folder was successfully rename")); 
     428                                        cExecute("$this.imap_functions.get_folders_list&onload=true", update_menu); 
     429                                    } 
     430                                }); 
     431 
     432                                } 
     433                            }else{ 
     434                                $(".new_folder").focusout(); 
     435                            } 
     436                        }else if( event.keyCode == 27){ 
     437                            draw_new_tree_folder(); 
     438                        } 
     439                    }).focusout(function(){ 
     440                        draw_new_tree_folder(); 
     441                    }).val(name); 
     442                }) 
     443                //FUNÇÃO DO eventNU FLUTUANTE EDITAR < END 
     444                //FUNÇÃO DO eventNU FLUTUANTE EXCLUIR < BEGIN 
     445                .end().find(".float-menu-remove").click(function(){ 
     446                     
     447                    var folder_id = $(this).parents(".closed:first").attr('id'); 
     448                    var folder_name = "<strong>"+$.trim($(this).parents(".closed:first").find(".folder").text().split("[")[0])+"</strong>"; 
     449                     
     450                    if(valid_tabs($(this).parents("li:first").find("li"), folder_id)) 
     451                        return; 
     452                    $(this).parents(".closed:first").find(".folder").addClass("folders-loading");  
     453                     
     454                    if($(this).parents(".closed:first").find("ul").length){ 
     455                        $(this).parents(".closed:first").find(".folder").removeClass("folders-loading"); 
     456                        return write_msg(get_lang("Delete/move subfolders first")); 
     457                    } 
     458                    if($(this).parents(".closed:first").find(".selected").length){ 
     459                        $(this).parents(".closed:first").find(".folder").removeClass("folders-loading"); 
     460                        return write_msg(get_lang("It's not possible delete this folder, because it is being used in the moment!"));  
     461                    } 
     462                    var folder_span = $(this); 
     463                    var confirm_text = get_lang("Do you wish to exclude the folder "); 
     464 
     465                    $.Zebra_Dialog(confirm_text+folder_name, { 
     466                        'type':     'question', 
     467                        'overlay_opacity': '0.5', 
     468                        'buttons':  [get_lang('Yes'), get_lang('No')], 
     469                        'onClose':  function(caption) { 
     470 
     471                            if(caption == get_lang('Yes')){ 
     472                                if(folder_span.parent().parent().parent().find("input").val() == "localFolder"){ 
     473                                    var idFolder = folder_span.parent().parent().parent("li").attr("id").split("_")[2]; 
     474                                    expresso_mail_archive.deleteFolder(idFolder); 
     475                                     cExecute("$this.imap_functions.get_folders_list&onload=true", update_menu); 
     476                                } else { 
     477                                $.ajax({ 
     478                                    url : "controller.php?action=$this.imap_functions.delete_mailbox", 
     479                                    type: "POST", 
     480                                    data : "del_past="+folder_id, 
     481                                    success : function(data){ 
     482                                        data = connector.unserialize(data); 
     483                                        if(data == "Mailbox does not exist"){ 
     484                                            $(".folders-loading").removeClass("folders-loading"); 
     485                                            return write_msg(get_lang("Mailbox does not exist")); 
     486                                        }else if(data == "Permission denied"){ 
     487                                            $(".folders-loading").removeClass("folders-loading"); 
     488                                            cExecute("$this.imap_functions.get_folders_list&onload=true", update_menu); 
     489                                            return write_msg(get_lang("Permission denied")); 
     490                                        } 
     491                                        write_msg(get_lang("The folder %1 was successfully removed", folder_name)); 
     492                                        cExecute("$this.imap_functions.get_folders_list&onload=true", update_menu); 
     493                                    } 
     494                                }); 
     495                                } 
     496                            }else{ 
     497                                folder_span.parents(".closed:first").find(".folder").removeClass("folders-loading"); 
     498                                return; 
     499                            } 
     500                        } 
     501                    }); 
     502                    /* if(!confirm(confirm_text + folder_name)){ 
     503                        $(this).parents(".closed:first").find(".folder").removeClass("folders-loading"); 
     504                        return; 
     505                    } */ 
     506                }) 
     507                //FUNÇÃO DO eventNU FLUTUANTE EXCLUIR < END 
     508                //FUNÇÃO DO eventNU FLUTUANTE NOVA PASTA < BEGIN 
     509                .end().find(".float-menu-new").click(function(){ 
     510                    $(this).parents(".float-menu").hide(); 
     511                    var selected_li = $(this).parents(".closed:first"); 
     512                    if(selected_li.find("ul:first").length){ 
     513                        var new_folder = $("<li><input class='new_folder folder' type='text' maxlength='100'></input></li>").appendTo(selected_li.find("ul:first"));                                 
     514                        if(selected_li.find(".expandable-hitarea").length){ 
     515                            selected_li.find(".expandable-hitarea").trigger('click'); 
     516                        } 
     517                        selected_li.find("ul:first").treeview({ 
     518                            add: new_folder 
     519                        }); 
     520                    }else if(selected_li.length){ 
     521                        var new_folder = $("<ul><li><input class='new_folder folder' type='text' maxlength='100'></input></li></ul>").appendTo(selected_li);                                 
     522                        selected_li.treeview({ 
     523                            add: new_folder 
     524                        }); 
     525                    }else{ 
     526                        selected_li = $(this).parents(".head_folder").parent(); 
     527                        if($(this).parents(".head_folder").parent().find(".expandable-hitarea").length){ 
     528                            $(this).parents(".head_folder").parent().find(".expandable-hitarea").trigger('click'); 
     529                        } 
     530                        var new_folder = $("<ul><li><input class='new_folder folder' type='text' maxlength='100'></input></li></ul>").appendTo(selected_li);                                 
     531                        selected_li.treeview({ 
     532                            add: new_folder 
     533                        }); 
     534                    } 
     535                     
     536                    selected_li.find(".new_folder").Watermark("Nova Pasta").focus().keydown(function(event){ 
     537                        event.stopPropagation(); 
     538 
     539 
     540                        if(event.keyCode == 13){ 
     541 
     542                            if($(this).parent().parent().parent().find("input[type=hidden]").val() == "localFolder"){ 
     543 
     544                                 $(".new_folder").parent().addClass("folders-loading"); 
     545 
     546                                 var folderName = $(this).val(); 
     547                                 var folder = (folderName != "" ? folderName : get_lang("New Folder")); 
     548 
     549                                 create_new_local_folder((selected_li.attr('id') ? selected_li.attr('id') : "inbox") , folder); 
     550                                 cExecute("$this.imap_functions.get_folders_list&onload=true", update_menu); 
     551                            } else { 
     552 
     553                                if($(this).val().match(/[\`\~\^\<\>\|\\\"\!\@\#\$\%\&\*\+\(\)\[\]\{\}\?;:]/gi)){ 
     554                                    return write_msg(get_lang("cannot create folder. try other folder name")); 
     555                                } 
     556                                if($('[id="'+ (selected_li.attr('id')? selected_li.attr('id') : "INBOX") + cyrus_delimiter + $(this).val()+'"]').length){ 
     557                                    $(".folders-loading").removeClass("folders-loading"); 
     558                                    write_msg(get_lang("Mailbox already exists")); 
     559                                    return draw_new_tree_folder(); 
     560                                } 
     561                                $(".new_folder").parent().addClass("folders-loading"); 
     562                                create_new_folder(($(this).val() != "" ? $(this).val() : get_lang("New Folder")), (selected_li.attr('id')? selected_li.attr('id') : "INBOX")); 
     563                            } 
     564 
     565                        }else if( event.keyCode == 27){ 
     566                            draw_new_tree_folder(); 
     567                        } 
     568 
     569 
     570 
     571                    }).focusout(function(){ 
     572                        draw_new_tree_folder(); 
     573                    }); 
     574                }).end().find(".float-menu-export").click(function(){ 
     575                    //proxy_mensagens.export_all_messages($(this).parents("li:first").attr("id")) 
     576 
     577                    var name_box = $(this).parents("li:first").attr("id"); 
     578 
     579                    var name_folder = name_box.split(cyrus_delimiter)[name_box.split(cyrus_delimiter).length-1]; 
     580 
     581 
     582                    var hand_export = function(data){ 
     583                        if(!data){ 
     584                            write_msg(get_lang('Error compressing messages (ZIP). Contact the administrator.')) 
     585                        }else if(data["empty_folder"] || data == "empty_folder"){ 
     586                            write_msg(get_lang("The selected folder is empty.")); 
     587                        }else 
     588                          download_attachments(null, null, data, null,null, name_folder +'.zip'); 
     589                    } 
     590                    if($(this).parents("li:first").find("input[type=hidden]:first").val() == "localFolder"){                         
     591                          expresso_mail_archive.listMessages(name_box.split("_")[2]); 
     592                          var msgsArchive = expresso_mail_archive.messageslisted; 
     593                         
     594                           buildExportArchiver(msgsArchive, name_box); 
     595 
     596                    } else { 
     597                          cExecute("$this.exporteml.export_all",hand_export,"folder="+name_box);   
     598                    } 
     599                    write_msg(get_lang('You must wait while the messages will be exported...'));         
     600                }); 
     601                //FUNÇÃO DO eventNU FLUTUANTE NOVA PASTA < END 
     602            } 
     603            if(!$(".new_folder").length){ 
     604                $(this).find(".float-menu:first").css("display", ""); 
     605            } 
     606        }, 
     607        function(){ 
     608            $(this).find(".float-menu:first").hide(); 
     609        } 
     610    ); 
     611    $("#new_m").html($('.selected').find(".folder_unseen").html() ? $('.selected').find(".folder_unseen").html() : "0").css("color", "red"); 
     612} 
  • trunk/prototype/modules/mail/templates/detailedfoldertree.ejs

    r6773 r7414  
    3030                  <% }  %> 
    3131                  </span> 
     32                  <input type="hidden" value="<%= array_trees[i].type %>"> 
    3233                  <% 
    3334                  if (array_trees[i].children.length>0) 
     
    5051  <%}%> 
    5152  <% if(preferences.use_local_messages == 1) { %> 
    52   <li><span class="folder head_folder">Pastas locais</span> 
    53       <% recursive_forest(data.folders[2]); %> 
    54   </li> 
     53     <% if(expresso_mail_archive.enabled && data.folders[2].length > 0) { /*MailArchive ativado*/ %> 
     54        <li> 
     55                <span class="folder local-folder head_folder" style="display: inline;">Pastas locais</span> 
     56                <% recursive_forest(data.folders[2]); %> 
     57        </li> 
     58    <%} else { /*MailArchive desativado*/ %> 
     59        <li> 
     60                <span class="folder local-folder head_folder" style="display: inline;" title="MailArchive Desconectado">Pastas locais</span> 
     61                <span class="local-connect" onclick="services_retry();" title="Conectar ao MailArchive"></span> 
     62                <a class="local-admin" href="<%= mail_archive_url %>" title="MailArchiver Admin" target="_blank"></a> 
     63        </li> 
     64        <%}%> 
     65 
    5566  <%}%> 
    5667  <li><span class="folder head_folder all_accomp followup-messages">Para acompanhamento</span> 
  • trunk/prototype/modules/mail/templates/float_folder_menu.ejs

    r7092 r7414  
    1 <% 
     1<%  
    22        var specialFolders = { 
    33                        INBOX: {name:'Caixa de Entrada'},  
     
    55                        Root : {name:'root'} 
    66                }; 
     7    specialFolders["local_messages_trash"] = {name:'Lixeira', classe:'trash'}; 
     8    specialFolders["local_messages_drafts"] = {name:'Rascunhos', classe:'drafts'}; 
     9    specialFolders["local_messages_spam"] = {name:'Spam', classe:'spam'}; 
     10    specialFolders["local_messages_sent"] = {name:'Enviados', classe:'sent'}; 
     11    specialFolders["local_messages_outbox"] = {name:'Enviados', classe:'sent'}; 
     12 
    713        specialFolders[trashfolder] = {name:'Lixeira', classe:'trash'}; 
    814        specialFolders[draftsfolder] = {name:'Rascunhos', classe:'drafts'}; 
     
    1218 
    1319<span class="float-menu"> 
     20    <% if(data.name_folder != "local_messages_inbox"){ %> 
    1421        <%if(!data.flag.valid){ %> 
     22 
    1523                <%if(data.name_folder != 'INBOX'){%> 
    1624                        <span class="ui-icon ui-icon-document float-menu-new floating-default" title="<%=get_lang("New Folder")%>"></span>   
    1725                <%}%> 
    18                 <%if(!specialFolders[data.name_folder]){ %> 
     26                <%if(!specialFolders[data.name_folder] ){ %> 
    1927                        <span class="ui-icon ui-icon-pencil float-menu-edit floating-default" title="<%=get_lang("Edit folder")%>"></span>   
    2028                        <span class="ui-icon ui-icon-close float-menu-remove floating-default" title="<%=get_lang("Delete folder")%>"></span>   
    2129                <%}  
    22                 else if(data.name_folder == trashfolder){%> 
    23                         <span class="ui-icon ui-icon-trash float-menu-clean floating-default" onclick="empty_trash_imap();" title="<%=get_lang("Empty Trash")%>"></span>   
     30                else if(data.name_folder == trashfolder || data.name_folder == "local_messages_trash"){%> 
     31         <% var type = false; if(data.name_folder == "local_messages_trash"){ type = data.name_folder; } else { type = false; } %> 
     32                        <span class="ui-icon ui-icon-trash float-menu-clean floating-default" onclick="empty_trash_imap(false, false, <%= type %>);" title="<%=get_lang("Empty Trash")%>"></span>   
    2433                <%} 
    25                 else if(data.name_folder == spamfolder){%> 
    26                         <span class="ui-icon ui-icon-trash float-menu-clean floating-default" onclick="empty_spam_imap();" title="<%=get_lang("Empty Spam")%>"></span>   
     34                else if(data.name_folder == spamfolder || data.name_folder == "local_messages_spam"){%> 
     35            <% var type = false; if(data.name_folder == "local_messages_spam"){ type = data.name_folder; } else { type = false; } %> 
     36                        <span class="ui-icon ui-icon-trash float-menu-clean floating-default" onclick="empty_spam_imap(false, false, <%= type %>);" title="<%=get_lang("Empty Spam")%>"></span>   
    2737                         
    2838                <%}%> 
     
    4555                <%}%> 
    4656        <%}%> 
     57    <% } %> 
    4758        <span class="ui-icon ui-icon-arrowthickstop-1-n float-menu-export floating-default" title="<%=get_lang("Export folder messages")%>"></span>   
    4859 </span> 
  • trunk/prototype/services/ImapServiceAdapter.php

    r7274 r7414  
    615615                                $mailService->addHeaderField('Message-Id', UUID::generate( UUID::UUID_RANDOM, UUID::FMT_STRING ) . '@Draft'); 
    616616                $mailService->addHeaderField('Reply-To', mb_convert_encoding(($data['input_reply_to']), 'ISO-8859-1', 'UTF-8,ISO-8859-1')); 
     617                $mailService->addHeaderField('Date', date("d-M-Y H:i:s")); 
    617618                                $mailService->addTo(mb_convert_encoding(($data['input_to']), 'ISO-8859-1', 'UTF-8,ISO-8859-1'));  
    618619                                $mailService->addCc( mb_convert_encoding(($data['input_cc']), 'ISO-8859-1', 'UTF-8,ISO-8859-1'));  
Note: See TracChangeset for help on using the changeset viewer.