Changeset 6754 for branches


Ignore:
Timestamp:
07/11/12 11:45:10 (7 years ago)
Author:
niltonneto
Message:

Ticket #0000 - Copiadas as alterações do Trunk. Versão final da 2.4.1.

Location:
branches/2.4
Files:
120 edited
263 copied

Legend:

Unmodified
Added
Removed
  • branches/2.4

  • branches/2.4/.htaccess

    r6625 r6754  
    126126RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK|OPTIONS|HEAD)$ [NC] 
    127127RewriteRule ^.*$ - [F]  
     128RewriteRule ^rest(.*)$ prototype/rest/$1 [QSA,L] 
     129 
    128130 
    129131# 
  • branches/2.4/INSTALL/debian/squeeze/etc/apache2/sites-available/expresso

    r6623 r6754  
    55        DocumentRoot /var/www/expresso/ 
    66         
    7                 <Directory /var/www/expresso/> 
     7        <Directory /var/www/expresso/> 
    88                Options FollowSymLinks MultiViews 
    99                AllowOverride All 
     
    1212        </Directory> 
    1313 
    14         #<Directory /var/www/expresso/setup>  
    15         #       Options None  
    16         #       AllowOverride All  
    17         #       Order deny,allow  
    18         #       allow from ##ip rede interna##  
    19         #</Directory>  
     14        #<Directory /var/www/expresso/setup> 
     15        #       Options None 
     16        #       AllowOverride All 
     17        #       Order deny,allow 
     18        #       allow from ##ip rede interna## 
     19        #</Directory> 
    2020 
    2121        ErrorLog /var/log/apache2/error.log 
     
    6464        </Directory> 
    6565 
    66         #<Directory /var/www/expresso/setup>  
    67         #       Options None  
    68         #       AllowOverride All  
    69         #       Order deny,allow  
    70         #       allow from ##ip rede interna##  
    71         #</Directory> 
     66        #<Directory /var/www/expresso/setup> 
     67        #       Options None 
     68        #       AllowOverride All 
     69        #       Order deny,allow 
     70        #       allow from ##ip rede interna## 
     71        #</Directory> 
    7272 
    7373        ErrorLog /var/log/apache2/error.log 
  • branches/2.4/INSTALL/debian/squeeze/etc/ldap/slapd.conf

    r6730 r6754  
    1414include         /etc/ldap/schema/inetorgperson.schema 
    1515# Necessario para o Expresso Livre 
    16 include         /etc/ldap/schema/expressolivre.schema  
     16include         /etc/ldap/schema/expressolivre.schema 
    1717include         /etc/ldap/schema/qmailuser.schema 
    1818include         /etc/ldap/schema/phpgwaccount.schema 
    1919include         /etc/ldap/schema/samba.schema 
    2020include         /etc/ldap/schema/phpgwcontact.schema 
    21 include         /etc/ldap/schema/phpgwquotacontrolled.schema  
     21include         /etc/ldap/schema/phpgwquotacontrolled.schema 
    2222 
    2323# Where the pid file is put. The init.d script 
  • branches/2.4/INSTALL/expressoInstall.sh

    r6595 r6754  
    44# 
    55# Criado por William Fernando Merlotto <william@prognus.com.br> 
    6 # Baseado no script original desenvolvido por João Alfredo Knopik Junior <jakjr@celepar.pr.gov.br> 
    7 # com colaborações de: 
     6# Baseado no script original desenvolvido por João Alfredo Knopik Junior <jakjr@celepar.pr.gov.br> 
     7# com colaborações de: 
    88#       "William Fernando Merlotto" <william@prognus.com.br>, para Debian, Ubuntu, Red Hat e CentOS 
    99#       "Gustavo Nakahara" <gustavonk@prognus.com.br>, para Debian, Ubuntu, Red Hat e CentOS 
    1010#       "Rafael Cristaldo" <rafael@prognus.com.br>, para Debian, Ubuntu, Red Hat e CentOS 
    1111#       "Alexandre Felipe Muller de Souza" <amuller@celepar.pr.gov.br>, para Debian 
    12 #       "Cássio Luiz" <cassiolp@cnpq.br>, para Red Hat e CentOS 
     12#       "Cássio Luiz" <cassiolp@cnpq.br>, para Red Hat e CentOS 
    1313#       "M. Rodrigo Monteiro" <mrodrigom@gmail.com>, para Red Hat e CentOS 
    1414# 
    1515# 
    16 # Versões: 
     16# Versões: 
    1717# 27/03/2012 - v1.0 
    1818#       Termino do instalador basico, para Debian Squeeze, CentOS 6 e Ubuntu Server 11.10 
     
    2424################################################################################################# 
    2525 
    26 # TODO: Internacionalizar o script de instalação: 
     26# TODO: Internacionalizar o script de instalação: 
    2727# http://www.linuxquestions.org/questions/programming-9/bash-script-how-to-get-locale-translations-802726/ 
    2828# http://tldp.org/LDP/abs/html/localization.html 
     
    4444 
    4545# Verifica o usuario que esta executando o script 
    46 # DEBUG: Comente esta linha para testar o script sem utilizar o usuário root. 
     46# DEBUG: Comente esta linha para testar o script sem utilizar o usuário root. 
    4747[ $UID != 0 ] && { echo "Este script deve ser executado como superusuario (root) ou com sudo"; exit 1; } 
    4848 
     
    6262        echo "Sistema operacional desconhecido ou incompativel com o instalador do Expresso Livre!" 
    6363        echo "$OSSTR" 
    64         echo "Por favor, utilize uma distribuição GNU/Linux compatível: Debian 6.x, Ubuntu 11.10 ou CentOS/RedHat 6.x" 
     64        echo "Por favor, utilize uma distribuição GNU/Linux compatível: Debian 6.x, Ubuntu 11.10 ou CentOS/RedHat 6.x" 
    6565        exit 1 
    6666fi 
    6767 
    68 # Telas da instalacao  
    69 BACKTITLE="Instalação do ExpressoLivre versão $VERSAO" 
     68# Telas da instalacao 
     69BACKTITLE="Instalação do ExpressoLivre versão $VERSAO" 
    7070 
    7171BACKTITLE="$BACKTITLE, para $INSTALL" 
    7272 
    73 # Inicializacao basica de instalacao, como atualização de repositório e criação de variáveis de ambiente 
     73# Inicializacao basica de instalacao, como atualização de repositório e criação de variáveis de ambiente 
    7474ini_$INSTALL 
    7575 
    76 INTRO='  
    77 Bem-Vindo(a) a instalação do ExpressoLivre!  
    78   
    79 O script de instalação lhe permitirá escolher entre instalar e configurar automaticamente todos os serviços necessários ao funcionamento do ExpressoLivre ou lhe permitirá escolher quais serviços serão instalados e configurados. Esta Última alternativa é interessante para ambientes grandes, onde os serviços são instalados e configurados em máquinas distintas.  
    80   
    81 As informações de senha, domí­nio e organização serão requisitadas de acordo com o(s) serviço(s) selecionado(s).  
    82           
    83 A equipe ExpressoLivre não se responsabiliza por danos ocasionados pelo uso deste instalador ou mesmo pelo próprio ExpressoLivre.  
    84 Você deseja prosseguir, por sua conta e risco, a instalação ExpressoLivre?'  
    85   
    86 # Se o usuario escolher "nao", será retornado 1 e consequentemente o script será encerrado.  
    87 dialog --backtitle "$BACKTITLE" --cr-wrap --yesno "$INTRO" 18 80 || exit 0  
     76INTRO=' 
     77Bem-Vindo(a) a instalação do ExpressoLivre! 
     78 
     79O script de instalação lhe permitirá escolher entre instalar e configurar automaticamente todos os serviços necessário ao funcionamento do ExpressoLivre ou lhe permitirá escolher quais serviços serão instalados e configurados. Esta última alternativa é interessante para ambientes grandes, onde os serviços são instalados e configurados em máquinas distintas. 
     80 
     81As informações de senha, domínio e organização serão requisitadas de acordo com o(s) serviço(s) selecionado(s). 
     82 
     83A equipe ExpressoLivre não se responsabiliza por danos ocasionados pelo uso deste instalador ou mesmo pelo próprio ExpressoLivre. 
     84Você deseja prosseguir, por sua conta e risco, a instalação ExpressoLivre?' 
     85 
     86# Se o usuario escolher "nao", será retornado 1 e consequentemente o script será encerrado. 
     87dialog --backtitle "$BACKTITLE" --cr-wrap --yesno "$INTRO" 18 80 || exit 0 
    8888 
    8989# Inicia a escolha/instalacao e configuracao dos servicos nessarios ao ExpressoLivre 
    9090SERVICOS=$( dialog --backtitle "$BACKTITLE" --stdout --separate-output \ 
    91         --checklist 'Por favor, selecione quais serviços serão instalados neste sistema operacional:' 14 75 14 \ 
    92         http 'Servidor http (apache) juntamente com os módulos do PHP5' on \ 
     91        --checklist 'Por favor, selecione quais serviços serão instalados neste sistema operacional:' 14 75 14 \ 
     92        http 'Servidor http (apache) juntamente com os módulos do PHP5' on \ 
    9393        ldap 'Servidor ldap (openldap)' on \ 
    9494        bd 'Servidor de banco de dados (postgresql)' on \ 
     
    102102done 
    103103 
    104 dialog --backtitle "$BACKTITLE" --cr-wrap --msgbox "A comunidade do Expresso Livre agradece a sua participação.\n\n\nEm caso de dúvidas, por favor, visite: http://www.expressolivre.org" 8 75 
     104dialog --backtitle "$BACKTITLE" --cr-wrap --msgbox "A comunidade do Expresso Livre agradece a sua participação.\n\n\nEm caso de dúvidas, por favor, visite: http://www.expressolivre.org" 8 75 
  • branches/2.4/INSTALL/rhel/6/etc/openldap/slapd.conf

    r6730 r6754  
    1616include         /etc/openldap/schema/nis.schema 
    1717# Necessario para o Expresso Livre 
    18 include         /etc/ldap/schema/expressolivre.schema  
    19 include         /etc/ldap/schema/qmailuser.schema  
    20 include         /etc/ldap/schema/phpgwaccount.schema  
    21 include         /etc/ldap/schema/samba.schema  
    22 include         /etc/ldap/schema/phpgwcontact.schema  
     18include         /etc/ldap/schema/expressolivre.schema 
     19include         /etc/ldap/schema/qmailuser.schema 
     20include         /etc/ldap/schema/phpgwaccount.schema 
     21include         /etc/ldap/schema/samba.schema 
     22include         /etc/ldap/schema/phpgwcontact.schema 
    2323include         /etc/ldap/schema/phpgwquotacontrolled.schema 
    2424 
  • branches/2.4/admin/inc/class.uiconfig.inc.php

    r5988 r6754  
    1111  \**************************************************************************/ 
    1212 
     13require_once('prototype/api/config.php'); 
     14use prototype\api\Config as Config; 
    1315 
    1416        class uiconfig 
     
    337339                        /* Seta o valor padrão para a configuração de número máximo de marcadores */ 
    338340                        $current_config['expressoMail_limit_labels'] = (isset($current_config['expressoMail_limit_labels']) && !!$current_config['expressoMail_limit_labels'] ) ? $current_config['expressoMail_limit_labels'] : 20; 
     341                        //Pegar os todos os Atributos LDAP mapeados no arquivo user.ini 
     342                        $map = Config::get('user', 'OpenLDAP.mapping'); 
     343                        $validate = false;       
     344                        $options = "<option value=''>".lang('None')."</option>"; 
     345                        foreach($map as $value){ 
     346                                $options .= "<option value='".$value."'"; 
     347                                if($current_config['expressoMail_ldap_identifier_recipient'] == $value){ 
     348                                        $validate = true; 
     349                                        $options .= " selected='selected'"; 
     350                                } 
     351                                $options .= ">". $value . "</option>"; 
     352                        } 
     353 
     354                        if(!$validate){ 
     355                                // Limpa Atributo LDAP do banco de dados caso a atribuição não exista mais.      
     356                                $db = ''; 
     357                                $db = $db ? $db : $GLOBALS['phpgw']->db;        // this is to allow setup to set the db 
     358                                $db->query("DELETE FROM phpgw_config WHERE config_app = '".$appname."' AND config_name = 'expressoMail_ldap_identifier_recipient'"); 
     359                        } 
    339360                        /* Recupera o número mínimo de marcadores que pode ser definido */ 
    340361                        $db = ''; 
     
    420441                        $t->set_var('min_labels',$cont_labels); 
    421442                         
     443                        $t->set_var('rows_ldap_identifier',$options); 
    422444                        $t->pfp('out','body'); 
    423445 
  • branches/2.4/admin/setup/phpgw_pt-br.lang

    r5988 r6754  
    565565There are users with an quantity greater than of markers. Respect the minimum number indicated. admin   pt-br   Existem usuários com uma quantidade superior de marcadores. Respeito o número mínimo indicado. 
    566566Minimum number of labels allowed        admin   pt-br   Número mínimo de marcadores permitido 
     567Identifier of the recipient of a message        admin   pt-br   Identificador do destinatário de uma mensagem 
     568LDAP attribute used to replacement      admin   pt-br   Atributo LDAP utilizado para substituição 
     569None    admin   pt-br   Nenhum 
  • branches/2.4/admin/setup/setup.inc.php

    r5298 r6754  
    1313        $setup_info['admin']['name']      = 'admin'; 
    1414        $setup_info['admin']['title']      = 'Admin'; 
    15         $setup_info['admin']['version']   = '2.4.0'; 
     15        $setup_info['admin']['version']   = '2.4.1'; 
    1616        $setup_info['admin']['app_order'] = 1; 
    1717        $setup_info['admin']['tables']    = ''; 
     
    4848        $setup_info['admin']['depends'][] = array( 
    4949                'appname' => 'phpgwapi', 
    50                 'versions' => Array('2.4') 
     50                'versions' => Array('2.4.1') 
    5151        ); 
    5252?> 
  • branches/2.4/calendar/setup/setup.inc.php

    r5298 r6754  
    1212 
    1313        $setup_info['calendar']['name']    = 'calendar'; 
    14         $setup_info['calendar']['version'] = '2.4.0'; 
     14        $setup_info['calendar']['version'] = '2.4.1'; 
    1515        $setup_info['calendar']['app_order'] = 3; 
    1616        $setup_info['calendar']['enable']  = 1; 
     
    5252        $setup_info['calendar']['depends'][] = array( 
    5353                 'appname' => 'phpgwapi', 
    54                  'versions' => Array('2.4') 
     54                 'versions' => Array('2.4.1') 
    5555        ); 
  • branches/2.4/calendar/setup/tables_update.inc.php

    r5314 r6754  
    134134                return $GLOBALS['setup_info']['calendar']['currentver']; 
    135135        } 
     136 
     137        $test[] = '2.4.0'; 
     138        function calendar_upgrade2_4_0() 
     139        { 
     140                $GLOBALS['setup_info']['calendar']['currentver'] = '2.4.1'; 
     141                return $GLOBALS['setup_info']['calendar']['currentver']; 
     142        } 
    136143?> 
  • branches/2.4/emailadmin/setup/setup.inc.php

    r5298 r6754  
    1414        $setup_info['emailadmin']['name']      = 'emailadmin'; 
    1515        $setup_info['emailadmin']['title']     = 'EMailAdmin'; 
    16         $setup_info['emailadmin']['version']   = '2.4.0'; 
     16        $setup_info['emailadmin']['version']   = '2.4.1'; 
    1717        $setup_info['emailadmin']['app_order'] = 10; 
    1818        $setup_info['emailadmin']['enable']    = 2; 
     
    4040        $setup_info['emailadmin']['depends'][] = array( 
    4141                'appname'  => 'phpgwapi', 
    42                 'versions' => Array('2.4') 
     42                'versions' => Array('2.4.1') 
    4343        ); 
    4444 
  • branches/2.4/emailadmin/setup/tables_update.inc.php

    r5352 r6754  
    128128      return $GLOBALS['setup_info']['emailadmin']['currentver']; 
    129129   } 
     130 
     131   $test[] = '2.4.0'; 
     132   function emailadmin_upgrade2_4_0() 
     133        { 
     134      $GLOBALS['setup_info']['emailadmin']['currentver'] = '2.4.1'; 
     135      return $GLOBALS['setup_info']['emailadmin']['currentver']; 
     136   } 
    130137?> 
  • branches/2.4/expressoAdmin1_2/inc/class.bosectors.inc.php

    r6713 r6754  
    4545                        $sector_info = array(); 
    4646                        $sector_info['ou']                              = $_POST['sector'];   
    47                         $sector_info['objectClass'][]   = 'top';  
    48                 $sector_info['objectClass'][]   = 'organizationalUnit';  
    49                 $sector_info['objectClass'][]   = 'phpgwQuotaControlled';  
    50                         /*Insere as informações sobre quota total por usuários e por gigabytes de espaço em disco   
    51               Se não vierem os dados, ele coloca 0 (Caso não exista controle de cota).   
    52                  */  
    53                     $sector_info['diskQuota'] = isset($_POST['disk_quota']) ? (int)$_POST['disk_quota'] : 0;   
    54                     $sector_info['usersQuota'] = isset($_POST['users_quota']) ? (int)$_POST['users_quota'] : 0;  
    55  
     47                        $sector_info['objectClass'][]   = 'top'; 
     48                        $sector_info['objectClass'][]   = 'organizationalUnit'; 
     49                        $sector_info['objectClass'][]   = 'phpgwQuotaControlled'; 
     50                        /*Insere as informações sobre quota total por usuários e por gigabytes de espaço em disco   
     51              Se não vierem os dados, ele coloca 0 (Caso não exista controle de cota).  
     52             */ 
     53                $sector_info['diskQuota'] = isset($_POST['disk_quota']) ? (int)$_POST['disk_quota'] : 0;  
     54                $sector_info['usersQuota'] = isset($_POST['users_quota']) ? (int)$_POST['users_quota'] : 0;  
    5655 
    5756                        $systemName = $GLOBALS['phpgw_info']['server']['system_name']; 
     
    111110                                $this->so->remove_attribute($sector_info[0]['dn'], $ldap_mod_del); 
    112111                        }  
    113                         if(!in_array('phpgwQuotaControlled',$sector_info[0]['objectclass'] ))  
    114                         {  
    115                                 $ldap_mod_add = array();  
    116                                 $ldap_mod_add['objectClass'][] = 'phpgwQuotaControlled';  
    117                                 $ldap_mod_add['diskQuota'] = isset($_POST['disk_quota']) ? (int)$_POST['disk_quota'] : 0;  
    118                                 $ldap_mod_add['usersQuota'] = isset($_POST['users_quota']) ? (int)$_POST['users_quota'] : 0;  
    119   
    120                                 $this->so->add_attribute($sector_info[0]['dn'], $ldap_mod_add);  
     112 
     113                        if(!in_array('phpgwQuotaControlled',$sector_info[0]['objectclass'] )) 
     114                        { 
     115                                $ldap_mod_add = array(); 
     116                                $ldap_mod_add['objectClass'][] = 'phpgwQuotaControlled'; 
     117                                $ldap_mod_add['diskQuota'] = isset($_POST['disk_quota']) ? (int)$_POST['disk_quota'] : 0; 
     118                                $ldap_mod_add['usersQuota'] = isset($_POST['users_quota']) ? (int)$_POST['users_quota'] : 0; 
     119 
     120                                $this->so->add_attribute($sector_info[0]['dn'], $ldap_mod_add); 
    121121                        } 
    122                         else  
    123                         {  
    124                                 $ldap_mod_replace = array();  
    125                                 if(isset($_POST['disk_quota']))  
    126                                         $ldap_mod_replace['diskQuota'] = (int)$_POST['disk_quota'];  
    127   
    128                                 if(isset($_POST['users_quota']))  
    129                                         $ldap_mod_replace['usersQuota'] = (int)$_POST['users_quota'];  
    130   
    131                                 if(count($ldap_mod_replace) > 0)  
    132                                         $this->so->replace_attribute($sector_info[0]['dn'], $ldap_mod_replace);  
    133                         } 
     122                        else 
     123                        { 
     124                                $ldap_mod_replace = array();  
     125                                if(isset($_POST['disk_quota'])) 
     126                                        $ldap_mod_replace['diskQuota'] = (int)$_POST['disk_quota'];  
     127 
     128                                if(isset($_POST['users_quota'])) 
     129                                        $ldap_mod_replace['usersQuota'] = (int)$_POST['users_quota'];  
     130 
     131                                if(count($ldap_mod_replace) > 0) 
     132                                        $this->so->replace_attribute($sector_info[0]['dn'], $ldap_mod_replace);  
     133                        } 
    134134                        // Volta para o ListSectors 
    135135                        ExecMethod('expressoAdmin1_2.uisectors.list_sectors'); 
  • branches/2.4/expressoAdmin1_2/inc/class.db_functions.inc.php

    r6660 r6754  
    6666        } 
    6767 
    68         //returns true if cotas control property is set.  
    69         function use_cota_control() {  
    70                 $query = "select * from phpgw_config where config_name='expressoAdmin_cotasOu' and config_value='true'";  
    71                 $this->db->query($query);  
    72                 if($this->db->next_record())  
    73                         return true;  
    74                 return false;  
    75         }  
    76  
     68        //returns true if cotas control property is set.  
     69        function use_cota_control() {  
     70                $query = "select * from phpgw_config where config_name='expressoAdmin_cotasOu' and config_value='true'";  
     71                $this->db->query($query);  
     72                if($this->db->next_record())  
     73                        return true;  
     74                return false;  
     75        }  
     76                          
    7777        /* 
    7878        *       Reativa os usuários desabilitados por tempo inativo modificando o seu ultimo acesso para o dia atual. 
     
    779779                 
    780780                //Deleta todas as acls do Gerente 
    781                 $this->db->delete('phpgw_expressoadmin_acls',array('manager_lid' => $params['manager_lid'],'context' => $params['old_url_context']));  
     781                $this->db->delete('phpgw_expressoadmin_acls',array('manager_lid' => $params['manager_lid'],'context' => $params['old_url_context'])); 
    782782 
    783783                //Insere novas regras 
  • branches/2.4/expressoAdmin1_2/inc/class.functions.inc.php

    r6713 r6754  
    467467                                  
    468468                /*   
    469                         Funciona de maneira similar ao get_sectors_list, porém retorna a propria OU do contexto  
    470                         e monta o array de retorno de forma diferente, necessário para algumas mudanças implementadas  
    471                         no método admin.uisectors.list_sectors.  
     469                        Funciona de maneira similar ao get_sectors_list, porém retorna a propria OU do contexto  
     470                        e monta o array de retorno de forma diferente, necessário para algumas mudanças implementadas  
     471                        no método admin.uisectors.list_sectors.  
    472472                */  
    473473                function get_organizations2($contexts, $selected='', $referral=false, $show_invisible_ou=true) {                  
     
    495495                                ldap_close($ldap_conn);  
    496496          
    497                                 // Retiro o count do array info e inverto o array para ordenaçãoo.  
     497                                // Retiro o count do array info e inverto o array para ordenaçãoo.  
    498498                                for ($i=0; $i<$info["count"]; $i++)  
    499499                                {  
    500500                                        $dn = $info[$i]["dn"];  
    501501                                          
    502                                         // Necessário, pq em uma busca com ldapsearch ou=*, traz tb o próprio ou.   
     502                                        // Necessário, pq em uma busca com ldapsearch ou=*, traz tb o próprio ou.   
    503503                                        //if (strtolower($dn) == $context)  
    504504                                                //continue;  
     
    514514                                }  
    515515                        }  
    516                         // Ordenação por chave  
     516                        // Ordenação por chave  
    517517                        ksort($inverted_dn);                      
    518518                          
    519                         // Construção do select  
     519                        // Construção do select  
    520520                        $level = 0;  
    521521                        $options = array();  
     
    538538  
    539539                reset ( $array_dn );  
    540                 $display .= ' ' . urldecode( str_replace('\\', '%', current ( $array_dn ))); 
     540                $display .= ' ' . urldecode( str_replace('\\', '%', current ( $array_dn )));  
    541541                                  
    542542                                $info_retorno['display'] = $display;  
     
    598598                }  
    599599                  
    600                 //Checa se existe quota para mais um usuï¿œrio no setor... se existir retorna true, senï¿œo false.                
     600                //Checa se existe quota para mais um usuï¿œrio no setor... se existir retorna true, senï¿œo false.                
    601601                function existe_quota_usuario($setor) {  
    602602                        $num_users = $this->get_num_users($setor['dn']);  
     
    608608                }  
    609609                  
    610                 //Checa se existe quota em disco para mais um usuï¿œrio no setor... se existir retorna true, senï¿œo false.  
     610                //Checa se existe quota em disco para mais um usuï¿œrio no setor... se existir retorna true, senï¿œo false.  
    611611                function existe_quota_disco($setor,$quota_novo_usuario) {  
    612612                        settype($quota_novo_usuario,"float");             
    613                         $quota_novo_usuario /= 1024; //A quota vï¿œm da interface em megabytes, deve se tornar gigabyte.  
     613                        $quota_novo_usuario /= 1024; //A quota vï¿œm da interface em megabytes, deve se tornar gigabyte.  
    614614  
    615615                        $nova_quota = $this->get_actual_disk_usage($setor['dn']) + $quota_novo_usuario;  
     
    620620                }  
    621621                  
    622                 // Soma as quotas de todos os usuï¿œrios daquele contexto.  
     622                // Soma as quotas de todos os usuï¿œrios daquele contexto.  
    623623                function get_actual_disk_usage($context) {  
    624624                        $quota_usada=0;  
     
    629629                        foreach($usuarios as $usuario) {  
    630630                                $temp = $imap_functions->get_user_info($usuario['account_lid']);  
    631                                 if($temp['mailquota'] != -1) //Usuï¿œrio sem cota nï¿œo conta...  
     631                                if($temp['mailquota'] != -1) //Usuï¿œrio sem cota nï¿œo conta...  
    632632                                        $quota_usada += ($temp['mailquota'] / 1024);  
    633633                        }  
  • branches/2.4/expressoAdmin1_2/inc/class.uimanagers.inc.php

    r6585 r6754  
    8888 
    8989                        // Le BD para pegar os administradors. 
    90                         $query = 'SELECT DISTINCT ON (manager_lid) manager_lid , context FROM phpgw_expressoadmin_acls ORDER by manager_lid ';  
     90                        $query = 'SELECT DISTINCT ON (manager_lid) manager_lid , context FROM phpgw_expressoadmin_acls ORDER by manager_lid '; 
    9191                        $GLOBALS['phpgw']->db->query($query); 
    9292                        while($GLOBALS['phpgw']->db->next_record()) 
     
    236236                function edit_managers() 
    237237                { 
    238                         echo "<input type='hidden' name='old_url_context_aux' value='".$_GET['context']."'>";            
    239  
     238                        echo "<input type='hidden' name='old_url_context_aux' value='".$_GET['context']."'>"; 
     239                         
    240240                        // Caso nao seja admin, sai. 
    241241                        if (!$GLOBALS['phpgw']->acl->check('run',1,'admin')) 
  • branches/2.4/expressoAdmin1_2/inc/class.uisectors.inc.php

    r6713 r6754  
    233233 
    234234                        $combo_manager_org = substr( $combo_manager_org, 0, ( strpos($combo_manager_org, '</option>') + 9 ) ); 
    235                         $combo_manager_org =utf8_decode($combo_manager_org);  
    236                 $a_tmp = explode(",", $context);  
    237                 $sector_name = utf8_decode( str_replace('ou=' , '' ,$a_tmp[0])); 
     235                        $combo_manager_org =utf8_decode($combo_manager_org); 
     236                        $a_tmp = explode(",", $context);  
     237                        $sector_name = utf8_decode( str_replace('ou=' , '' ,$a_tmp[0])); 
    238238                         
    239239                        // Verifica se tem acesso a este modulo 
     
    255255                        if (!$_POST) 
    256256                        { 
    257                                 $sector_info = $this->so->get_info($_GET['context']);  
     257                                $sector_info = $this->so->get_info($_GET['context']); 
    258258                                $sector_disk_quota = $sector_info[0]['diskquota'][0];  
    259259                                $sector_users_quota = $sector_info[0]['usersquota'][0];  
     
    299299                function view_cota()  
    300300                {  
    301                         $context = utf8_decode($_GET['context']);   
    302                             $a_tmp = explode(",", $context);  
     301                        $context = utf8_decode($_GET['context']);  
     302                        $a_tmp = explode(",", $context);  
    303303  
    304304                        $sector_name = str_replace('ou=' , '' ,$a_tmp[0]);  
  • branches/2.4/expressoAdmin1_2/inc/class.user.inc.php

    r6660 r6754  
    3737                 
    3838                        if($this->db_functions->use_cota_control()) {  
    39                                                 //Verifica quota de usuários e disco              
     39                                                //Verifica quota de usuários e disco              
    4040                                                $setor = $this->functions->get_info($params['context']);  
    4141                                                if (!$this->functions->existe_quota_usuario($setor[0])) {  
    4242                                                        $return['status'] = false;  
    43                                                         $return['msg'] = $this->functions->lang("user cota exceeded");//TODO colocar valor de acordo com tabela de traduções.  
     43                                                        $return['msg'] = $this->functions->lang("user cota exceeded");//TODO colocar valor de acordo com tabela de traduções.  
    4444                                                        return $return;  
    4545                                                }   
    4646                                                if (!$this->functions->existe_quota_disco($setor[0],$params['mailquota'])) {  
    4747                                                        $return['status'] = false;  
    48                                                         $return['msg'] = $this->functions->lang("disk cota exceeded");//TODO colocar valor de acordo com tabela de traduções.  
     48                                                        $return['msg'] = $this->functions->lang("disk cota exceeded");//TODO colocar valor de acordo com tabela de traduções.  
    4949                                                        return $return;                           
    5050                                                }  
     
    318318                        */ 
    319319 
    320                         //Verifica quota de disco, como estou alterando, não preciso checar quota de usuários.  
     320                        //Verifica quota de disco, como estou alterando, não preciso checar quota de usuários.  
    321321                        if($this->db_functions->use_cota_control()) {             
    322322                                $setor = $this->functions->get_info($new_values['context']);  
    323323                                if (!$this->functions->existe_quota_disco($setor[0],$new_values['mailquota'])) {  
    324324                                        $return['status'] = false;  
    325                                         $return['msg'] = "Quota em disco excedida...";//TODO colocar valor de acordo com tabela de traduções.  
     325                                        $return['msg'] = "Quota em disco excedida...";//TODO colocar valor de acordo com tabela de traduções.  
    326326                                        return $return;                           
    327327                                }  
  • branches/2.4/expressoAdmin1_2/js/jscode/managers.js

    r6585 r6754  
    8282                else 
    8383                { 
    84                 var old_url_context = document.createElement("INPUT");  
    85                 old_url_context.type = "hidden";  
    86                 old_url_context.name = "old_url_context";  
    87                 old_url_context.value = $("input[name=old_url_context_aux]").val();  
    88                           
    89                 $(document.forms[0]).find("div").append(old_url_context);  
    90  
     84                var old_url_context = document.createElement("INPUT"); 
     85                old_url_context.type = "hidden"; 
     86                old_url_context.name = "old_url_context"; 
     87                old_url_context.value = $("input[name=old_url_context_aux]").val(); 
     88                 
     89                $(document.forms[0]).find("div").append(old_url_context); 
     90                 
    9191                        if (type == 'add') 
    9292                                cExecuteForm ("$this.manager.create", document.forms[0], handler_createsave_manager); 
  • branches/2.4/expressoAdmin1_2/setup/phpgw_pt-br.lang

    r6662 r6754  
    460460last login      expressoAdmin1_2        pt-br   Último acesso 
    461461user number cota        expressoAdmin1_2        pt-br   Cota de usuários 
    462 disk usage cota expressoAdmin1_2        pt-br   Cota de disco  
    463 user number     expressoAdmin1_2        pt-br   Nº de usuários  
    464 disk usage      expressoAdmin1_2        pt-br   Espaço utilizado  
    465 view cota       expressoAdmin1_2        pt-br   Cotas  
    466 users quota     expressoAdmin1_2        pt-br   Cota de Usuários  
     462disk usage cota expressoAdmin1_2        pt-br   Cota de disco 
     463user number     expressoAdmin1_2        pt-br   Nº de usuários 
     464disk usage      expressoAdmin1_2        pt-br   Espaço utilizado 
     465view cota       expressoAdmin1_2        pt-br   Cotas 
     466users quota     expressoAdmin1_2        pt-br   Cota de Usuários 
    467467disk quota      expressoAdmin1_2        pt-br   Cota em Disco 
    468468shared accounts expressoAdmin1_2        pt-br   Contas compartilhadas 
  • branches/2.4/expressoAdmin1_2/setup/setup.inc.php

    r5298 r6754  
    1313        $setup_info['expressoAdmin1_2']['title']        = 'Expresso Admin'; 
    1414        /* Ao incrementar versão, não esquecer de declarar função do tables_update.inc.php*/ 
    15         $setup_info['expressoAdmin1_2']['version']      = '2.4.0'; 
     15        $setup_info['expressoAdmin1_2']['version']      = '2.4.1'; 
    1616        $setup_info['expressoAdmin1_2']['app_order']    = 1; 
    1717        $setup_info['expressoAdmin1_2']['tables'][]             = 'phpgw_expressoadmin'; 
     
    3737        $setup_info['expressoAdmin1_2']['depends'][] = array( 
    3838                'appname' => 'phpgwapi', 
    39                 'versions' => Array('2.4') 
     39                'versions' => Array('2.4.1') 
    4040        ); 
    4141?> 
  • branches/2.4/expressoAdmin1_2/setup/tables_update.inc.php

    r5314 r6754  
    323323                $GLOBALS['setup_info']['expressoAdmin1_2']['currentver'] = '2.4.0'; 
    324324            return $GLOBALS['setup_info']['expressoAdmin1_2']['currentver'];  
    325         }  
     325        } 
     326 
     327        $test[] = '2.4.0'; 
     328        function expressoAdmin1_2_upgrade2_4_0() 
     329        { 
     330                $GLOBALS['setup_info']['expressoAdmin1_2']['currentver'] = '2.4.1'; 
     331                return $GLOBALS['setup_info']['expressoAdmin1_2']['currentver']; 
     332        }         
    326333?> 
  • branches/2.4/expressoCalendar/docs/caldav-DELETE.php.diff

    r6440 r6754  
    1515+     $dav_name = explode('/', $dav_resource->GetProperty('dav_name')); 
    1616+ 
    17 +    DAViCalAdapter::delete($dav_resource->GetProperty('caldav_data') ,array('owner' => $dav_resource->GetProperty('username') , 'calendarName' => $dav_name[ (count($dav_name)-3) ]) .'/'. $dav_name[ (count($dav_name)-2) ]); 
     17+     DAViCalAdapter::delete($dav_resource->GetProperty('caldav_data') ,array('owner' => $dav_resource->GetProperty('username') , 'calendarName' => $dav_name[ (count($dav_name)-3) ]) .'/'. $dav_name[ (count($dav_name)-2) ]); 
    1818+  } 
    1919+/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 
  • branches/2.4/expressoCalendar/docs/caldav-PUT-vcalendar.php.diff

    r6440 r6754  
    1414+   $params = array(); 
    1515+   $dav_name = explode('/', $dav_resource->GetProperty('dav_name')); 
    16 +   $params['calendarName'] = $dav_name[ (count($dav_name)-3) ] .'/'. $dav_name[ (count($dav_name)-2) ];  
     16+   $params['calendarName'] = $dav_name[ (count($dav_name)-3) ] .'/'. $dav_name[ (count($dav_name)-2) ]; 
    1717+   $params['owner'] =  $session->username; 
    1818+   $params['action'] = $put_action_type; 
  • branches/2.4/expressoMail1_2/inc/class.db_functions.inc.php

    r6331 r6754  
    2424        include_once(PHPGW_API_INC.'/class.db.inc.php');  
    2525}  
    26 include_once('class.dynamic_contacts.inc.php'); 
    2726         
    2827class db_functions 
     
    248247        } 
    249248 
    250         //Gera lista de contatos para ser gravado e acessado pelo expresso offline. 
    251         function get_dropdown_contacts_to_cache() { 
    252                 return $this->get_dropdown_contacts(); 
    253         } 
    254          
    255         function get_dropdown_contacts(){ 
    256                 $contacts = $this->get_cc_contacts(); 
    257                 $groups = $this->get_cc_groups(); 
    258                  
    259                 if(($contacts) && ($groups)) 
    260                         $stringDropDownContacts = $contacts . ',' . $groups; 
    261                 elseif ((!$contacts) && (!$groups)) 
    262                         $stringDropDownContacts = ''; 
    263                 elseif (($contacts) && (!$groups)) 
    264                         $stringDropDownContacts = $contacts; 
    265                 elseif ((!$contacts) && ($groups)) 
    266                         $stringDropDownContacts = $groups; 
    267                                          
    268                 if($_SESSION['phpgw_info']['user']['preferences']['expressoMail']['use_dynamic_contacts']) { 
    269                         // Free others requests  
    270                         session_write_close();  
    271                         $dynamic_contact = new dynamic_contacts(); 
    272                         $dynamic = $dynamic_contact->dynamic_contact_toString(); 
    273                         if ($dynamic) 
    274                                 $stringDropDownContacts .= ($stringDropDownContacts ? ',' : '') . $dynamic; 
    275                 } 
    276                 return $stringDropDownContacts;  
    277         } 
    278249        function getUserByEmail($params){        
    279250                // Follow the referral 
     
    309280        } 
    310281         
    311         function get_dynamic_contacts() 
    312         {                                
    313                 // Pesquisa os emails e ultima inserção nos contatos dinamicos. 
    314                 if(!$this->db->select('phpgw_expressomail_contacts','data','id_owner ='.$this->user_id,__LINE__,__FILE__)) 
    315                 { 
    316                 return $this->db->Error; 
    317 } 
    318                 while($this->db->next_record()) 
    319                 { 
    320                         $result[] = $this->db->row(); 
    321                 } 
    322                 if($result) foreach($result as $item)  
    323                 { 
    324                         $contacts = unserialize($item['data']); 
    325                 } 
    326                 if (count($contacts) == 0) 
    327                 {                        
    328                         return null; 
    329                 }        
    330                 //Sort by email 
    331                 function cmp($a, $b) { return strcmp($a["email"], $b["email"]);}  
    332                 usort($contacts,"cmp"); 
    333                 return $contacts; 
    334         } 
    335         function update_contacts($contacts=array()) 
    336         {                        
    337                  
    338          
    339                 if(!$this->db->select('phpgw_expressomail_contacts','data','id_owner ='.$this->user_id,__LINE__,__FILE__)) 
    340         { 
    341             $result['dberr1'] = $this->db->Error; 
    342         } 
    343                 $regs = array(); 
    344                 while($this->db->next_record()) 
    345         { 
    346             $regs[] = $this->db->row(); 
    347         } 
    348                 $old_contatacts = array(); 
    349                 foreach($regs as $old){ 
    350                         $old_contatacts = unserialize($old['data']); 
    351                 } 
    352                   
    353                 foreach($old_contatacts as $i => $v) 
    354                         foreach($contacts as $ii => $vv) 
    355                                 if(trim($v['email']) == trim($vv['email'])) 
    356                                         unset($old_contatacts[$i]); 
    357                  
    358                   
    359                  $old_contatacts = array_merge( $old_contatacts , $contacts);            
    360                 // Atualiza um email nos contatos dinamicos. 
    361                 if(!$this->db->update('phpgw_expressomail_contacts ','data=\''.serialize($old_contatacts).'\'','id_owner ='.$this->user_id,__LINE__,__FILE__)) 
    362                 { 
    363                         return $this->db->Error; 
    364                 } 
    365                 return $contacts; 
    366         }        
    367282        function update_preferences($params){ 
    368283                $string_serial = urldecode($params['prefe_string']);                             
     
    375290                else 
    376291                        return array("success" => true); 
    377         } 
    378          
    379         function insert_contact($contact)        
    380         { 
    381                 $contacts[] = array( 'timestamp'        => time(), 
    382                                                                 'email'         => $contact ); 
    383  
    384                 // Insere um email nos contatos dinamicos.       
    385                 $query = 'INSERT INTO phpgw_expressomail_contacts (data, id_owner)  ' . 
    386                                         'values ( \''.serialize($contacts).'\', '.$this->user_id.')'; 
    387                  
    388                 if(!$this->db->query($query,__LINE__,__FILE__)) 
    389                 return $this->db->Error; 
    390         return $contacts; 
    391         } 
    392          
    393         function remove_dynamic_contact($user_id,$line,$file) 
    394         { 
    395                 $where = $user_id.' = id_owner'; 
    396                 $this->db->delete('phpgw_expressomail_contacts',$where,$line,$file);     
    397292        } 
    398293         
  • branches/2.4/expressoMail1_2/inc/class.functions.inc.php

    r6733 r6754  
    1515                function CalculateDateOffset() 
    1616                { 
    17                                          
    1817 
    19                                         $zones = $this->getTimezones();  
    20                             $_SESSION['phpgw_info']['user']['preferences']['expressoMail']['timezone'] = $GLOBALS['phpgw_info']['user']['preferences']['expressoMail']['timezone'] ? $GLOBALS['phpgw_info']['user']['preferences']['expressoMail']['timezone'] : sprintf("%s", array_search("America/Sao_Paulo", $zones));  
    2118                     
     19                    $zones = $this->getTimezones(); 
     20                    $_SESSION['phpgw_info']['user']['preferences']['expressoMail']['timezone'] = $GLOBALS['phpgw_info']['user']['preferences']['expressoMail']['timezone'] ? $GLOBALS['phpgw_info']['user']['preferences']['expressoMail']['timezone'] : sprintf("%s", array_search("America/Sao_Paulo", $zones)); 
     21 
    2222                    $timezone_index = $_SESSION['phpgw_info']['user']['preferences']['expressoMail']['timezone']; 
    2323                    $user_timezone = $zones[$timezone_index]; 
  • branches/2.4/expressoMail1_2/inc/class.imap_functions.inc.php

    r6735 r6754  
    10951095        function get_info_msg($params) 
    10961096        { 
    1097          
    10981097                if(isset($params['alarm'])){ 
    10991098                        $alarm = $params['alarm']; 
     
    11401139            //$return['signature']      = $return_get_body['signature']; 
    11411140                } 
    1142                  
     1141 
    11431142                $pattern = '/^[ \t]*Disposition-Notification-To:.*/mi'; 
    11441143                if (preg_match($pattern, $header_, $fields)) 
    1145                 $return['DispositionNotificationTo'] = base64_encode(trim(str_ireplace('Disposition-Notification-To:', '', $fields[0]))); 
     1144                        $return['DispositionNotificationTo'] = base64_encode(trim(str_ireplace('Disposition-Notification-To:', '', $fields[0])));  
    11461145 
    11471146                $return['Recent']       = $header->Recent; 
     
    14001399                $return['login'] = $_SESSION['phpgw_info']['expressomail']['user']['account_id'];//$GLOBALS['phpgw_info']['user']['account_id']; 
    14011400                $return['reply_toaddress'] = $header->reply_toaddress; 
    1402                  
     1401                 
    14031402                if(($return['from']['email'] ==  '@unspecified-domain' || $return['sender']['email'] == null) && $return['msg_folder'] == 'INBOX/Drafts'){ 
    14041403                        $return['from']['email'] = "Rascunho"; 
    14051404                } 
    1406                  
     1405 
    14071406                if(strpos($return['toaddress2'], 'undisclosed-recipients') !== false){ 
    14081407                        $return['toaddress2'] = $this->functions->getLang('without destination'); 
     
    16771676                        break; 
    16781677 
    1679                       case 'CANCEL': 
     1678                    case 'CANCEL': 
    16801679 
    16811680                          $ical = $icalService->getComponent('vevent'); 
     
    28112810            $header = $this->get_header($msg_numb); 
    28122811            $header_ = imap_fetchheader($this->mbox, $msg_numb, FT_UID); 
    2813             $pattern = '/^[ \t]*Disposition-Notification-To:.*/mi';  
    2814                         if (preg_match($pattern, $header_, $fields))  
    2815                                 $return['DispositionNotificationTo'] = base64_encode(trim(str_ireplace('Disposition-Notification-To:', '', $fields[0]))); 
     2812            $pattern = '/^[ \t]*Disposition-Notification-To:.*/mi'; 
     2813                        if (preg_match($pattern, $header_, $fields)) 
     2814                                $return['DispositionNotificationTo'] = base64_encode(trim(str_ireplace('Disposition-Notification-To:', '', $fields[0])));  
    28162815 
    28172816            $message_id = $header->message_id; 
     
    29182917                     if($att['disposition'] == 'embedded' && $isHTML) //Caso mensagem em texto simples converter os embedded para attachments 
    29192918                     { 
    2920                          $body = str_replace('"../prototype/getArchive.php?mailAttachment='.$att['id'].'"', $att['name'], $body); 
    2921                          $mailService->addStringImage(base64_decode($att['source']), $att['type'], mb_convert_encoding($att['name'], 'ISO-8859-1' , 'UTF-8,ISO-8859-1'));  
     2919                         $body = str_replace('"../prototype/getArchive.php?mailAttachment='.$att['id'].'"', '"'.mb_convert_encoding($att['name'], 'ISO-8859-1' , 'UTF-8,ISO-8859-1').'"', $body); 
     2920                         $mailService->addStringImage(base64_decode($att['source']), $att['type'], mb_convert_encoding($att['name'], 'ISO-8859-1' , 'UTF-8,ISO-8859-1')); 
    29222921                     } 
    29232922                     else 
    2924                           $mailService->addStringAttachment(base64_decode($att['source']), mb_convert_encoding($att['name'], 'ISO-8859-1' , 'UTF-8,ISO-8859-1'), $att['type'], 'base64', isset($att['disposition']) ? $att['disposition'] :'attachment' ); 
     2923                         $mailService->addStringAttachment(base64_decode($att['source']), mb_convert_encoding($att['name'], 'ISO-8859-1' , 'UTF-8,ISO-8859-1'), $att['type'], 'base64', isset($att['disposition']) ? $att['disposition'] :'attachment' ); 
    29252924                      
    29262925                     $message_size_total += $att['size']; 
     
    29372936                                {     
    29382937                                    $body = str_ireplace('<img src="./inc/get_archive.php?msgFolder='.$value['folder'].'&msgNumber='.$value['uid'].'&indexPart='.$value['part'].'" />' , '<img src="'.$att['name'].'" />', $body); 
    2939                                     $mailService->addStringImage($att['source'], $att['type'],mb_convert_encoding($att['name'], 'ISO-8859-1' , 'UTF-8,ISO-8859-1') );  
     2938                                    $mailService->addStringImage($att['source'], $att['type'],mb_convert_encoding($att['name'], 'ISO-8859-1' , 'UTF-8,ISO-8859-1') ); 
    29402939                                } 
    29412940                                else 
     
    29482947                                $mbox_stream = $this->open_mbox(mb_convert_encoding($value['folder'] , 'ISO-8859-1' , 'UTF7-IMAP')); 
    29492948                                $rawmsg = $this->getRawHeader($value['uid']) . "\r\n\r\n" . $this->getRawBody($value['uid']); 
    2950                                   
    2951                                 $mailService->addStringAttachment($rawmsg, mb_convert_encoding(base64_decode($value['name']), 'ISO-8859-1' , 'UTF-8,ISO-8859-1'), 'message/rfc822', '7bit', 'attachment' );  
     2949                                 
     2950                                $mailService->addStringAttachment($rawmsg, mb_convert_encoding(base64_decode($value['name']), 'ISO-8859-1' , 'UTF-8,ISO-8859-1'), 'message/rfc822', '7bit', 'attachment' ); 
    29522951                                $message_size_total += mb_strlen($rawmsg); //Adiciona o tamanho do anexo a variavel que controlao tamanho da msg. 
    29532952                                unset($rawmsg); 
     
    30293028             */ 
    30303029            //////////////////////////////////////////////////////////////////////////////////////////////////// 
    3031  
    30323030            if ($isHTML) 
    3033             {  
    3034                 $defaultStyle = '';  
    3035                   
    3036                 if(isset($_SESSION['phpgw_info']['user']['preferences']['expressoMail']['font_family_editor']) && $_SESSION['phpgw_info']['user']['preferences']['expressoMail']['font_family_editor'])  
    3037                 $defaultStyle .= ' font-family:'.$_SESSION['phpgw_info']['user']['preferences']['expressoMail']['font_family_editor'] .';';  
    3038                                   
    3039                 if(isset($_SESSION['phpgw_info']['user']['preferences']['expressoMail']['font_size_editor']) && $_SESSION['phpgw_info']['user']['preferences']['expressoMail']['font_size_editor'])  
    3040                 $defaultStyle .= ' font-size:'.$_SESSION['phpgw_info']['user']['preferences']['expressoMail']['font_size_editor'].';';  
    3041                         
    3042                 $body = '<span class="'.$defaultStyle.'">'.$body.'</span>';  
     3031            { 
     3032                $this->rfc2397ToEmbeddedAttachment($mailService , $body); 
     3033 
     3034                $defaultStyle = ''; 
     3035                if(isset($_SESSION['phpgw_info']['user']['preferences']['expressoMail']['font_family_editor']) && $_SESSION['phpgw_info']['user']['preferences']['expressoMail']['font_family_editor']) 
     3036                    $defaultStyle .= ' font-family:'.$_SESSION['phpgw_info']['user']['preferences']['expressoMail']['font_family_editor'] .';'; 
     3037                 
     3038                if(isset($_SESSION['phpgw_info']['user']['preferences']['expressoMail']['font_size_editor']) && $_SESSION['phpgw_info']['user']['preferences']['expressoMail']['font_size_editor']) 
     3039                    $defaultStyle .= ' font-size:'.$_SESSION['phpgw_info']['user']['preferences']['expressoMail']['font_size_editor'].';'; 
     3040     
     3041                $body = '<span class="'.$defaultStyle.'">'.$body.'</span>'; 
    30433042                $mailService->setBodyHtml($body); 
    3044              } 
     3043            }     
    30453044            else 
    30463045                $mailService->setBodyText($body); 
     
    30743073                    error_log("$now - $userip - $sent [$subject] - $userid => $addrs\r\n", 3, "/home/expressolivre/mail_senders.log"); 
    30753074                } 
    3076                 if ($_SESSION['phpgw_info']['user']['preferences']['expressoMail']['use_dynamic_contacts']) { 
    3077                     $contacts = new dynamic_contacts(); 
    3078                     $new_contacts = $contacts->add_dynamic_contacts($toaddress . "," . $ccaddress . "," . $ccoaddress); 
    3079                     return array("success" => true, "new_contacts" => $new_contacts); 
    3080                 } 
    3081                  
    3082                    if($params['uids_save'] ) 
    3083                         $this->delete_msgs(array('folder'=> $params['save_folder'] , 'msgs_number' => $params['uids_save'])); 
     3075                if($params['uids_save'] ) 
     3076                                        $this->delete_msgs(array('folder'=> $params['save_folder'] , 'msgs_number' => $params['uids_save'])); 
    30843077                        
    3085                  
    30863078                //return array("success" => true, "folder" => $folder_list); 
    30873079                                return array("success" => true, "load" => $has_new_folder); 
     
    38393831        } 
    38403832 
    3841         function send_notification($params)  
    3842         {  
    3843                 $mailService = ServiceLocator::getService('mail'); 
     3833        function send_notification($params) 
     3834        { 
     3835                $mailService = ServiceLocator::getService('mail');  
    38443836                $body = lang("Your message: %1",$params['subject']) . '<br>'; 
    38453837                $body .= lang("Received in: %1",date("d/m/Y H:i",$params['date'])) . '<br>'; 
    38463838                $body .= lang("Has been read by: %1 &lt; %2 &gt; at %3", $_SESSION['phpgw_info']['expressomail']['user']['fullname'], $_SESSION['phpgw_info']['expressomail']['user']['email'], date("d/m/Y H:i")); 
    3847                 return $mailService->sendMail(base64_decode($params['notificationto']),   
    3848                                                            $_SESSION['phpgw_info']['expressomail']['user']['email'],  
    3849                                                            $this->htmlspecialchars_decode(lang("Read receipt: %1",$params['subject'])),  
    3850                                                            $body); 
     3839                return $mailService->sendMail(base64_decode($params['notificationto']),  
     3840                                                           $_SESSION['phpgw_info']['expressomail']['user']['email'],  
     3841                                                           $this->htmlspecialchars_decode(lang("Read receipt: %1",$params['subject'])),  
     3842                                                           $body);  
    38513843 
    38523844        } 
     
    49074899                                $return['msgs'][$i]['flag'] .= $msg->Deleted ? $msg->Deleted : '';       
    49084900                                 
    4909                                 $header = imap_fetchheader( $imap, $v , FT_UID ); // Necessario para recuperar se a mensagem é importante ou não. 
     4901                                $header = imap_fetchheader( $imap, $v , FT_UID ); // Necessario para recuperar se a mensagem é importante ou não. 
    49104902                                $importante = array(); 
    49114903                                 
     
    51885180        * @param      <Array> <$proc> <ações do filtro> 
    51895181        * @return     <Regras do usuário em Array> 
    5190         * @access     <public> 
     5182        * @access public 
    51915183        */ 
    51925184        function apliSieveFilter($msgs , $proc) 
     
    52295221                return $ret; 
    52305222        } 
     5223 
     5224   /** 
     5225    * Método que convert imagens no formato rfc2397 para Embedded Attachment 
     5226    * 
     5227    * @license    http://www.gnu.org/copyleft/gpl.html GPL 
     5228    * @author     Consórcio Expresso Livre - 4Linux (www.4linux.com.br) e Prognus Software Livre (www.prognus.com.br) 
     5229    * @sponsor     Caixa Econômica Federal 
     5230    * @author     Cristiano Corrêa Schmidt 
     5231    * @param      <MailService> <$mailService> <Referencia objeto MailService> 
     5232    * @param      <String> <$body> <Referencia Corpo do email> 
     5233    * @return     <void> 
     5234    * @access     public 
     5235    */ 
     5236   function rfc2397ToEmbeddedAttachment( &$mailService , &$body ) 
     5237   {  
     5238       $matches = array(); 
     5239       preg_match_all("/src=[\'|\"]+data:([^,]*);base64,([a-zA-Z0-9\+\/\=]+)[\'|\"]+/i", $body, $matches,  PREG_SET_ORDER); //Resgata imagens em rfc2397        
     5240        
     5241       foreach ($matches as $i => &$v) 
     5242       { 
     5243            $ext = explode(';', $v[1]); //quebra todos os parametros em um array.  
     5244            $mailService->addStringImage(base64_decode($v[2]), $ext[0] , 'EmbeddedImage'.$i.'.'.$this->mimeToExtension($v[1]));  
     5245            $body = str_replace($v[0], 'src="EmbeddedImage'.$i.'.'.$this->mimeToExtension($ext[0]).'"' , $body);  
     5246       } 
     5247   } 
     5248 
     5249   /** 
     5250    * Método que retorna a extensão do arquivo atraves do mime type 
     5251    * 
     5252    * @license    http://www.gnu.org/copyleft/gpl.html GPL 
     5253    * @author     Consórcio Expresso Livre - 4Linux (www.4linux.com.br) e Prognus Software Livre (www.prognus.com.br) 
     5254    * @sponsor     Caixa Econômica Federal 
     5255    * @author     Cristiano Corrêa Schmidt 
     5256    * @param      <String> <$mimeType> <Mime Type do arquivo> 
     5257    * @return     <String> <extensão> 
     5258    * @access     public 
     5259    */ 
     5260   function mimeToExtension($mimeType) 
     5261   { 
     5262       switch ( $mimeType )  
     5263       {    
     5264           case 'image/bmp' :  
     5265           return 'bmp'; 
     5266           case 'image/cgm' : 
     5267               return 'cgm'; 
     5268           case 'image/vnd.djvu' :  
     5269               return 'djv'; 
     5270           case 'image/gif' : 
     5271               return 'gif'; 
     5272           case 'image/x-icon' : 
     5273               return 'ico'; 
     5274           case 'image/ief' : 
     5275               return 'ief'; 
     5276           case 'image/jpeg' : 
     5277               return 'jpg'; 
     5278           case 'image/x-macpaint' : 
     5279               return 'mac'; 
     5280           case 'image/pict' : 
     5281               return 'pct'; 
     5282           case 'image/png' : 
     5283               return 'png'; 
     5284           case 'image/x-quicktime' : 
     5285               return 'qti'; 
     5286           case 'image/x-rgb' : 
     5287               return 'rgb'; 
     5288           case 'image/tiff' : 
     5289               return 'tif'; 
     5290           default: 
     5291               return ''; 
     5292       } 
     5293        
     5294   } 
     5295         
     5296         
     5297        /** 
     5298        * Método que retorna as mensagens com a flag $FilteredMessage que representa as mensagens filtradas que devem ser alertadas para o usuário 
     5299        * 
     5300        * @license    http://www.gnu.org/copyleft/gpl.html GPL 
     5301        * @author     Consórcio Expresso Livre - 4Linux (www.4linux.com.br) e Prognus Software Livre (www.prognus.com.br) 
     5302        * @sponsor    Caixa Econômica Federal 
     5303        * @author     Airton Bordin Junior <airton@prognus.com.br> 
     5304        * @author         Marcieli <marcieli@prognus.com.br>     
     5305        * @author         Marcos <marcosw@prognus.com.br>        
     5306        * @param      <Array> <$paramFolders> <Pastas onde devem ser buscadas as mensagens> 
     5307        * @return     <Mensagens encontradas com a flag $FilteredMessage> 
     5308        * @access     <public> 
     5309        */ 
     5310        function getFlaggedAlertMessages($paramFolders) { 
     5311                 
     5312                $folders = explode(",", $paramFolders['folders']); 
     5313         
     5314                $messages = array(); 
     5315                $result   = array(); 
     5316                $label    = '$FilteredMessage'; 
     5317                 
     5318                foreach ($folders as $folder) { 
     5319                        $this->mbox = $this->open_mbox($folder); 
     5320                        /* Não deletadas, não lidas e com a flag */ 
     5321                        $messages = imap_search($this->mbox, 'UNDELETED UNSEEN KEYWORD "$FilteredMessage"', SE_UID); 
     5322                        if(is_array($messages)) 
     5323                                foreach ($messages as $k => $m) { 
     5324                                        $headers = imap_fetch_overview($this->mbox, $m, FT_UID); 
     5325                                        $date = explode(" ", $headers[0]->date);  
     5326                                        $result[$m."_".$folder] = array ( 
     5327                                                'udate'      => $headers[0]->udate, 
     5328                                                'smalldate'  => $date[5], 
     5329                                                'from'       => $headers[0]->from, 
     5330                                                'subject'    => self::decodeMimeString($headers[0]->subject), 
     5331                                                'msg_number' => $m, 
     5332                                                'msg_folder' => $folder 
     5333                                        ); 
     5334                                } 
     5335                } 
     5336                $result_final = array(); 
     5337                foreach ($result as $r){ 
     5338                        $result_final[] = $r; 
     5339                } 
     5340 
     5341                return $result_final; 
     5342        } 
     5343         
     5344        /** 
     5345        * Esta função é chamada ao clicar sobre uma mensagem listada nos alertas de Filtro por Remetente 
     5346        * remove a flag e chama a função que recupera os dados da mensagem, para serem utilizados na abertura da aba de leitura da msg 
     5347        */ 
     5348        function open_flagged_msg($params){ 
     5349                $message_number = $params['msg_number']; 
     5350                $message_folder = $params['msg_folder']; 
     5351                $alarm = $params['alarm']; 
     5352                if ($message_folder && $message_number) { 
     5353                        $this->mbox = $this->open_mbox($message_folder); 
     5354                        imap_clearflag_full($this->mbox, $message_number, '$FilteredMessage', ST_UID); 
     5355                } 
     5356                $r = $this->get_info_msg(array('msg_number' => $message_number, 'msg_folder' =>urlencode($message_folder), 'alarm' => ($alarm))); 
     5357                return $r; 
     5358        } 
     5359         
     5360        /** 
     5361        * Remove a flag que caracteriza uma mensagem como alertada por Filtro por Remetente. 
     5362        * se houver o parametro msg_number, então remove a flag de uma msg especifica 
     5363        * se não houver o parametro msg_number, mas sim o from, então remove a flag de todas as msgs da pasta (parametro from),  
     5364        * e que o remetente for o from. 
     5365        */ 
     5366        function removeFlagMessagesFilter($params){ 
     5367                $message_number = $params['msg_number']; 
     5368                $folder = $params['folder']; 
     5369 
     5370                if(isset($message_number)){ 
     5371                        if(isset($folder)){ 
     5372                                $message_number = explode(',', $message_number); 
     5373                                $this->mbox = $this->open_mbox($folder); 
     5374                                foreach ($message_number as $k => $m) {                  
     5375                                                imap_clearflag_full($this->mbox, $m, '$FilteredMessage', ST_UID); 
     5376                                        } 
     5377                        } 
     5378                } 
     5379                else{ 
     5380                        $from = $params['from']; 
     5381                        if(isset($folder) && isset($from)){ 
     5382                                $this->mbox = $this->open_mbox($folder); 
     5383                                $messages = imap_search($this->mbox, 'UNDELETED UNSEEN KEYWORD "$FilteredMessage"', SE_UID); 
     5384                        } 
     5385                        if(is_array($messages)){ 
     5386                                foreach ($messages as $k => $m) { 
     5387                                        $headers = imap_fetch_overview($this->mbox, $m, FT_UID); 
     5388                                        if(strpos($headers[0]->from, $from) > 0){ 
     5389                                                imap_clearflag_full($this->mbox, $m, '$FilteredMessage', ST_UID); 
     5390                                        } 
     5391                                } 
     5392                        } 
     5393                } 
     5394                 
     5395                return array('status' => "success");  
     5396        } 
     5397 
    52315398} 
    52325399?> 
  • branches/2.4/expressoMail1_2/inc/class.ldap_functions.inc.php

    r6139 r6754  
    436436                $ldapService->connection = $this->ds; 
    437437                $campos_extras = ''; 
    438                 $justthese = array("cn", "mail", "telephonenumber", "mobile", "phpgwaccountvisible", "uid", "employeenumber", "ou"); 
     438                $justthese = array("cn", "mail", "telephonenumber", "mobile", "phpgwaccountvisible", "uid", "employeenumber", "ou","vacationActive","vacationInfo"); 
    439439                foreach($searchable_fields as $fields_ldap => $value_field) 
    440440                {    
     
    473473                                        $this->ldapConnect(true,$i); 
    474474                                        $filter="(|(cn=*$search_for*)(mail=*$search_for*))"; 
    475                                         $justthese = array("cn", "mail", "telephoneNumber", "mobile", "phpgwAccountVisible", "uid","employeeNumber", "ou"); 
     475                                        $justthese = array("cn", "mail", "telephoneNumber", "mobile", "phpgwAccountVisible", "uid","employeeNumber", "ou","vacationActive","vacationInfo");  
    476476                                        $sr=@ldap_search($this->ds, $this->ldap_context, $filter, $justthese, 0, $this->max_result+1); 
    477477                                        if(!$sr) 
     
    496496                                 
    497497                        $info_return['search_for'] = $params['search_for']; 
    498             return $info_return; 
     498            return $this->toISO8859($info_return);  
    499499        }  
    500500         
     501    /*Converte um parametro de UTF-8 para ISO8859*/  
     502    function toISO8859($data)  
     503    {  
     504        if(!is_array($data))  
     505          return mb_convert_encoding( $data , 'ISO-8859-1' , 'UTF-8 , ISO-8859-1' );  
     506        $return = array();  
     507        foreach ($data as $i => $v)  
     508          $return[$this->toISO8859($i)] = $this->toISO8859($v);  
     509        return $return;  
     510    }  
     511 
    501512        function make_quicksearch_card($info, $cn) 
    502513        { 
     
    553564                        '<tr class="quicksearchcontacts_unselected">' . 
    554565                                '<td class="cc" width="1%">' . 
    555                                         '<a title="'.$this->functions->getLang("Write message").'" onClick="javascript:QuickSearchUser.create_new_message(\''.$contacts_result["cn"].'\', \''.$contacts_result["mail"].'\')">' . 
     566                                        '<a title="'.$this->functions->getLang("Write message").'" onClick="javascript:QuickSearchUser.create_new_message(\''.$contacts_result["cn"].'\', \''.$contacts_result["mail"].'\', \''.$contacts_result["uid"].'\')">' . 
    556567                                                $photo_link . 
    557568                                        '</a>' . 
     
    559570                                '<td class="cc">' . 
    560571                                        '<span name="cn">' . ($empNumber != "" ? $empNumber : $uid) . $contacts_result['cn'] . '</span>' . '<br>' . 
    561                                         '<a title="'.$functions->getLang("Write message").'" onClick="javascript:QuickSearchUser.create_new_message(\''.$contacts_result["cn"].'\', \''.$contacts_result["mail"].'\')">' . 
     572                                        '<a title="'.$functions->getLang("Write message").'" onClick="javascript:QuickSearchUser.create_new_message(\''.$contacts_result["cn"].'\', \''.$contacts_result["mail"].'\', \''.$contacts_result["uid"].'\')">' . 
    562573                                                '<font color=blue>' . 
    563574                                                '<span name="mail">' . $contacts_result['mail'] . '</span></a></font>'. 
  • branches/2.4/expressoMail1_2/index.php

    r6669 r6754  
    3838                <script src="../prototype/plugins/farbtastic/farbtastic.js" language="javascript"></script> 
    3939                <script src="../prototype/api/datalayer.js" language="javascript"></script>                                      
     40                <script src="../prototype/api/rest.js" language="javascript"></script>                                   
    4041                <script type="text/javascript" src="../prototype/plugins/scrollto/jquery.scrollTo.js"></script> 
    41                 <script language="javascript">DataLayer.dispatchPath = "../prototype/";</script>                                         
     42                <script language="javascript"> 
     43                        DataLayer.dispatchPath = "../prototype/"; 
     44                        REST.dispatchPath = "../prototype/"; 
     45                        REST.load(""); 
     46                </script>                                        
    4247                <script src="../library/ckeditor/ckeditor.js" language="javascript" charset="utf-8"></script>  
    4348                <script src="../library/ckeditor/adapters/jquery.js" language="javascript"></script>  
     
    5661                <script type="text/javascript" src="../prototype/plugins/datejs/sugarpak.js"></script> 
    5762                <script type="text/javascript" src="../prototype/plugins/datejs/parser.js"></script> 
     63                <script type="text/javascript" src="../prototype/plugins/jq-raty/js/jquery.raty.min.js"></script> 
    5864 
    5965                <script type="text/javascript" src="../prototype/plugins/watermark/jquery.watermarkinput.js"></script> 
     
    7177                <script type="text/javascript" src="../prototype/modules/calendar/js/calendar.date.js"></script> 
    7278                <script type="text/javascript" src="../prototype/modules/calendar/js/calendar.codecs.js"></script> 
    73                  
     79                <link rel="stylesheet" type="text/css" href="../prototype/plugins/freeow/style/freeow/freeow.css" > 
     80                <script type="text/javascript" src="../prototype/plugins/freeow/jquery.freeow.min.js"></script> 
     81                <script type="text/javascript" src="../prototype/plugins/freeow/jquery.freeow.js"></script> 
     82 
    7483 
    7584                <script src="js/rich_text_editor.js" type="text/javascript"></script> 
     
    194203        $_SESSION['phpgw_info']['user']['preferences']['expressoMail']['telephone_number'] = $GLOBALS['phpgw_info']['user']['telephonenumber']; 
    195204        $_SESSION['phpgw_info']['user']['preferences']['expressoMail']['use_cache'] = $current_config['expressoMail_enable_cache']; 
     205        $_SESSION['phpgw_info']['user']['preferences']['expressoMail']['expressoMail_ldap_identifier_recipient'] = $current_config['expressoMail_ldap_identifier_recipient']; 
    196206        $_SESSION['phpgw_info']['user']['preferences']['expressoMail']['use_x_origin'] = $current_config['expressoMail_use_x_origin']; 
    197207        $_SESSION['phpgw_info']['user']['preferences']['expressoMail']['number_of_contacts'] = $current_config['expressoMail_Number_of_dynamic_contacts'] ? $current_config['expressoMail_Number_of_dynamic_contacts'] : "0"; 
     
    215225        $_SESSION['phpgw_info']['user']['preferences']['expressoMail']['auto_create_local'] = $GLOBALS['phpgw_info']['user']['preferences']['expressoMail']['auto_create_local'] ? $GLOBALS['phpgw_info']['user']['preferences']['expressoMail']['auto_create_local'] : "0"; 
    216226        $_SESSION['phpgw_info']['user']['preferences']['expressoMail']['return_recipient_deafault'] = $GLOBALS['phpgw_info']['user']['preferences']['expressoMail']['return_recipient_deafault'] ? $GLOBALS['phpgw_info']['user']['preferences']['expressoMail']['return_recipient_deafault'] : "0"; 
    217  
    218227        $_SESSION['phpgw_info']['user']['preferences']['expressoMail']['quick_search_default'] = $GLOBALS['phpgw_info']['user']['preferences']['expressoMail']['quick_search_default'] ? $GLOBALS['phpgw_info']['user']['preferences']['expressoMail']['quick_search_default'] : 1; 
    219228        //      ACL for block edit Personal Data. 
     
    274283    $_SESSION['phpgw_info']['server']['expressomail']['expressoMail_use_spam_filter'] = $current_config['expressoMail_use_spam_filter'];    
    275284    echo '<script> var use_spam_filter = \''.$current_config['expressoMail_use_spam_filter'].'\' 
    276            var sieve_forward_domains = \''.$current_config['expressoMail_sieve_forward_domains'].'\' </script>'; 
     285           var sieve_forward_domains = \''.$current_config['expressoMail_sieve_forward_domains'].'\'  
     286                  </script>'; 
    277287        // End Set Anti-Spam options. 
    278288 
     
    352362                                "js/main.js," . 
    353363                                "js/draw_api.js,"; 
    354  
    355         if ($GLOBALS['phpgw_info']['user']['preferences']['expressoMail']['use_shortcuts'])  
    356         {  
    357                 //echo $obj -> getFilesJs("js/shortcut.js", $update_version);  
    358                 $scripts .= "js/shortcut.js,";  
    359         }  
    360  
     364         
     365        if ($GLOBALS['phpgw_info']['user']['preferences']['expressoMail']['use_shortcuts']) 
     366        { 
     367                //echo $obj -> getFilesJs("js/shortcut.js", $update_version);  
     368                $scripts .= "js/shortcut.js,"; 
     369        } 
     370                                 
    361371        if($_SESSION['phpgw_info']['user']['preferences']['expressoMail']['use_local_messages']) 
    362372                $scripts .= "js/local_messages.js,"; 
     
    364374                                "js/DropDownContacts.js," . 
    365375                                "js/doiMenuData.js," . 
    366                                 "js/connector.js"; 
     376                                "js/connector.js";               
    367377        echo $obj -> getFilesJs($scripts, $update_version); 
    368378        echo ' 
  • branches/2.4/expressoMail1_2/js/QuickCatalogSearch.js

    r6631 r6754  
    1414                }); 
    1515        });         
    16  
     16         
    1717        /* showlist */   
    1818        emQuickCatalogSearch.prototype.showList = function(data, begin, end, ID, field) 
     
    125125                switch(data_['type_catalog']) { 
    126126                        case 'G': 
    127                                   if(data_['extra_ldap_fields'] != undefined){  
    128                                           if(data_['extra_ldap_fields'].length != 0)  
    129                                                   var extra_fields = (data_['extra_ldap_fields']).split("#");   
     127                                if(data_['extra_ldap_fields'] != undefined){ 
     128                                        if(data_['extra_ldap_fields'].length != 0) 
     129                                                var extra_fields = (data_['extra_ldap_fields']).split("#");    
    130130                                        else 
    131131                                                var extra_fields = [];   
     
    149149                                        } 
    150150                                } 
     151                                if (data_[id_contact].vacationactive == "TRUE"){ 
     152                                        details.append('<p><img src="templates/default/images/mala-big.png"/><span class="title-outoffice">Filtro "Fora do Escritório" ativo.</span></p>');      
     153                                        if ( data_[id_contact].vacationinfo ){ 
     154                                                details.append('<div class="outoffice"><div class="outoffice-inner"><span>'+ data_[id_contact].vacationinfo +'</span></div></div>'); 
     155                                                if ( $('.outoffice-inner').height() > $('.outoffice').height() ){                                                
     156                                                        var link = $('<a>').html('Ver mais'); 
     157                                                        link.attr('id','more'); 
     158                                                        link.bind('click',function(){$('.outoffice').animate({height: $('.outoffice-inner').height(),width: '-=15px'},800); $('#more').unbind('click').hide();}); 
     159                                                        details.append(link); 
     160                                                } 
     161                                        } 
     162                                } 
    151163                                break; 
    152164                        case 'P': 
     
    157169                if(data_[id_contact].telephonenumber != null) 
    158170                    details.append('<p><label class="attribute">Telefone</label>' + '<span class="value">' + data_[id_contact].telephonenumber + '</span></p>'); 
     171                                if (data_[id_contact].vacationactive == "TRUE"){ 
     172                                        details.append('<p><img src="templates/default/images/mala-big.png"/><span class="title-outoffice">Filtro "Fora do Escritório" ativo.</span></p>');      
     173                                        if (data_[id_contact].vacationinfo){ 
     174                                                details.append('<div class="outoffice"><div class="outoffice-inner"><span>'+ data_[id_contact].vacationinfo +'</span></div></div>'); 
     175                                                if ( $('.outoffice-inner').height() > $('.outoffice').height() ){ 
     176                                                        var link = $('<a>').html('Ver mais'); 
     177                                                        link.attr('id','more'); 
     178                                                        link.bind('click',function(){$('.outoffice').animate({height: $('.outoffice-inner').height(),width: '-=15px'},800); $('#more').unbind('click').hide();}); 
     179                                                        details.append(link); 
     180                                                } 
     181                                        } 
     182                                }        
    159183                                break; 
    160184                        default: 
    161                                 if(data_['extra_ldap_fields'] != undefined){  
    162                                         if(data_['extra_ldap_fields'].length != 0)  
    163                                                 var extra_fields = (data_['extra_ldap_fields']).split("#");     
     185                                if(data_['extra_ldap_fields'] != undefined){ 
     186                                        if(data_['extra_ldap_fields'].length != 0) 
     187                                                var extra_fields = (data_['extra_ldap_fields']).split("#");    
    164188                                        else 
    165189                                                var extra_fields = [];    
     
    190214                                        } 
    191215                                } 
     216                                if (data_[id_contact].vacationactive == "TRUE"){ 
     217                                        details.append('<p><img src="templates/default/images/mala-big.png"/><span class="title-outoffice">Filtro "Fora do Escritório" ativo.</span></p>');      
     218                                        if (data_[id_contact].vacationinfo){ 
     219                                                details.append('<div class="outoffice"><div class="outoffice-inner"><span>'+ data_[id_contact].vacationinfo +'</span></div></div>'); 
     220                                                if ( $('.outoffice-inner').height() > $('.outoffice').height() ){ 
     221                                                        var link = $('<a>').html('Ver mais'); 
     222                                                        link.attr('id','more'); 
     223                                                        link.bind('click',function(){$('.outoffice').animate({height: $('.outoffice-inner').height(),width: '-=15px'},800); $('#more').unbind('click').hide();}); 
     224                                                        details.append(link); 
     225                                                } 
     226                                        }        
     227                                }                                
    192228                        break; 
    193229                }                                
     
    255291                        var signal = "+"; 
    256292                        var btnClass = "add"; 
    257                         var emailList = content.find(field_).val(); 
    258                         var emails_adicionados = emailList.split(","); 
     293                        emails_adicionados = ""; 
     294                        var emailList = content.find(field_).filter("input").parent().find("div input"); 
     295                        //      var array = content.find(".to-tr").find(".box"); 
     296                        $.each(emailList, function(index, value){ 
     297                                emails_adicionados += $(value).val() + ","; 
     298                        }); 
     299                        emails_adicionados = emails_adicionados.split(","); 
    259300                        for(aux=0; aux<emails_adicionados.length -1; aux++) { 
    260301                                if(emails_adicionados[aux].match(/<([^<]*)>[\s]*$/)){ 
     
    279320                        else if(contact_name.toLowerCase().indexOf(data.search_for.toLowerCase()) != -1 && data.search_for.indexOf(" ") == -1 && data.search_for.indexOf("@") == -1)                                                                     
    280321                                contact_name = contact_name.substring(0, contact_name.toLowerCase().indexOf(data.search_for.toLowerCase())) + "<u>" + contact_name.substr(contact_name.toLowerCase().indexOf(data.search_for.toLowerCase()), data.search_for.length) + "</u>" + contact_name.substring(contact_name.toLowerCase().indexOf(data.search_for.toLowerCase()) + data.search_for.length); 
    281                         var line = '<span class="menu-control"><button class="'+btnClass+'" id="actions_'+i+'" onClick="'+exist+'(document.getElementById(\'contact_' + i + '\').innerHTML, this, \'contact_' + i + '\')">'+ signal +'</button></span><div id="contact_' + i + '" onDblClick="'+exist+'(this.innerHTML, document.getElementById(\'actions_'+i+'\'), \'contact_' + i + '\')"><div class="name_contact"><strong class="name">' + contact_name + '</strong><em class="email">' + ((utf8_decoder(data[i-1].mail) != undefined)? (utf8_decoder(data[i-1].mail) == 'undefined' ? get_lang("No mail") : utf8_decoder(data[i-1].mail)) : get_lang("No mail")) + '</em></div></div>'; 
     322                        var vacationImg = ''; 
     323                        if (data[i-1].vacationactive == "TRUE") 
     324                                vacationImg = '<img src="templates/default/images/mala-small.png"/>';    
     325                        var line = '<span class="menu-control"><button class="'+btnClass+'" id="actions_'+i+'" onClick="'+exist+'(document.getElementById(\'contact_' + i + '\').innerHTML, this, \'contact_' + i + '\')">'+ signal +'</button></span><div id="contact_' + i + '" onDblClick="'+exist+'(this.innerHTML, document.getElementById(\'actions_'+i+'\'), \'contact_' + i + '\')"><div class="name_contact"><strong class="name">' + contact_name +' '+ vacationImg +'</strong><em class="email">' + ((utf8_decoder(data[i-1].mail) != undefined)? (utf8_decoder(data[i-1].mail) == 'undefined' ? get_lang("No mail") : utf8_decoder(data[i-1].mail)) : get_lang("No mail")) + '</em></div></div>'; 
    282326                        Op.innerHTML = line; 
    283327            $(Op).val(i - 1); 
     
    317361                                                } 
    318362                                        } 
    319                                 }                        
     363                                } 
     364                                if (data[first_contact].vacationactive == "TRUE"){ 
     365                                        details.append('<p><img src="templates/default/images/mala-big.png"/><span class="title-outoffice">Filtro "Fora do Escritório" ativo.</span></p>');      
     366                                        if ( data[first_contact].vacationinfo ){ 
     367                                                details.append('<div class="outoffice"><div class="outoffice-inner"><span>'+ data[first_contact].vacationinfo +'</span></div></div>'); 
     368                                                if ( $('.outoffice-inner').height() > $('.outoffice').height() ){                                                
     369                                                        var link = $('<a>').html('Ver mais'); 
     370                                                        link.attr('id','more'); 
     371                                                        link.bind('click',function(){$('.outoffice').animate({height: $('.outoffice-inner').height(),width: '-=15px'},800); $('#more').unbind('click').hide();}); 
     372                                                        details.append(link); 
     373                                                }        
     374                                        }        
     375                                }                                                        
    320376                                break; 
    321377                        case 'P': 
     
    326382                if(data[first_contact].telephonenumber != null) 
    327383                                        details.append('<p><label class="attribute">Telefone</label>' + '<span class="value">' + data[first_contact].telephonenumber  + '</span></p>'); 
     384                                if (data[first_contact].vacationactive == "TRUE"){ 
     385                                        details.append('<p><img src="templates/default/images/mala-big.png"/><span class="title-outoffice">Filtro "Fora do Escritório" ativo.</span></p>');      
     386                                        if ( data[first_contact].vacationinfo ){ 
     387                                                details.append('<div class="outoffice"><div class="outoffice-inner"><span>'+ data[first_contact].vacationinfo +'</span></div></div>'); 
     388                                                if ( $('.outoffice-inner').height() > $('.outoffice').height() ){ 
     389                                                        var link = $('<a>').html('Ver mais'); 
     390                                                        link.attr('id','more'); 
     391                                                        link.bind('click',function(){$('.outoffice').animate({height: $('.outoffice-inner').height(),width: '-=15px'},800); $('#more').unbind('click').hide();}); 
     392                                                        details.append(link); 
     393                                                }        
     394                                        } 
     395                                }                                
    328396                                break; 
    329397                        default:         
     
    358426                                        } 
    359427                                } 
     428                                if (data[first_contact].vacationactive == "TRUE"){ 
     429                                        details.append('<p><img src="templates/default/images/mala-big.png"/><span class="title-outoffice">Filtro "Fora do Escritório" ativo.</span></p>');      
     430                                        if ( data[first_contact].vacationinfo ){ 
     431                                                details.append('<div class="outoffice"><div class="outoffice-inner"><span>'+ data[first_contact].vacationinfo +'</span></div></div>'); 
     432                                                if ( $('.outoffice-inner').height() > $('.outoffice').height() ){                                                
     433                                                        var link = $('<a>').html('Ver mais'); 
     434                                                        link.attr('id','more'); 
     435                                                        link.bind('click',function(){$('.outoffice').animate({height: $('.outoffice-inner').height(),width: '-=15px'},800); $('#more').unbind('click').hide();}); 
     436                                                        details.append(link); 
     437                                                }        
     438                                        } 
     439                                }                                
    360440                                break; 
    361441                } 
    362                 var string_results = sliderValue + " " + get_lang("of") + " " + paginas + " (" + data.length + " " + get_lang("Results") + ")";  
    363                 $( "#amount-text" ).val( string_results ).attr('readonly', true); 
     442                var string_results = sliderValue + " " + get_lang("of") + " " + paginas + " (" + data.length + " " + get_lang("Results") + ")"; 
     443                $( "#amount-text" ).val( string_results ).attr('readonly', true); 
    364444                $("button").button(); 
    365445                //$("button.remove").button({icons:{primary:"ui-icon-close"}, text: false}); 
     
    389469                                                                        }else 
    390470                                                                                var extra_fields = [];    
    391                                                                         if(preferences.default_fields_quick_search != 0 && data[this.value] ) { 
    392                                                                                         details.append('<p><label class="attribute">' + utf8_decoder(data[this.value].cn[0]) + "</label>" + '<span class="value">' + (data[this.value].mail ? data[this.value].mail[0] : "")+ "</span></p>"); 
    393                                                                                 if(data[this.value].telephonenumber ) 
     471                                                                        if(preferences.default_fields_quick_search != 0 && data[this.value] ) {  
     472                                            details.append('<p><label class="attribute">' + utf8_decoder(data[this.value].cn[0]) + "</label>" + '<span class="value">' + (data[this.value].mail ? data[this.value].mail[0] : "")+ "</span></p>"); 
     473                                                                                if(data[this.value].telephonenumber ) 
    394474                                                                                        details.append('<p><label class="attribute">Telefone</label>' + '<span class="value">' + (data[this.value].telephonenumber ? data[this.value].telephonenumber[0] : "")+ "</span></p>"); 
    395475                                                                        } 
     
    405485                                                                                } 
    406486                                                                        } 
     487                                                                        if (data[this.value].vacationactive == "TRUE"){ 
     488                                                                                details.append('<p><img src="templates/default/images/mala-big.png"/><span class="title-outoffice">Filtro "Fora do Escritório" ativo.</span></p>');      
     489                                                                                if ( data[this.value].vacationinfo ){ 
     490                                                                                        details.append('<div class="outoffice"><div class="outoffice-inner"><span>'+ data[this.value].vacationinfo +'</span></div></div>'); 
     491                                                                                        if ( $('.outoffice-inner').height() > $('.outoffice').height() ){                                                                                        
     492                                                                                                var link = $('<a>').html('Ver mais'); 
     493                                                                                                link.attr('id','more'); 
     494                                                                                                link.bind('click',function(){$('.outoffice').animate({height: $('.outoffice-inner').height(),width: '-=15px'},800); $('#more').unbind('click').hide();}); 
     495                                                                                                details.append(link); 
     496                                                                                        } 
     497                                                                                } 
     498                                                                        }                                                                        
    407499                                                                        break; 
    408500                                                                case 'P': 
     
    413505                                                                        if(data[this.value].telephonenumber != null) 
    414506                                                                                details.append('<p><label class="attribute">Telefone</label>' + '<span class="value">' + data[this.value].telephonenumber + "</span></p>"); 
     507                                                                        if (data[this.value].vacationactive == "TRUE"){ 
     508                                                                                details.append('<p><img src="templates/default/images/mala-big.png"/><span class="title-outoffice">Filtro "Fora do Escritório" ativo.</span></p>');      
     509                                                                                if ( data[this.value].vacationinfo ){ 
     510                                                                                        details.append('<div class="outoffice"><div class="outoffice-inner"><span>'+ data[this.value].vacationinfo +'</span></div></div>'); 
     511                                                                                        if ( $('.outoffice-inner').height() > $('.outoffice').height() ){ 
     512                                                                                                var link = $('<a>').html('Ver mais'); 
     513                                                                                                link.attr('id','more'); 
     514                                                                                                link.bind('click',function(){$('.outoffice').animate({height: $('.outoffice-inner').height(),width: '-=15px'},800); $('#more').unbind('click').hide();}); 
     515                                                                                                details.append(link); 
     516                                                                                        }        
     517                                                                                } 
     518                                                                        }                                                                        
    415519                                                                        break; 
    416520                                                                default: 
    417                                                                         if(this.value == undefined)  
    418                                                                                 break;  
    419  
     521                                                                        if(this.value == undefined) 
     522                                                                                break; 
     523                                                                                 
    420524                                                                        if(data['extra_ldap_fields'].length != 0) 
    421525                                                                                var extra_fields = (data['extra_ldap_fields']).split("#");    
     
    447551                                                                                } 
    448552                                                                        } 
     553                                                                        if (data[this.value].vacationactive == "TRUE"){ 
     554                                                                                details.append('<p><img src="templates/default/images/mala-big.png"/><span class="title-outoffice">Filtro "Fora do Escritório" ativo.</span></p>');      
     555                                                                                if ( data[this.value].vacationinfo ){ 
     556                                                                                        details.append('<div class="outoffice"><div class="outoffice-inner"><span>'+ data[this.value].vacationinfo +'</span></div></div>') 
     557                                                                                        if ( $('.outoffice-inner').height() > $('.outoffice').height() ){ 
     558                                                                                                var link = $('<a>').html('Ver mais'); 
     559                                                                                                link.attr('id','more'); 
     560                                                                                                link.bind('click',function(){$('.outoffice').animate({height: $('.outoffice-inner').height(),width: '-=15px'},800); $('#more').unbind('click').hide();}); 
     561                                                                                                details.append(link); 
     562                                                                                        } 
     563                                                                                }        
     564                                                                        }                                                                        
    449565                                                                        break; 
    450566                                                        } 
     
    587703                var nome = $(contact).clone().find('.name').text(); 
    588704                var email = $(contact).clone().find('.email').text(); 
    589                  
    590705                if(email == get_lang("No mail")){ 
    591706                        alert(get_lang("It is not possible to add this contact as a recipient because it does not have email")); 
     
    594709                        return; 
    595710                } 
    596                  
    597711                verifyEmails(email, divs); 
    598                  
    599                 final_contact = "\""+nome +"\" <"+email+">, "; 
    600                  
    601                 var emailList      = content.find(field_).val(); 
    602                 //remove os caracteres da busca 
    603                 emailList = emailList.substr(0,emailList.lastIndexOf(',')+1);  
    604                  
    605         if (emailList[0] != '"' && emailList.indexOf(",") < 0) 
    606                         emailList = emailList.substr(end_); 
    607         if(emailList.lastIndexOf(",") > 0){ 
    608                 if(emailList.substr(emailList.length-1, emailList.length) == "," || emailList.substr(emailList.length-2, 1) == ","){ 
    609                         emailList = emailList.substr(0, emailList.lastIndexOf(",") + 1); 
    610                 } else { 
    611                         emailList = emailList.substr(0, emailList.lastIndexOf("") + 1);          
    612                         final_contact = ","+final_contact; 
     712                final_contact = "\""+nome +"\" <"+email+">"; 
     713 
     714                final_contact = final_contact.replace(/\/n/, "");  
     715                var index = parseInt(divs.split("_")[1])-1; 
     716                if(data_[index].type_contact == "G"){ 
     717                        var ldap_id = preferences.expressoMail_ldap_identifier_recipient; 
     718                        if(ldap_id){ 
     719                                draw_email_box( 
     720                                        (data_[index][ldap_id.toLowerCase()] ? data_[index][ldap_id.toLowerCase()][0] : final_contact) 
     721                                        , content.find(field_).filter("input") 
     722                                ); 
     723                        }else{ 
     724                                draw_email_box(final_contact, content.find(field_).filter("input")); 
     725                        } 
     726                }else{ 
     727                        draw_email_box((data_[index].id_contact ? data_[index].id_contact : data_[index].id), content.find(field_).filter("input"), (data_[index].id_contact ? true : "G")); 
    613728                } 
    614         } 
    615  
    616                 final_contact = final_contact.replace(/\/n/, ""); 
    617                 new_emailList = emailList + final_contact;     
    618         content.find(field_).val(new_emailList); 
    619                  
    620                 content.find(field_).trigger("update"); 
    621                  
    622729                content.find(field_).filter("input").val(""); 
    623730                button.onclick = function(){ 
     
    625732                }; 
    626733                var div = document.getElementById(divs); 
    627                  
    628734                div.ondblclick = function(){ 
    629735                        remove_contact_field(div.innerHTML, button, divs); 
    630736                }; 
    631                  
    632737                button.innerHTML = '<span class="ui-button-text" style="">x</span>'; 
    633738    } 
     
    639744        function remove_contact_field(contact, button, divs) { 
    640745                var email = $(contact).clone().find('.email').text(); 
    641                 var exist = false; 
    642                  
    643                 var emailList = content.find(field_).val(); 
    644                 var emails_adicionados = emailList.split(","); 
    645                  
    646                 verifyEmails(email, divs); 
    647                  
    648                 for(i=0; i<emails_adicionados.length -1; i++) { 
    649  
    650                         if(emails_adicionados[i].match(/<([^<]*)>[\s]*$/)){ 
    651                                 if(emails_adicionados[i].match(/<([^<]*)>[\s]*$/)[1].toLowerCase() == email.toLowerCase()) { 
    652                                         emails_adicionados[i] = "%"; 
    653                                         exist = true; 
    654                                 } 
    655                         }else{ 
    656                                 if(emails_adicionados[i].toLowerCase() == email.toLowerCase()) { 
    657                                         emails_adicionados[i] = "%"; 
    658                                         exist = true; 
    659                                 } 
    660                         } 
    661                 } 
    662                  
    663                 if (exist == false)  
    664                         return false; 
    665                 var novos_contatos = emails_adicionados.join(",");   
    666                 novos_contatos = novos_contatos.replace(/%,/g, ""); 
    667                 content.find(field_).val(novos_contatos); 
    668                  
     746                var array = content.find(field_).parent().find("div input"); 
     747                $.each(array, function(index, value){ 
     748                        var validated_email = $(value).val(); 
     749                        if(validated_email.match(/<([^<]*)>[\s]*$/)){ 
     750                                if(validated_email.match(/<([^<]*)>[\s]*$/)[1].toLowerCase() == email.toLowerCase()) { 
     751                                        $(value).parent().remove(); 
     752                                } 
     753                        } 
     754                }); 
     755         
    669756                button.onclick = function(){ 
    670757                        add_contact_field(document.getElementById(divs).innerHTML, button, divs); 
    671758                }; 
    672                  
    673759                var div = document.getElementById(divs); 
    674                  
    675760                div.ondblclick = function(){ 
    676761                        add_contact_field(div.innerHTML, button, divs); 
    677762                }; 
    678                  
    679                 content.find(field_).trigger("update"); 
    680763                button.innerHTML = '<span class="ui-button-text" style="">+</span>'; 
    681764        } 
  • branches/2.4/expressoMail1_2/js/QuickSearchUser.js

    r5477 r6754  
    5353        } 
    5454         
    55         emQuickSearchUser.prototype.create_new_message = function (cn, mail) 
     55        emQuickSearchUser.prototype.create_new_message = function (cn, mail, uid) 
    5656        { 
    5757                QuickSearchUser.closeWindow(); 
     58                var ldap_id = preferences.expressoMail_ldap_identifier_recipient; 
    5859                 
    59                 if (openTab.type[currentTab] != 4) 
    60                 { 
    61                         Element("msg_number").value = "\""+cn+"\" <"+mail+">"; 
     60                if (openTab.type[currentTab] != 4){ 
    6261                        new_message("new","null"); 
    6362                } 
    64                 else 
    65                 { 
    66                         var ToField = Element('to_'+currentTab); 
    67                         ToField.value = ToField.value +"\""+cn+"\" <"+mail+">,"; 
     63                 
     64                if(ldap_id){ 
     65                        draw_email_box(uid, $("#content_id_"+currentTab).find(".to").filter("input"));  
     66                }else{ 
     67                        draw_email_box("\""+cn+"\" <"+mail+">", $("#content_id_"+currentTab).find(".to").filter("input"));  
    6868                } 
    6969        } 
  • branches/2.4/expressoMail1_2/js/TreeShow.js

    r6607 r6754  
    8888                var aux = ttree.getFolder().split(cyrus_delimiter); 
    8989                var aux2; 
    90  
    91                 if(ttree.getFolder() == "")  
    92                 {  
    93                         ttree.setFolder("root");  
    94                 }  
    95  
     90                 
     91                if(ttree.getFolder() == "") 
     92                { 
     93                        ttree.setFolder("root"); 
     94                } 
     95                 
    9696                if( ttree.getFolder() != "" ) 
    9797                { 
  • branches/2.4/expressoMail1_2/js/abas.js

    r6691 r6754  
    270270        parent_bb.insertBefore(td, bb); 
    271271 
    272         if((typeof(id_value) == 'string') && id_value.match(/_r/)){  
     272        if((typeof(id_value) == 'string') && id_value.match(/_r/)){ 
    273273                $(td).draggable({ 
    274274                        start : function(){ 
     
    306306                                                        var border_id = ui.draggable.find("input[type=hidden]").attr("name"); 
    307307                                                        if(folder_to_move == "border_tr"){ 
    308                                                                 var id_msg = border_id.split("_")[0];  
     308                                                                var id_msg = border_id.split("_")[0]; 
    309309                                                                folder = $("#input_folder_"+border_id+"_r")[0] ? $("#input_folder_"+border_id+"_r").val() : (openTab.imapBox[border_id] ? openTab.imapBox[border_id]:get_current_folder()); 
    310310                                                                move_msgs2(folder, id_msg, border_id, folder_to, to_folder_title,true); 
     
    400400        } 
    401401        var caption = ""; 
    402         if (border != null){  
    403                     Element("font_"+border.id).style.width = (border_width - 35)+'px';  
    404                     Element("font_"+border.id).innerHTML = title;  
    405         }  
     402    if (border != null){ 
     403                Element("font_"+border.id).style.width = (border_width - 35)+'px'; 
     404                Element("font_"+border.id).innerHTML = title; 
     405        } 
    406406        return(title); 
    407407} 
     
    435435                            'width' : width, 
    436436                            'onClose':  function(clicked) { 
    437                                                                         if(clicked == 'Cancelar'){  
    438                                                                                 if (RichTextEditor.plain[id] != true)  
    439                                                                                         setTimeout("RichTextEditor.focus("+ID+")",100);                    
    440                                                                                 else    
    441                                                                                         $('#body_'+ID).focus();  
    442                                                                         } 
     437                                                                        if(clicked == 'Cancelar'){ 
     438                                                                                if (RichTextEditor.plain[id] != true)  
     439                                                                                        setTimeout("RichTextEditor.focus("+ID+")",100);                   
     440                                                                                else   
     441                                                                                        $('#body_'+ID).focus();  
     442                                                                        } 
    443443                                    if(clicked == 'Descartar alterações' || clicked == 'Descartar alterações e anexos' ) { 
    444444                                        if (openTab.imapBox[ID] && !openTab.toPreserve[ID]) 
     
    502502function delete_border(ID, msg_sent) 
    503503{ 
    504      
    505         if($("#border_id_"+ID).attr("title") == get_lang("New Message")){  
    506                 var to = $("#content_id_"+ID).find(".to").parent(".email-area").find("div").length || $("#content_id_"+ID).find(".email-area").find(".to").val() || $("#content_id_"+ID).find(".to").val();  
    507                 var cc = $("#content_id_"+ID).find(".cc").parent(".email-area").find("div").length || $("#content_id_"+ID).find(".email-area").find(".cc").val() || $("#content_id_"+ID).find(".cc").val();  
    508                 var cco = $("#content_id_"+ID).find(".cco").parent(".email-area").find("div").length || $("#content_id_"+ID).find(".email-area").find(".cco").val() || $("#content_id_"+ID).find(".cco").val();  
    509                 var subject = $("#content_id_"+ID).find(".subject").val();  
    510                 var auxAttachments = false;  
    511                 var attachments = $("#content_id_"+ID).find("ul.attachments-list").find("li").each(function(){  
    512                         ($(this).find("p").length > 0) ? auxAttachments = true : auxAttachments;  
    513                         if(auxAttachments)  
    514                                 return false;  
    515                 });  
    516                 var textArea = RichTextEditor.getData("body_"+ID);  
    517                   
    518                 if(!to && !cc && !cco && !auxAttachments && subject == "" && textArea == "")  
    519                         close_delete(ID, msg_sent);  
     504         
     505        if($("#border_id_"+ID).attr("title") == get_lang("New Message")){ 
     506                var to = $("#content_id_"+ID).find(".to").parent(".email-area").find("div").length || $("#content_id_"+ID).find(".email-area").find(".to").val(); 
     507                var cc = $("#content_id_"+ID).find(".cc").parent(".email-area").find("div").length || $("#content_id_"+ID).find(".email-area").find(".cc").val(); 
     508                var cco = $("#content_id_"+ID).find(".cco").parent(".email-area").find("div").length || $("#content_id_"+ID).find(".email-area").find(".cco").val(); 
     509                var subject = $("#content_id_"+ID).find(".subject").val(); 
     510                var auxAttachments = false; 
     511                var attachments = $("#content_id_"+ID).find("ul.attachments-list").find("li").each(function(){ 
     512                        ($(this).find("p").length > 0) ? auxAttachments = true : auxAttachments; 
     513                        if(auxAttachments) 
     514                                return false; 
     515                }); 
     516                var textArea = RichTextEditor.getData("body_"+ID); 
     517                 
     518                if(!to && !cc && !cco && !auxAttachments && subject == "" && textArea == "") 
     519                        close_delete(ID, msg_sent); 
    520520        } 
    521521        var bolExecuteClose = true; 
  • branches/2.4/expressoMail1_2/js/ccQuickAdd.js

    r6690 r6754  
    1 /* Build the Object */  
    2 var     ccQuickAddOne = {  
    3         send : function(data){  
    4                 var email = data[4];     
     1/* Build the Object */ 
     2var     ccQuickAddOne = { 
     3        send : function(data){ 
     4                var email = data[4]; 
    55                var handler = function (responseText) 
    66                { 
     
    99                                write_msg("Problema ao contactar servidor"); 
    1010                                return; 
    11                         }else if (data['status'] == 'alreadyExists'){  
     11                        }else if (data['status'] == 'alreadyExists'){ 
    1212                                alert(data['msg']); 
    1313                                return; 
     
    1616                        } 
    1717                         
    18                         write_msg(get_lang("Contact added successfully.")); 
     18                        var exist = 0; 
     19                        $.each(dynamicContacts, function(x, valuex){ 
     20                                if(valuex.mail == email){ 
     21                                        exist = valuex.id; 
     22                                        return false; 
     23                                } 
     24                        }); 
     25                        if(exist){ 
     26                                REST.delete("/dynamiccontact/"+exist); 
     27                                write_msg(get_lang("The contact was moved from recent contacts to personal contacts successful.")); 
     28                        }else{ 
     29                                write_msg(get_lang("Contact added successfully.")); 
     30                        }                        
    1931                }; 
    2032                 
    21                 var data2 = new Array();  
    22                 for( var i in data )  
    23                         data2[ data2.length ] = data[i];  
    24                        
    25                 var sdata       = 'add='+escape(connector.serialize(data2)); 
     33                var data2 = new Array(); 
     34                for( var i in data ) 
     35                        data2[ data2.length ] = data[i]; 
     36                 
     37                var sdata       = 'add='+escape(connector.serialize(data2)); 
    2638                var CC_url      = '../index.php?menuaction=contactcenter.ui_data.data_manager&method='; 
    2739                connector.newRequest('cQuickAdd.Send', CC_url+'quick_add', 'POST', handler, sdata); 
     40                updateDynamicPersonalContacts(); 
     41                cache = new Array(); 
    2842                return true; 
    2943        }, 
    30         showList: function(data){  
    31                 var     cc_data = ((typeof data) == 'object' ) ? data : data.split(',');  
    32                 quickContact = $("#quickAddContact").html( DataLayer.render( BASE_PATH + "modules/mail/templates/quickAddContact.ejs",{ nick : cc_data[0], fname : cc_data[1], lname : cc_data[2], email : cc_data[3] }));  
    33                 quickContact.dialog({  
    34                         resizable       : false,  
    35                         title           : get_lang("Quick Add"),  
    36                         modal           : true,  
    37                         buttons         : [  
    38                                 {  
    39                                         text: get_lang("Cancel"),  
    40                                         click: function()  
    41                                         {  
    42                                                 $(this).dialog("close");  
    43                                         }  
    44                                 },  
    45                                 {  
    46                                         text: get_lang("Save"),  
    47                                         click: function()  
    48                                         {  
    49                                                 data = {  
    50                                                         nick: $(this).find('#quickAddOne_nickName').val(),  
    51                                                         name:  $(this).find('#quickAddOne_firstName').val(),  
    52                                                         last: $(this).find('#quickAddOne_lastName').val(),  
    53                                                         telefone: "",  
    54                                                         email: $(this).find('#quickAddOne_email').val()  
    55                                                 };  
    56                                                 $(this).find('input').removeClass("required-fail");  
    57                                                 if(data.name ==""){  
    58                                                         $(this).find('#quickAddOne_firstName').addClass("required-fail");  
    59                                                         return false;  
    60                                                 }else if(data.email ==""){  
    61                                                         $(this).find('#quickAddOne_email').addClass("required-fail");  
    62                                                         return false;  
    63                                                 }else if(!validateEmail(data.email)){  
    64                                                         $(this).find('#quickAddOne_email').addClass("required-fail");  
    65                                                         new $.Zebra_Dialog(get_lang("QuickAddInvalidMail", data.email),{  
    66                                                                 'buttons':  false,  
    67                                                                 'modal': false,  
    68                                                                 'position': ['right - 20', 'top + 20'],  
    69                                                                 'auto_close': 3000  
    70                                                         });  
    71                                                         return false;  
    72                                                 }  
    73                                                 if(ccQuickAddOne.send(data))  
    74                                                         $(this).dialog("close");  
    75                                         }  
    76                                 }  
    77                         ]  
    78                 });  
    79                 quickContact.next().css("background-color", "#E0EEEE").find("button").addClass("button").addClass("small"); 
    80 } 
     44        showList: function(data){ 
     45                var     cc_data = ((typeof data) == 'object' ) ? data : data.split(','); 
     46                quickContact = $("#quickAddContact").html( DataLayer.render( BASE_PATH + "modules/mail/templates/quickAddContact.ejs",{ nick : cc_data[0], fname : cc_data[1], lname : cc_data[2], email : cc_data[3] })); 
     47                quickContact.dialog({ 
     48                        resizable       : false, 
     49                        title           : get_lang("Quick Add"), 
     50                        modal           : true, 
     51                        buttons         : [ 
     52                                { 
     53                                        text: get_lang("Cancel"), 
     54                                        click: function() 
     55                                        { 
     56                                                $(this).dialog("close"); 
     57                                        }  
     58                                }, 
     59                                { 
     60                                        text: get_lang("Save"), 
     61                                        click: function() 
     62                                        { 
     63                                                data = { 
     64                                                        nick: $(this).find('#quickAddOne_nickName').val(), 
     65                                                        name:  $(this).find('#quickAddOne_firstName').val(), 
     66                                                        last: $(this).find('#quickAddOne_lastName').val(), 
     67                                                        telefone: "", 
     68                                                        email: $(this).find('#quickAddOne_email').val() 
     69                                                }; 
     70                                                $(this).find('input').removeClass("required-fail"); 
     71                                                if(data.name ==""){ 
     72                                                        $(this).find('#quickAddOne_firstName').addClass("required-fail"); 
     73                                                        return false; 
     74                                                }else if(data.email ==""){ 
     75                                                        $(this).find('#quickAddOne_email').addClass("required-fail"); 
     76                                                        return false; 
     77                                                }else if(!validateEmail(data.email)){ 
     78                                                        $(this).find('#quickAddOne_email').addClass("required-fail"); 
     79                                                        new $.Zebra_Dialog(get_lang("QuickAddInvalidMail", data.email),{ 
     80                                                                'buttons':  false, 
     81                                                                'modal': false, 
     82                                                                'position': ['right - 20', 'top + 20'], 
     83                                                                'auto_close': 3000 
     84                                                        }); 
     85                                                        return false; 
     86                                                } 
     87                                                if(ccQuickAddOne.send(data)) 
     88                                                        $(this).dialog("close"); 
     89                                        } 
     90                                } 
     91                        ] 
     92                }); 
     93                quickContact.next().css("background-color", "#E0EEEE").find("button").addClass("button").addClass("small"); 
     94        } 
    8195}; 
  • branches/2.4/expressoMail1_2/js/common_functions.js

    r6727 r6754  
    775775} 
    776776 
    777 function search_emails(value){ 
     777function search_emails(value, data){ 
    778778        var resize = false; 
    779779        resize = resize_borders(); 
     
    815815        connector.loadScript("search"); 
    816816        if (typeof(EsearchE) == 'undefined' || typeof(ttree) == 'undefined'){ 
    817                 setTimeout("search_emails('"+value+"')",500); 
     817                setTimeout("search_emails('"+value+"', '"+data+"')",500); 
    818818                return false; 
    819819        } 
    820         EsearchE.showForms(value); 
     820        EsearchE.showForms(value, data); 
    821821        $("#em_message_search").val(""); 
    822822        } 
     
    11271127                        Element("check_box_message_"+main_list[i].id).checked = true; 
    11281128                        remove_className(Element(main_list[i].id), 'selected_msg'); 
    1129                         if(!$("#"+main_list[i].id).hasClass("selected_shortcut_msg")){  
    1130                             //add_className(Element(main_list[i].id), 'selected_msg selected_shortcut_msg current_selected');  
    1131                             add_className(Element(main_list[i].id), 'selected_msg selected_shortcut_msg');  
    1132                     } else {  
    1133                             $("#"+main_list[i].id).addClass("selected_msg");  
    1134                             $("#"+main_list[i].id).addClass("selected_shortcut_msg");  
    1135                             $("#"+main_list[i].id).addClass("current_selected");              
    1136                     }  
     1129                        if(!$("#"+main_list[i].id).hasClass("selected_shortcut_msg")){ 
     1130                                //add_className(Element(main_list[i].id), 'selected_msg selected_shortcut_msg current_selected'); 
     1131                                add_className(Element(main_list[i].id), 'selected_msg selected_shortcut_msg'); 
     1132                        } else { 
     1133                                $("#"+main_list[i].id).addClass("selected_msg"); 
     1134                                $("#"+main_list[i].id).addClass("selected_shortcut_msg"); 
     1135                                $("#"+main_list[i].id).addClass("current_selected");             
     1136                        } 
    11371137                } 
    11381138        } 
     
    11441144                        remove_className(Element(main_list[i].id), 'selected_msg selected_shortcut_msg'); 
    11451145                        $("#"+main_list[i].id).removeClass("selected_msg"); 
    1146                         $("#"+main_list[i].id).removeClass("current_selected");  
    1147         }  
    1148         }  
     1146                        $("#"+main_list[i].id).removeClass("current_selected"); 
     1147                } 
     1148        } 
     1149         
    11491150} 
    11501151 
  • branches/2.4/expressoMail1_2/js/doiMenuData.js

    r5866 r6754  
    195195        items: menuToolsItems 
    196196}); 
    197  
     197var reComplexEmail = /<([^<]*)>[\s]*$/; 
     198$.contextMenu({ 
     199        selector: ".box", 
     200        autoHide:true, 
     201        items: { 
     202                "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]); }}, 
     203                "remove" : {name:get_lang("Remove recipient"), icon:"delete-box",callback: function(key, opt){ $(opt.$trigger).remove(); }}, 
     204                "sep1": "---------", 
     205                "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]); }}, 
     206                "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]);}}          
     207        } 
     208}); 
    198209 
    199210function updateLabelsColumn(messageInfo) { 
     
    294305} 
    295306 
    296  
    297  
    298  
    299  
    300  
    301  
     307function loadExtraLDAPBox(data, element){ 
     308        menuItensLabel = {}; 
     309        menuItensLabel["Name"] = {name: "<b>"+data[0].value+"</b>", disabled: true};             
     310        menuItensLabel["Email"] = {name: data[1].value, disabled: true};         
     311        if(data[2].value){ 
     312                menuItensLabel["TelefoneLabel"] = {name: "<b>"+get_lang("Telephone")+"</b>", disabled: true}; 
     313                menuItensLabel["TelefoneValue"] = {name: data[2].value, disabled: true}; 
     314        } 
     315        if(data[3]){ 
     316                if(data[3].value == "TRUE"){ 
     317                        menuItensLabel["outOffice"] = {name: "<b>"+get_lang("Out of office")+"</b>", disabled: true}; 
     318                        menuItensLabel["outOfficeValue"] = {name: data[4].value.substring(0, 20), disabled: true}; 
     319                } 
     320        } 
     321        $.contextMenu({ 
     322                selector: "#content_id_"+currentTab+" "+element+" .box-info", 
     323                trigger: 'hover', 
     324                delay:100, 
     325                autoHide:true, 
     326                items: menuItensLabel 
     327        });      
     328} 
     329 
     330function loadGroupBox(data, element){ 
     331        menuItensLabel = {}; 
     332        menuItensLabel["ContactGroupLabelAll"] = {name:"<b>"+get_lang("Group contacts")+"</b>", disabled: true}; 
     333        menuItensLabel["sep1"] = "---------"; 
     334        if(data.itens){ 
     335                var aux = 0; 
     336                for(var item in data.itens){ 
     337                        if(parseInt(item) <= 4){ 
     338                                menuItensLabel["ContactGroupLabel"+item] = {name: "<b>"+data.itens[item].data[0].value+"</b>", disabled: true}; 
     339                                menuItensLabel["ContactGroupValue"+item] = {name: data.itens[item].data[2].value, disabled: true}; 
     340                        }else{ 
     341                                aux++; 
     342                                if(aux == 1) 
     343                                        menuItensLabel["MoreContactGroupValue"] = {name : get_lang("And more %1 contact", aux), disabled: true }; 
     344                                else 
     345                                        menuItensLabel["MoreContactGroupValue"] = {name : get_lang("And more %1 contact", aux)+"s", disabled: true }; 
     346                        } 
     347                } 
     348        } 
     349        $.contextMenu({ 
     350                selector: "#content_id_"+currentTab+" "+element+" .box-info", 
     351                trigger: 'hover', 
     352                delay:100, 
     353                autoHide:true, 
     354                items: menuItensLabel 
     355        });      
     356} 
     357 
     358 
     359 
     360 
     361 
  • branches/2.4/expressoMail1_2/js/draw_api.js

    r6732 r6754  
    88 * formatação, etc.)  
    99 */ 
     10  
     11focusIn = ""; 
     12canMakeBox = true; 
     13fastSearch = false; 
     14 
    1015onceOpenedHeadersMessages = {}; 
    11  
     16var cache = new Array(); 
    1217var openTab = { 
    1318        'type' : [], // 8 types of tabs, further info. see expressolivre.org/dev/wiki/mail/Documentacao 
     
    891896        var _mouse_out; 
    892897        var _cell; 
    893         var colGroupMain = document.getElementById("colgroup_main_"+numBox);  
    894         var colGroupHead = document.getElementById("colgroup_head_"+numBox); 
     898        var colGroupMain = document.getElementById("colgroup_main_"+numBox); 
     899        var colGroupHead = document.getElementById("colgroup_head_"+numBox); 
    895900        for (var r=0;r<trM.length;r++) { 
    896901                for (var c=0;c<trM[r].cells.length;c++) { 
     
    899904                        if (is_mozilla && !is_webkit) { 
    900905                                if (!emptyBody) { 
    901                                         colGroupMain.childNodes[c].setAttribute("width",colSizes[tbl][c]);  
     906                                        colGroupMain.childNodes[c].setAttribute("width",colSizes[tbl][c]); 
    902907                                } 
    903                                 colGroupHead.childNodes[c].setAttribute("width",colSizes[tbl][c]);  
     908                                colGroupHead.childNodes[c].setAttribute("width",colSizes[tbl][c]); 
    904909                                if (tbH.rows[0].cells[c].className=="th_resizable") { 
    905910                                        // lots of stupid fixes for FF to redraw cell content 
     
    929934                document.getElementById("colgroup_main_"+numBox).childNodes[c].setAttribute("width",colSizes[tbl][c]); 
    930935 
    931 }  
    932         if (is_webkit || is_ie){  
    933                         var arrHeader = $('.message_header td');  
    934                         var arrBody = $('#tbody_box :first td');  
    935                         for(i=0;i<arrHeader.length;i++){  
     936        } 
     937        if (is_webkit || is_ie){ 
     938                        var arrHeader = $('.message_header td'); 
     939                        var arrBody = $('#tbody_box :first td'); 
     940                        for(i=0;i<arrHeader.length;i++){ 
    936941                                        if(arrBody[i] !== undefined && arrBody[i].width !== undefined) 
    937                                         arrHeader[i].width = arrBody[i].width;  
    938                         }  
     942                                        arrHeader[i].width = arrBody[i].width; 
     943                        }                        
    939944        } 
    940945} 
     
    15061511                if ((headers_msgs.Forwarded == 'F')  || (headers_msgs.Draft == 'X' && headers_msgs.Answered == 'A')){ 
    15071512                        td_element21.onclick=function(){search_emails(headers_msgs.subject.replace(/^(re: ?|fw: ?|enc: ?|res: ?|fwd: ?)*/gi,''),true);}; 
    1508                         td_element21.innerHTML = "<img src ='templates/"+template+"/images/forwarded.gif' title='"+get_lang('Forwarded')+"'>"; 
     1513                        td_element21.innerHTML = "<img src ='templates/"+template+"/images/forwarded.png' title='"+get_lang('Forwarded')+"'>"; 
    15091514                        headers_msgs.Draft = '' 
    15101515                        headers_msgs.Answered = ''; 
     
    15121517                } 
    15131518                else if (headers_msgs.Draft == 'X') 
    1514                         td_element21.innerHTML = "<img src ='templates/"+template+"/images/draft.gif' title='"+get_lang('Draft')+"'>"; 
     1519                        td_element21.innerHTML = "<img src ='templates/"+template+"/images/draft.png' title='"+get_lang('Draft')+"'>"; 
    15151520                else if (headers_msgs.Answered == 'A'){ 
    15161521                        td_element21.onclick=function(){search_emails(headers_msgs.subject.replace(/^(re: ?|fw: ?|enc: ?|res: ?|fwd: ?)*/gi,''),true);}; 
    1517                         td_element21.innerHTML = "<img src ='templates/"+template+"/images/answered.gif' title='"+get_lang('Answered')+"'>"; 
     1522                        td_element21.innerHTML = "<img src ='templates/"+template+"/images/answered.png' title='"+get_lang('Answered')+"'>"; 
    15181523                    }else 
    15191524                        td_element21.innerHTML = "&nbsp;&nbsp;&nbsp;"; 
     
    17641769                                        .html('<img src="../prototype/modules/mail/img/flagEditor.png">'); 
    17651770                                         
    1766                                         if(fail != 'success'){  
    1767                                             $('#td_message_followup_' + messageClickedId + ', ' +   
    1768                                             'tr[role="'+messageClickedId+'_'+msg_folder+'"] #td_message_followup_search_' + messageClickedId).find(".flag-edited").css("background", "#CCCCCC");  
    1769                                             MsgsCallbackFollowupflag[fail]();  
    1770                                         }else{  
    1771                                             $('#td_message_followup_' + messageClickedId + ', ' +   
    1772                                             'tr[role="'+messageClickedId+'_'+msg_folder+'"] #td_message_followup_search_' + messageClickedId).attr('title', get_lang('Follow up')).find(".flag-edited").css("background", headers_msgs.followupflagged.backgroundColor);  
    1773                                             updateCacheFollowupflag(messageClickedId, msg_folder, true);  
    1774                                         }  
     1771                                         
     1772                                        if(fail != 'success'){ 
     1773                                            $('#td_message_followup_' + messageClickedId + ', ' +  
     1774                                            'tr[role="'+messageClickedId+'_'+msg_folder+'"] #td_message_followup_search_' + messageClickedId).find(".flag-edited").css("background", "#CCCCCC"); 
     1775                                            MsgsCallbackFollowupflag[fail](); 
     1776                                        }else{ 
     1777                                            $('#td_message_followup_' + messageClickedId + ', ' +  
     1778                                            'tr[role="'+messageClickedId+'_'+msg_folder+'"] #td_message_followup_search_' + messageClickedId).attr('title', get_lang('Follow up')).find(".flag-edited").css("background", headers_msgs.followupflagged.backgroundColor); 
     1779                                            updateCacheFollowupflag(messageClickedId, msg_folder, true); 
     1780                                        }                                
    17751781                                }); 
    17761782                                 
     
    19821988var msg_selected; 
    19831989function draw_message(info_msg, ID){ 
     1990        // remove a flag $FilteredMessage da mensagem ao ser lida 
     1991        if(info_msg.Unseen == "U"){ 
     1992                $.each(fromRules, function(index, value) { 
     1993                        if(value == info_msg.msg_folder){ 
     1994                                cExecute ("$this.imap_functions.removeFlagMessagesFilter&folder="+info_msg.msg_folder+"&msg_number="+info_msg.msg_number, function(){});  
     1995                                return false; 
     1996                        } 
     1997                }); 
     1998        } 
    19841999        var content = document.getElementById('content_id_' + ID); 
    19852000 
     
    30333048                                                var newAttendeeName = ""; 
    30343049 
    3035                                                 var name = decoded.match(/"([^"]*)"/) ? decoded.match(/"([^"]*)"/)[1] : '';  
    3036                                                 var mail = decoded.match(/<([^<]*)>[\s]*$/) ? decoded.match(/<([^<]*)>[\s]*$/)[1].toLowerCase() : decoded;  
    3037   
    3038   
    3039                                                 var user = DataLayer.get('user', ["=", "mail", mail], true); 
     3050                                                var name = decoded.match(/"([^"]*)"/) ? decoded.match(/"([^"]*)"/)[1] : ''; 
     3051                                                var mail = decoded.match(/<([^<]*)>[\s]*$/) ? decoded.match(/<([^<]*)>[\s]*$/)[1].toLowerCase() : decoded;  
     3052 
     3053 
     3054                                                var user = DataLayer.get('user', ["=", "mail", mail], true); 
    30403055                                                 
    30413056                                                if( $.type(user) == "array") 
    3042                                                     user = user[0];  
    3043                   
    3044                                                 if(user != ''){  
    3045                                                     //user = {name : name , mail : mail};  
    3046                                                     if(User.me.mail == user.mail)  
    3047                                                             return(null);  
    3048                                                     user.isExternal = (!!user && !(!!user.isExternal)) ? 0 : 1;  
    3049  
    3050                                                     return  DataLayer.merge({  
    3051                                                             name: user.name,  
    3052                                                             mail: user.mail,  
    3053                                                             acl:  'r',  
    3054                                                             delegatedFrom: '0',  
    3055                                                             status: '4',  
    3056                                                             isExternal: user.isExternal  
    3057                                                     }, !!user.id ? {id : DataLayer.put('participant', {user: user.id, isExternal: user.isExternal})} : {id: DataLayer.put('participant', {user: user})});  
    3058                                                 }else if(mail.match(/[\w-]+(\.[\w-]+)*@(([A-Za-z\d][A-Za-z\d-]{0,61}[A-Za-z\d]\.)+[A-Za-z]{2,6}|\[\d{1,3}(\.\d{1,3}){3}\])/)){  
    3059                                                       
    3060                                                     var userId = DataLayer.put('user', {  
    3061                                                         name: name,  
    3062                                                         mail: mail,  
    3063                                                         isExternal: '1'  
    3064                                                     });  
    3065                                                     var newAttendeeId = DataLayer.put('participant', {  
    3066                                                         user: userId,  
    3067                                                         isExternal: '1'  
    3068                                                     });  
    3069  
    3070                                                     return  {  
    3071                                                             id: newAttendeeId,  
    3072                                                             name: name,  
    3073                                                             mail: mail,  
    3074                                                             acl:  'r',  
    3075                                                             delegatedFrom: '0',  
    3076                                                             status: '4',  
    3077                                                             isExternal: '1'  
    3078                                                     };  
    3079                                                       
    3080                                                 }else  
    3081                                                     return (null); 
     3057                                                    user = user[0]; 
     3058 
     3059                                                if(user != ''){ 
     3060                                                    //user = {name : name , mail : mail}; 
     3061                                                    if(User.me.mail == user.mail) 
     3062                                                            return(null); 
     3063                                                    user.isExternal = (!!user && !(!!user.isExternal)) ? 0 : 1; 
     3064 
     3065                                                    return  DataLayer.merge({ 
     3066                                                            name: user.name, 
     3067                                                            mail: user.mail, 
     3068                                                            acl:  'r', 
     3069                                                            delegatedFrom: '0', 
     3070                                                            status: '4', 
     3071                                                            isExternal: user.isExternal 
     3072                                                    }, !!user.id ? {id : DataLayer.put('participant', {user: user.id, isExternal: user.isExternal})} : {id: DataLayer.put('participant', {user: user})});  
     3073                                                }else if(mail.match(/[\w-]+(\.[\w-]+)*@(([A-Za-z\d][A-Za-z\d-]{0,61}[A-Za-z\d]\.)+[A-Za-z]{2,6}|\[\d{1,3}(\.\d{1,3}){3}\])/)){ 
     3074                                                     
     3075                                                    var userId = DataLayer.put('user', { 
     3076                                                        name: name,  
     3077                                                        mail: mail,  
     3078                                                        isExternal: '1' 
     3079                                                    }); 
     3080                                                    var newAttendeeId = DataLayer.put('participant', { 
     3081                                                        user: userId,  
     3082                                                        isExternal: '1' 
     3083                                                    }); 
     3084 
     3085                                                    return  { 
     3086                                                            id: newAttendeeId, 
     3087                                                            name: name, 
     3088                                                            mail: mail, 
     3089                                                            acl:  'r', 
     3090                                                            delegatedFrom: '0', 
     3091                                                            status: '4', 
     3092                                                            isExternal: '1' 
     3093                                                    }; 
     3094                                                     
     3095                                                }else 
     3096                                                    return (null); 
    30823097                                        })       
    30833098                                         
     
    35083523        resizeWindow();  
    35093524         
    3510         $("#div_message_scroll_"+ID).scrollTo( 0, 400, {queue:true} );  
     3525        $("#div_message_scroll_"+ID).scrollTo( 0, 400, {queue:true} ); 
    35113526} 
    35123527  
     
    35593574} 
    35603575 
    3561 function input_binds(input, ID){ 
    3562         var mySource = new Array(); 
    3563         var myArray = contacts.split(","); 
    3564         for(var i in myArray){ 
    3565                 var teste = myArray[i].split(";"); 
    3566                 if(teste.length > 1) 
    3567                         mySource.push({name : teste[0], email: teste[1], value : (teste[0] +" - "+teste[1])}); 
    3568                 else 
    3569                         mySource.push({name : "", email: teste[0], value :teste[0]}); 
    3570         } 
    3571         input.bind( "keydown", function( event ) { 
    3572                 if ( event.keyCode === $.ui.keyCode.TAB && $( this ).data( "autocomplete" ).menu.active ) { 
    3573                         event.preventDefault(); 
    3574                 } 
    3575                 if((event.keyCode) == 120){ 
     3576//DESENHO DAS CAIXA DE EMAIL 
     3577function draw_email_box(input_data, location, personal, shared){ 
     3578        if($.trim(input_data) != ""){ 
     3579                var box_data = valid_emails(input_data); 
     3580                DataLayer.render("../prototype/modules/mail/templates/emailBox.ejs", box_data, function(html){ 
     3581                        var newBox = location.before(html).prev(); 
     3582                        box_actions(newBox); 
     3583                        if((preferences.expressoMail_ldap_identifier_recipient || personal)&& $(newBox).hasClass("invalid-email-box")){ 
     3584                                //$(newBox).find(".loading").css("background-image", "../prototype/modules/mail/img/ajax-loader.gif"); 
     3585                                show_detais(newBox, input_data, personal, shared); 
     3586                        }else{ 
     3587                                $(newBox).find(".box-loading").remove(); 
     3588                        } 
     3589                }); 
     3590        } 
     3591} 
     3592 
     3593function valid_emails(email){ 
     3594        var ContactBox = {name:"", email:"", valid : false}; 
     3595        var reSimpleEmail = /^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[_a-z0-9-]+(\.[_a-z0-9-]+)+$/; 
     3596        var reComplexEmail = /<([^<]*)>[\s]*$/; 
     3597        var validation = email.split('"'); 
     3598         
     3599        //FUNÇÃO QUE VALIDA OS DADOS QUANDO O EMAIL É DIGITADO COM ("NOME SOBRENOME" <Email@dominio.com>) 
     3600        var complexValidation = function(complexMail){ 
     3601                var Objct = {}; 
     3602                if($.trim(complexMail[1]).match(reComplexEmail)){ 
     3603                        if($.trim(complexMail[1]).match(reComplexEmail).length){ 
     3604                                Objct['email'] = $.trim(complexMail[1]).match(reComplexEmail)[1]; 
     3605                        } 
     3606                }else{ 
     3607                        Objct['email'] = $.trim(complexMail[1]); 
     3608                } 
     3609                Objct['name'] = complexMail[0]; 
     3610                Objct['valid'] = reSimpleEmail.test(Objct['email'].toLowerCase()); 
     3611                return Objct; 
     3612        } 
     3613        switch (validation.length) { 
     3614                //PEGA TODO O CONTEUDO E SETA COMO SE FOSSE O EMAIL 
     3615                case 1: 
     3616                        validation.unshift(""); 
     3617                        ContactBox = complexValidation(validation); 
     3618                        break; 
     3619                //CORRIGI ERRO DE DIGITAÇÃO COMO ( huahua"<huhau@hauhau.com>) ou (hahahaha"huahua@email.com) ou ainda (hahahaha"huahua@ema  il.com) 
     3620                case 2:  
     3621                        ContactBox = complexValidation(validation); 
     3622                        break; 
     3623                //RECEBE O EMAIL CORRETAMENTE SÓ VALIDA POSSIVEIS ERROS COMO O DE CIMA E OS CORRIGI CASO ACONTEÇAM 
     3624                case 3: 
     3625                        //RETIRA O PRIMEIRO INDICE QUE FICOU "INUTIL" 
     3626                        validation.shift(); 
     3627                        ContactBox = complexValidation(validation); 
     3628                        break; 
     3629                //SE EXISTIREM MAIS DO QUE 2 (") 
     3630                default: 
     3631                        if($.trim(validation[validation.length-1]).match(reComplexEmail)){ 
     3632                                if($.trim(validation[validation.length-1]).match(reComplexEmail).length){ 
     3633                                        ContactBox.mail = $.trim(validation[validation.length-1]).match(reComplexEmail)[1]; 
     3634                                } 
     3635                        }else{ 
     3636                                ContactBox.mail = $.trim(complexMail[1]); 
     3637                        } 
     3638                        ContactBox.valid = reSimpleEmail.test(ContactBox.mail.toLowerCase());    
     3639        } 
     3640        return ContactBox; 
     3641} 
     3642 
     3643//EVENTO DOS INPUTS PARA - CC - CCO 
     3644function input_keydowns(input, ID){ 
     3645        var f9 = false; 
     3646        input.keydown(function(e){ 
     3647                f9 = false; 
     3648                focusIn = input; 
     3649                var focusing = input.parent().find(".email-text"); 
     3650                //SE OS CONTATOS DINAMICOS ESTAO ATIVOS 
     3651                if(parseInt(preferences.use_dynamic_contacts) && !input.hasClass("box-input")){ 
     3652                        //SELECIONA O CONTATO E EVITA OUTROS COMANDOS 
     3653                        if ( e.keyCode === $.ui.keyCode.TAB && $( this ).data( "catcomplete" ).menu.active ) { 
     3654                                e.preventDefault(); 
     3655                                return false; 
     3656                        }                
     3657                         
     3658                        //FECHA OS CONTATOS DINÂMICOS 
     3659                        if( (e.keyCode == 27) && $( this ).data( "catcomplete" ).menu.active ){ 
     3660                                   e.stopPropagation(); 
     3661                                   e.preventDefault(); 
     3662                        } 
     3663                         
     3664                        //SELECIONA O CONTATO E EVITA OUTROS COMANDOS 
     3665                        if(e.keyCode == $.ui.keyCode.ENTER && $( this ).data( "catcomplete" ).menu.active){ 
     3666                                e.preventDefault(); 
     3667                                return false; 
     3668                        } 
     3669                         
     3670                        if(e.keyCode == $.ui.keyCode.DELETE && $( this ).data( "catcomplete" ).menu.active){ 
     3671                                if($($( this ).data( "catcomplete" ).menu.element).find(".ui-state-hover").parents("li:first").hasClass("dynamic-recent")) 
     3672                                        $($( this ).data( "catcomplete" ).menu.element).find(".ui-state-hover").next().trigger("click"); 
     3673                                return false; 
     3674                        } 
     3675                } 
     3676                //BUSCA COM A TECLA F9 
     3677                if((e.keyCode) == 120){ 
     3678                        f9 = true; 
    35763679                        emQuickSearch($(this).val(), "."+$(this).parents("tr:first").attr('class').split("-")[0], ID, undefined, true); 
    3577                 }else if( (event.keyCode == 27) && $( this ).data( "autocomplete" ).menu.active ){ 
    3578                            event.stopPropagation(); 
    3579                event.preventDefault(); 
    3580                 } 
    3581         }).autocomplete({ 
    3582                 minLength: 0,                    
    3583                 source: function( request, response ) { 
    3584                         response( $.ui.autocomplete.filter( 
    3585                                 mySource, extractLast( request.term ) ) ); 
     3680                        e.preventDefault(); 
     3681                        return false; 
     3682                } 
     3683 
     3684                //AO DIGITAR ENTER, ";", "," "  " 
     3685                if(e.keyCode == 13 || e.keyCode == 9 || (e.keyCode == 188 && !e.shiftKey) || (e.keyCode == 191 && !e.shiftKey) ){ 
     3686                        if(e.keyCode == 13){ 
     3687                                e.preventDefault(); 
     3688                        } 
     3689                        if(input.val() != ""){ 
     3690                                if(e.keyCode != 9) 
     3691                                        e.preventDefault(); 
     3692                                draw_email_box(input.val(), input); 
     3693                                if(input.hasClass("box-input")){ 
     3694                                        input.remove(); 
     3695                                        focusing.focus(); 
     3696                                        return; 
     3697                                } 
     3698                        } 
     3699                        if(input.length) 
     3700                                input.val(""); 
     3701                } 
     3702                if((e.keyCode == 8 || e.keyCode == 37) && input.val() == "" && input.prev().hasClass("box")){ 
     3703                        e.preventDefault(); 
     3704                        input.prev().focus(); 
     3705                        return; 
     3706                } 
     3707                //AO DIGITAR " " 
     3708                if(e.keyCode == 32){ 
     3709                        if(!input.val().length){ 
     3710                                e.preventDefault(); 
     3711                                return; 
     3712                        }else{ 
     3713                                var texto = input.val(); 
     3714                                texto = texto.substring(0, getPosition(input[0])); 
     3715                                if(texto.split('"').length-1 == 0){ 
     3716                                        if(input.val().split('"').length-1 == 0){ 
     3717                                                e.preventDefault(); 
     3718                                                e.stopPropagation(); 
     3719                                                draw_email_box(input.val(), input); 
     3720                                                input.val(""); 
     3721                                                if(input.hasClass("box-input")){ 
     3722                                                        input.remove(); 
     3723                                                        focusing.focus(); 
     3724                                                        return; 
     3725                                                } 
     3726                                                return; 
     3727                                        } 
     3728                                } 
     3729                        } 
     3730                } 
     3731                //AO DIGITAR ">" 
     3732                if(e.keyCode == 190 && e.shiftKey && input.val().length == getPosition(input[0])){ 
     3733                        input.val(input.val()+">"); 
     3734                        draw_email_box(input.val(), input); 
     3735                        e.preventDefault(); 
     3736                        input.val(""); 
     3737                        if(input.hasClass("box-input")){ 
     3738                                input.remove(); 
     3739                                focusing.focus(); 
     3740                                return; 
     3741                        } 
     3742                } 
     3743                setTimeout(function(){ 
     3744                        if(input.val()[input.val().length-1] == ";"){ 
     3745                                draw_email_box(input.val().substring(0, input.val().length-1), input); 
     3746                                input.val(""); 
     3747                        } 
     3748                }, 100); 
     3749                //INPUT AUTO RESIZE      
     3750                setTimeout(function(){ 
     3751                        input_search = $(input).val(); 
     3752                        var char = input.val().charAt(input.val().length-1); 
     3753                        var maiusculas = RegExp("[A-Z]"); 
     3754                        /*Se o ultimo caracter for ">" é porque o campo está sendo editado (a partir de duplo clique)*/ 
     3755                        var tamanho = 0; 
     3756                        if(char == ">"){ 
     3757                                /*Faz um calculo prévio do tamanho do campo de acordo com o tamanho de cada caracter da string*/ 
     3758                                for(i=0; i<input.val().length; i++){ 
     3759                                        /*Se o caracter for maiúsculo, o valor de pixel é maior*/ 
     3760                                        if(maiusculas.test(input.val().substr(i, 1)) == true){ 
     3761                                                tamanho += 9; 
     3762                                        } 
     3763                                        else{ 
     3764                                                tamanho += 7.1; 
     3765                                        } 
     3766                                } 
     3767                                input.css("width", tamanho); 
     3768                        } 
     3769                        /*Ao inserir novo contato, não existe a necessidade de calcular tamanho do campo*/ 
     3770                        else{ 
     3771                                input.css("width", 15+(input.val().length * 9)); 
     3772                        } 
     3773                        input.parent().scrollTo(":last");        
     3774                }, 100); 
     3775        }) 
     3776        //AO SAIR DO FOCO MONTAGEM DA CAIXA DE EMAIL 
     3777        .focusout(function(e){ 
     3778                var these = $(this); 
     3779                 
     3780                // Função para monstar a caixinha de e-mail. 
     3781                function makeBoxMail(){ 
     3782                        if(canMakeBox && !fastSearch){ 
     3783                                if(!(   f9      ||      click   ||      $(this).parents("tr:first").find("button").hasClass("ui-state-active")  )){ 
     3784                                        if($(input).val() != "") 
     3785                                                draw_email_box(input.val(), input); 
     3786                                        if(input.hasClass("box-input")) 
     3787                                                input.remove(); 
     3788                                        $(input).val(""); 
     3789                                        input_search = ""; 
     3790                                } 
     3791                                f9 = false; 
     3792                                click = false; 
     3793                        } 
     3794                        canMakeBox = true; 
     3795                        fastSearch = false; 
     3796                } 
     3797                 
     3798                /* 
     3799                 ** Verifica se o dynamic contact esta aberto ou fechado, caso esteja aberto,  
     3800                 ** demora 250 millisegundos para executar a função makeBoxMail. 
     3801                 */ 
     3802                these.data('is_open') ? setTimeout(makeBoxMail,250) : makeBoxMail(); 
     3803        }) 
     3804        //AO COLAR UM TEXTO NO CAMPO 
     3805        .bind("paste", function(e){ 
     3806                $(this).trigger("keydown"); 
     3807                var pthis = $(this); 
     3808                setTimeout(function() { 
     3809                        var str = pthis.val().replace(/[,;\t\n]/gi, ","); 
     3810                        str = str.split(","); 
     3811                        $.each(str, function(index, value){ 
     3812                                draw_email_box(value, pthis); 
     3813                        }); 
     3814                        pthis.val(""); 
     3815                }, 50); 
     3816        }); 
     3817        //SE FOR EDIÇÃO DE EMAILS RECALCULA O INPUT E SETA O FOCO 
     3818        if(input.hasClass("box-input")){ 
     3819                input.trigger("keydown"); 
     3820                input.focus(); 
     3821        } 
     3822} 
     3823var input_search = ""; 
     3824var click = false; 
     3825//EVENTOS DA CAIXA 
     3826function box_actions(box){ 
     3827        //AO PRESSIONAR UMA TECLA COM A CAIXA SELECIONADA        
     3828        box.keydown(function(e){ 
     3829                switch (e.keyCode) { 
     3830                        case $.ui.keyCode.LEFT: 
     3831                                //VERIFICA SE EXISTE ALGUMA CAIXA A ESQUERDA 
     3832                                if($(this).prev().hasClass("box")) 
     3833                                        $(this).removeClass("box-selected").prev().focus(); 
     3834                                break; 
     3835                        case $.ui.keyCode.RIGHT: 
     3836                                //VERIFICA SE EXISTE ALGUMA CAIXA A DIREITA  
     3837                                if($(this).next().hasClass("box")) 
     3838                                        $(this).removeClass("box-selected").next().focus(); 
     3839                                //SENAO FOCO O INPUT DO EMAIL 
     3840                                else 
     3841                                        $(this).removeClass("box-selected").next().focus(); 
     3842                                break; 
     3843                        case $.ui.keyCode.HOME: 
     3844                                //SELECIONO A PRIMEIRA CAIXA 
     3845                                e.preventDefault(); 
     3846                                $(this).parents(".email-area").find("div:first").focus(); 
     3847                                break; 
     3848                        case $.ui.keyCode.END: 
     3849                                //SELECIONO A ULTIMA CAIXA 
     3850                                e.preventDefault(); 
     3851                                $(this).parents(".email-area").find("div:last").focus(); 
     3852                                break; 
     3853                        case $.ui.keyCode.DELETE: 
     3854                                //VERIFICA SE EXISTE ALGUMA CAIXA A DIREITA 
     3855                                if($(this).next().hasClass("box")) 
     3856                                        $(this).next().focus(); 
     3857                                //SENAO FOCO O INPUT DO EMAIL 
     3858                                else 
     3859                                        $(this).next().focus(); 
     3860                                //REMOVO ESTA CAIXA 
     3861                                $(this).remove(); 
     3862                                break; 
     3863                        case $.ui.keyCode.BACKSPACE: 
     3864                                //VERIFICA SE EXISTE ALGUMA CAIXA A ESQUERDA 
     3865                                if($(this).prev().hasClass("box")) 
     3866                                        $(this).removeClass("box-selected").prev().focus(); 
     3867                                //SENAO HOUVER VERIFICA SE EXISTE ALGUMA CAIXA A DIREITA 
     3868                                else if($(this).next().hasClass("box")) 
     3869                                        $(this).next().focus(); 
     3870                                //SENAO HOUVER NEM A DIREITA NEM A ESQUERDA SETO O FOCO NO INPUT DO EMAIL 
     3871                                else 
     3872                                        $(this).next().focus(); 
     3873                                //REMOVO ESTA CAIXA      
     3874                                $(this).remove(); 
     3875                                e.preventDefault(); 
     3876                                break; 
     3877                        case $.ui.keyCode.ENTER: 
     3878                                e.preventDefault(); 
     3879                                $(this).trigger("dblclick"); 
     3880                                break; 
     3881                } 
     3882        }) 
     3883        //AO FAZER UM DUPLO CLICK NA CAIXA 
     3884        .dblclick(function(e){ 
     3885                var input = $(this).find("input").clone(); 
     3886                input.css("display" , "inline-block"); 
     3887                $(this).before(input); 
     3888                input_keydowns(input, currentTab); 
     3889                $(this).remove(); 
     3890        //CLICK SIMPLES NA CAIXA 
     3891        }).click(function(){ 
     3892                $(this).focus(); 
     3893        //AO DAR O FOCO NA CAIXA 
     3894        }).focus(function(){ 
     3895                $(this).parent().find("div").removeClass("box-selected"); 
     3896                $(this).addClass("box-selected"); 
     3897        }).focusout(function(){ 
     3898                $(this).removeClass("box-selected"); 
     3899        }).draggable({ 
     3900                revert: 'invalid', 
     3901                helper : 'clone', 
     3902                stack: "body", 
     3903                containment : ".new-msg-head-data", 
     3904                start: function(e, ui){ 
     3905                        $(this).parent().droppable( "disable" ); 
    35863906                }, 
    3587                 focus: function() { 
    3588                         return false; 
    3589                 }, 
    3590                 select: function( event, ui ) { 
    3591                         var terms = mySplit( this.value ); 
    3592                         terms.pop(); 
    3593                         terms.push( (ui.item.name != "" ? "\""+ui.item.name+"\" " : "") + (ui.item.email ? "<"+ui.item.email+">" : "")); 
    3594                         terms.push( "" ); 
    3595                         this.value = terms.join( ", " ); 
    3596                         return false; 
    3597                 }, 
    3598                 autoFocus: true 
    3599         }).data( "autocomplete" )._renderItem = function( ul, item ) { 
    3600                 ul.css({"max-height" : "115px", "overflow-y" : "auto"}); 
    3601                 if( $(ul).find("li").length > 10 ){ 
     3907                stop : function(e, ui){ 
     3908                        $(this).parent().droppable( "enable" ); 
     3909                } 
     3910        }); 
     3911} 
     3912 
     3913//MOSTRA OS DETALHES DAS CAIXA DE EMAIL NOS CAMPOS PARA - CC - CCO 
     3914function show_detais(box, value, personal, shared){ 
     3915        var ldap_id = preferences.expressoMail_ldap_identifier_recipient; 
     3916        var group = (personal != undefined ? (personal == "G" ? true : false) : false); 
     3917        shared = shared ? shared : false; 
     3918        if(group){ 
     3919                REST.get("/"+ (shared ? "shared" : "") +"group/"+value, {}, function(data){ 
     3920                        if(!data.error){ 
     3921                                if(data.collection.error) 
     3922                                        box.find(".box-loading").remove(); 
     3923                                else{ 
     3924                                        box.find(".box-loading").removeClass("box-loading").addClass("box-info"); 
     3925                                        box.addClass("box-"+value).removeClass("invalid-email-box"); 
     3926                                        loadGroupBox(data.collection, ".box-"+value); 
     3927                                        box.unbind("dblclick").bind("dblclick", function(e){ 
     3928                                                new $.Zebra_Dialog(get_lang("Impossible editing this contact, but it's possible to remove it"), { 
     3929                                                        'buttons':  false, 
     3930                                                        'modal': false, 
     3931                                                        'position': ['right - 20', 'top + 20'], 
     3932                                                        'auto_close': 3000 
     3933                                                }); 
     3934                                        }).find(".box-input").val("\""+data.collection.data[1].value+"\" <"+data.collection.data[1].value+">"); 
     3935                                        box.find(".email-box-value").html( (data.collection.data[1].value.length > 18 ? data.collection.data[1].value.substring(0, 15)+"...": data.collection.data[1].value)) 
     3936                                } 
     3937                        }else{ 
     3938                                box.find(".box-loading").remove(); 
     3939                        } 
     3940                }); 
     3941                return; 
     3942        } 
     3943         
     3944        if(personal){ 
     3945                REST.get("/"+ (shared ? "shared" : "") +"contact/"+value, {}, function(data){ 
     3946                        if(!data.error){ 
     3947                                if(data.collection.error) 
     3948                                        box.find(".box-loading").remove(); 
     3949                                else{ 
     3950                                        box.find(".box-loading").removeClass("box-loading").addClass("box-info"); 
     3951                                        box.addClass("box-"+value).removeClass("invalid-email-box"); 
     3952                                        loadExtraLDAPBox(data.collection.data, ".box-"+value); 
     3953                                        box.unbind("dblclick").bind("dblclick", function(e){ 
     3954                                                new $.Zebra_Dialog(get_lang("Impossible editing this contact, but it's possible to remove it"), { 
     3955                                                        'buttons':  false, 
     3956                                                        'modal': false, 
     3957                                                        'position': ['right - 20', 'top + 20'], 
     3958                                                        'auto_close': 3000 
     3959                                                }); 
     3960                                        }).find(".box-input").val("\""+data.collection.data[0].value+"\" <"+data.collection.data[1].value+">"); 
     3961                                        box.find(".email-box-value").html( (data.collection.data[0].value.length > 18 ? data.collection.data[0].value.substring(0, 15)+"...": data.collection.data[0].value)) 
     3962                                } 
     3963                        }else{ 
     3964                                box.find(".box-loading").remove(); 
     3965                        } 
     3966                }); 
     3967                return; 
     3968        } 
     3969         
     3970        REST.get("/usersldap", {field : ldap_id,value: value}, function(data){ 
     3971                if(!data.error){ 
     3972                        if(data.collection.error) 
     3973                                box.find(".box-loading").remove(); 
     3974                        else{ 
     3975                                box.find(".box-loading").removeClass("box-loading").addClass("box-info"); 
     3976                                box.addClass("box-"+value).removeClass("invalid-email-box"); 
     3977                                loadExtraLDAPBox(data.collection.itens[0].data, ".box-"+value); 
     3978                                box.unbind("dblclick").bind("dblclick", function(e){ 
     3979                                        new $.Zebra_Dialog(get_lang("Impossible editing this contact, but it's possible to remove it"), { 
     3980                                                'buttons':  false, 
     3981                                                'modal': false, 
     3982                                                'position': ['right - 20', 'top + 20'], 
     3983                                                'auto_close': 3000 
     3984                                        }); 
     3985                                }).find(".box-input").val("\""+data.collection.itens[0].data[0].value+"\" <"+data.collection.itens[0].data[1].value+">"); 
     3986                                box.find(".email-box-value").html( (data.collection.itens[0].data[0].value.length > 18 ? data.collection.itens[0].data[0].value.substring(0, 15)+"...": data.collection.itens[0].data[0].value)) 
     3987                                if(data.collection.itens[0].data[3].value == "TRUE"){ 
     3988                                        box.removeClass("invalid-email-box").addClass("out-office-box"); 
     3989                                } 
     3990                        } 
     3991                }else{ 
     3992                        box.find(".box-loading").remove(); 
     3993                } 
     3994        }); 
     3995} 
     3996 
     3997//FUNÇÃO QUE "SETA" OS BINDS DOS CAMPOS PARA - CC - CCO 
     3998function input_binds(div, ID){ 
     3999 
     4000        //AO CLICAR NA DIV SETA O FOCO NO INPUT 
     4001        div.click(function(e){ 
     4002                if(e.target == $(this)[0]){ 
     4003                        $(this).find("input:last").focus(); 
     4004                        $(this).find("div").removeClass("box-selected"); 
     4005                } 
     4006        }) 
     4007         
     4008        //AO SAIR DO FOCO DA DIV ELE RETIRA TODAS AS CLASSES DE CAIXAS SELECIONADAS 
     4009        .focusout(function(e){ 
     4010                if(!$(e.target).parents(".email-area:first").length) 
     4011                        $(this).find("div").removeClass("box-selected"); 
     4012        }).droppable({ 
     4013                hoverClass: "box-draggable-hover", 
     4014                accept : ".box", 
     4015                drop : function(e, ui){ 
     4016                        ui.draggable.parent().droppable( "enable" ); 
     4017                        var box = ui.draggable.clone(); 
     4018                        box_actions(box); 
     4019                        if(box.find(".box-info").length){ 
     4020                                box.unbind("dblclick").bind("dblclick", function(e){ 
     4021                                        new $.Zebra_Dialog('<strong>Impossivel editar</strong> um contato do ldap\n' + 
     4022                                                '<strong>Porém</strong>é possivel remove-lo', { 
     4023                                                'buttons':  false, 
     4024                                                'modal': false, 
     4025                                                'position': ['right - 20', 'top + 20'], 
     4026                                                'auto_close': 3000 
     4027                                        }); 
     4028                                }); 
     4029                        } 
     4030                        $(this).prepend(box); 
     4031                        ui.draggable.remove(); 
     4032                } 
     4033        }); 
     4034         
     4035        //MAKE KEYDOWN 
     4036        input_keydowns(div.find("input"), ID); 
     4037         
     4038         
     4039        //VERIFICA PREFERENCIA DE CONTATOS DINÂMICOS ESTA ATIVA 
     4040        if(parseInt(preferences.use_dynamic_contacts)){ 
     4041                //PREPARAÇÃO DA ARRAY DOS CONTATOS DINÂMICOS 
     4042 
     4043                $.widget( "custom.catcomplete", $.ui.autocomplete, { 
     4044                        _renderMenu: function( ul, items ) { 
     4045                                var self = this, 
     4046                                currentType = ""; 
     4047                                $.each( items, function( index, item ) { 
     4048                                        if ( item.typel != currentType) { 
     4049                                                if(item.typel == "/groups" && $(ul).find(".dynamic-recent").length) 
     4050                                                        self._renderItem( ul, {name:"", value:"", type:"linha"} ); 
     4051                                                if(item.typel == "/contacts" && ($(ul).find(".dynamic-group").length || $(ul).find(".dynamic-recent").length)) 
     4052                                                        self._renderItem( ul, {name:"", value:"", type:"linha"} );       
     4053                                                currentType = item.typel; 
     4054                                        } 
     4055                                        self._renderItem( ul, item ); 
     4056                                        $(ul).find("li:last").find(".dynamic-stars").raty({ 
     4057                                                readOnly : true, 
     4058                                                half : true, 
     4059                                                hints : ['','','','',''], 
     4060                                                score    : ((item.number_of_messages*5)/topContact) > 0.5 ? ((item.number_of_messages*5)/topContact) : 0.5, 
     4061                                                starOn  : '../../prototype/plugins/jq-raty/img/star-on.png', 
     4062                                                starOff : '../../prototype/plugins/jq-raty/img/star-off.png', 
     4063                                                starHalf : '../../prototype/plugins/jq-raty/img/star-half.png' 
     4064                                        }); 
     4065                                }); 
     4066                                if($(ul).find("li:last").hasClass("dynamic-separator")){ 
     4067                                        $(ul).find("li:last").remove(); 
     4068                                } 
     4069                        } 
     4070                }); 
     4071                //INSERÇÃO DO AUTO COMPLETE AO INPUT 
     4072                div.find("input").catcomplete({ 
     4073                        minLength: 1,                    
     4074                        source: function(request, response){ 
     4075                                if ( request.term in cache ) { 
     4076                                        response( cache[ request.term ] ); 
     4077                                        return; 
     4078                                } 
     4079                                dynamicContactsList = new Array(); 
     4080                                REST.get("/usercontacts", false, function(data){ 
     4081                                        dynamicData = data.collection.itens; 
     4082                                        if(dynamicData){ 
     4083                                                $.each(dynamicData, function(index, value){ 
     4084                                                        dynamic = {}; 
     4085                                                        $.each(value.data, function(index, value){ 
     4086                                                                dynamic[value.name] = value.value; 
     4087                                                        }); 
     4088                                                        dynamic['value'] = (dynamic.name ? dynamic.name +' - ': '') + dynamic.mail; 
     4089                                                        dynamic['type'] = value.dataType; 
     4090                                                        dynamic['typel'] = (value.dataType.substring(0,7) == "/shared" ? "/"+value.dataType.substring(7,value.dataType.length)+"s" : value.dataType) ; 
     4091                                                        dynamicContactsList.push(dynamic); 
     4092                                                }); 
     4093                                        } 
     4094                                        var data = $.ui.autocomplete.filter(dynamicContactsList, request.term ); 
     4095                                        cache[ request.term ] = data; 
     4096                                        response( data ); 
     4097                                }); 
     4098                        }, 
     4099                        focus: function() { 
     4100                                return false; 
     4101                        }, 
     4102                         
     4103                        //EVENTO AO SELECIONAR UM CONTATO DINÂMICO 
     4104                        select: function( event, ui ) { 
     4105                                canMakeBox = false; 
     4106                                event.preventDefault(); 
     4107                                $(this).val(""); 
     4108                                if(ui.item.typel == "/contacts") 
     4109                                        draw_email_box(""+ui.item.id, $(this), true, (ui.item.type.substring(0,7) == "/shared" ? true : false)); 
     4110                                else if(ui.item.typel == "/groups") 
     4111                                        draw_email_box(""+ui.item.id, $(this), "G", (ui.item.type.substring(0,7) == "/shared" ? true : false)); 
     4112                                else 
     4113                                        draw_email_box(ui.item.name ? "\""+ui.item.name+"\" <"+ui.item.mail+">" : ui.item.mail, $(this)); 
     4114                                return false; 
     4115                        }, 
     4116                        autoFocus: true, 
     4117                        position : { my: "left top", at: "left bottom", collision: "fit" } 
     4118                }).bind('catcompleteopen', function(event, ui) { 
     4119                        $(this).data('is_open',true); 
     4120                }).bind('catcompleteclose', function(event, ui) { 
     4121                        canMakeBox = true; 
     4122                        $(this).data('is_open',false); 
     4123                }) 
     4124                 
     4125                //MONTAGEM DA LISTA DE CONTATOS DINÂMICOS DO AUTO COMPLETE 
     4126                .data( "catcomplete" )._renderItem = function( ul, item ) { 
     4127                        if($(ul).find("li").length < 50){ 
     4128                                var autocomplete = $(this)[0].element; 
     4129                                //cálculo dinâmico da largura da lista 
     4130                                var width = (item.label ? item.label.length : (item.value ? item.value.length : (item.email ? item.email.length : 20 ))); 
     4131                                width = width*5 + (is_ie ? 170 : 200) + 16; 
     4132                                if (width < $(ul).width()) 
     4133                                        width = $(ul).width(); 
     4134                                ul.css({"min-width":width,"max-height" : "180px", "overflow-y" : "auto", "min-height": "30px"}); 
     4135                                var listContacts = DataLayer.render("../prototype/modules/mail/templates/listContacts.ejs", item); 
     4136                                return $(listContacts).data( "item.autocomplete", item ).appendTo( ul ).find("span:last").button({ 
     4137                                                icons : { 
     4138                                                primary : "ui-icon-close" 
     4139                                        }, 
     4140                                        text: false 
     4141                                }).click(function(event){ 
     4142                                        var removeLi = $(this).parents("li:first"); 
     4143                                        if(!event.keyCode) 
     4144                                                autocomplete.catcomplete( "close" ); 
     4145                                        canMakeBox = false; 
     4146                                        $.Zebra_Dialog('Deseja remover <b>'+(item.name ? item.name+" - " : "")+ item.mail+'</b>?', { 
     4147                                                        'type':     'question', 
     4148                                                        'custom_class': (is_ie ? 'configure-zebra-dialog' : ''), 
     4149                                                        'title':    'Atenção', 
     4150                                                        'buttons': ['Sim','Não'],                
     4151                                                        'overlay_opacity': '0.5', 
     4152                                                        'onClose':  function(caption) { 
     4153                                                                if(caption == 'Sim'){ 
     4154                                                                        $(removeLi).remove(); 
     4155                                                                        REST.delete("/dynamiccontact/"+item.id); 
     4156                                                                        updateDynamicContact(); 
     4157                                                                        cache = new Array(); 
     4158                                                                }else if(caption == 'Não'){ 
     4159                                                                        $(focusIn).focus(); 
     4160                                                                } 
     4161                                                        } 
     4162                                        }); 
     4163                                }); 
     4164                        } 
    36024165                        return; 
    3603                 } 
    3604                 return $( "<li></li>" ) 
    3605                         .data( "item.autocomplete", item ) 
    3606                         .append( "<a>" + item.name + " - " + item.email + "</a>" ) 
    3607                         .appendTo( ul ); 
    3608         }; 
    3609         input.parents("tr:first").find("button").button().click(function(){ 
    3610                 emQuickSearch($(this).parents("tr:first").find("textarea").val(), "."+$(this).parents("tr:first").attr('class').split("-")[0], ID, undefined, true); 
     4166                }; 
     4167        } 
     4168         
     4169        //FUNÇÃO DOS BOTÕES PARA - CC - CCO 
     4170        div.parents("tr:first").find("button").button().click(function(){ 
     4171                click = true; 
     4172                fastSearch = true; 
     4173                if(!$(":focus").hasClass("new-message-input")) 
     4174                        emQuickSearch(($(this).parents("tr:first").find("input").val() ? $(this).parents("tr:first").find("input").val() : input_search), "."+$(this).parents("tr:first").attr('class').split("-")[0], ID, undefined, true); 
    36114175        }); 
    36124176} 
     
    36154179        connector.loadScript("color_palette"); 
    36164180        connector.loadScript('wfolders'); 
     4181        connector.loadScript("ccQuickAdd");  
    36174182         
    36184183        if(typeof(RichTextEditor) == 'undefined' || typeof(ColorPalette) == 'undefined' || typeof(wfolders) == 'undefined') 
     
    36624227                button.toggleClass("expressomail-button-icon-ative"); 
    36634228                field.toggle(); 
    3664                 field.find("textarea").val("").focus(); 
    3665                 if(!field.find("textarea").hasClass("elastic")){ 
    3666                         field.find("textarea").css({"max-height" : "115px", "overflow-y" : "auto"}).addClass("elastic").elastic().unbind('blur');        
    3667                         input_binds(field.find("textarea"), ID); 
     4229                field.find("textarea").val("").parent().find("input").focus(); 
     4230                field.find(".email-area div").remove(); 
     4231                if(!field.find("textarea").hasClass("track")){ 
     4232                        field.find("textarea").css({"max-height" : "115px", "overflow-y" : "auto"}).addClass("track");   
     4233                        input_binds(field.find(".email-area"), ID); 
    36684234                } 
    36694235        }  
    36704236         
    3671         input_binds(content.find('[name="input_to"]').css({"max-height" : "115px", "overflow-y" : "auto"}).addClass("elastic").elastic().unbind('blur').focus(), ID);    
     4237        input_binds(content.find('[name="input_aux_to"]').css("max-width" , parseInt(content.find(".email-area").css("width"))-5).focus().parent().css({"max-height" : "115px", "overflow-y" : "auto"}), ID);    
    36724238         
    36734239        //Botão TextoRico/TextoSimples 
    36744240        content.find(".new-msg-head-right-buttons").find(".button").button().filter(".rich-button").click(function(){ 
    3675                 /*Se o texto do botão for "Texto simples" exibirá a mensagem antes de alterar para texto simples*/  
    3676         if($(".rich-button").find("span").text() == get_lang("Simple Text")){  
    3677                 $.Zebra_Dialog(get_lang("Convert this message into plain text can make parts of it are removed. Continue?"), {  
    3678             'type':     'warning',  
    3679             'overlay_opacity': '0.5',  
    3680             'buttons':  ['OK','Cancelar'],  
    3681             'width' : 380,  
    3682             'onClose':  function(clicked) {  
    3683                 if(clicked == 'OK'){  
    3684                         RichTextEditor.setPlain(check_input(content.find('[name="textplain_rt_checkbox"]')), ID);  
    3685                         $(".rich-button").find("span").text(get_lang("Rich Text"));  
    3686                 }  
    3687             }  
    3688                 })  
    3689         }  
    3690         /*Se o texto do botão for "Texto rico" simplesmente altera para texto rico*/  
    3691         else{  
    3692                 RichTextEditor.setPlain(check_input(content.find('[name="textplain_rt_checkbox"]')), ID);  
    3693                 $(".rich-button").find("span").text(get_lang("Simple Text"));  
    3694         } 
     4241                /*Se o texto do botão for "Texto simples" exibirá a mensagem antes de alterar para texto simples*/ 
     4242                if($(".rich-button").find("span").text() == get_lang("Simple Text")){ 
     4243                        $.Zebra_Dialog(get_lang("Convert this message into plain text can make parts of it are removed. Continue?"), { 
     4244                    'type':     'warning', 
     4245                    'overlay_opacity': '0.5', 
     4246                    'buttons':  ['OK','Cancelar'], 
     4247                    'width' : 380, 
     4248                    'onClose':  function(clicked) { 
     4249                        if(clicked == 'OK'){ 
     4250                                RichTextEditor.setPlain(check_input(content.find('[name="textplain_rt_checkbox"]')), ID); 
     4251                                $(".rich-button").find("span").text(get_lang("Rich Text")); 
     4252                        }  
     4253                    } 
     4254                        }) 
     4255                } 
     4256                /*Se o texto do botão for "Texto rico" simplesmente altera para texto rico*/ 
     4257                else{ 
     4258                        RichTextEditor.setPlain(check_input(content.find('[name="textplain_rt_checkbox"]')), ID); 
     4259                        $(".rich-button").find("span").text(get_lang("Simple Text")); 
     4260                } 
    36954261        }) 
    36964262         
     
    39344500 
    39354501        var el_shared_users = Element("el_shared_users"); 
     4502        /* Recupera a pasta atual do usuário (selecionada) */ 
     4503        var user_shared = folder.split(cyrus_delimiter); 
     4504        /* Verifica se está nas próprias pastas */ 
     4505        if(user_shared[0] == "INBOX"){ 
     4506                user_shared = User.me.uid; 
     4507        }else{ 
     4508                user_shared = user_shared[1]; 
     4509        }        
    39364510        // The element was loaded and populated...so return. 
    39374511        if(el_shared_users){ 
     
    39444518                        _option.text = el_shared_users.options[x].text; 
    39454519                        _option.value = el_shared_users.options[x].value; 
     4520                        /* Faz o tratamento do nome da pasta para fazer a verificação e selecionar o valor no select */ 
     4521                        var str_begin_name = _option.text.indexOf('<') + 1; 
     4522                        var str_end_name = _option.text.indexOf('@'); 
     4523                        var user_selected_name = _option.text.substring(str_begin_name, str_end_name); 
     4524                        /* Verifica se é o usuário da pasta selecionada */                       
     4525                        if(user_selected_name == user_shared){ 
     4526                                _option.selected = 'selected'; 
     4527                        } 
    39464528                        sel_from.options[sel_from.options.length] = _option     ; 
    39474529                } 
     
    39694551                if(data.length > 0) { 
    39704552                        tr1_1.style.display = ''; 
    3971                         var mycn = typeof(data.myname != 'undefined') ? data.myname : ''; 
     4553            var mycn = typeof(data.myname != 'undefined') ? data.myname : ''; 
    39724554                        var _option = document.createElement("OPTION"); 
    39734555                        _option.text =  '"'+mycn+'" <'+Element("user_email").value+'>'; 
    39744556                        _option.value  = mycn+";"+Element("user_email").value; 
     4557                        /* Verifica se é o usuário logado */ 
     4558                        if(user_shared == User.me.uid) 
     4559                                _option.selected = 'selected'; 
    39754560                        sel_from.options[sel_from.options.length] = _option; 
    39764561 
    39774562                        var options = ''; 
    3978                         var cn = ''; 
    3979                                                                  
     4563            var cn = ''; 
    39804564                        for (var x = 0; x < data.length; x++)   { 
    39814565                                cn = typeof(data[x].cn[0] != 'undefined') ? data[x].cn[0] : ''; 
     
    39834567                                _option.text = '"'+cn+'" <'+data[x].mail[0]+'>'; 
    39844568                                _option.value = cn+';'+data[x].mail[0]+';'+data[x].save_shared[0]+';'+data[x].uid[0]; 
     4569                                /* Faz o tratamento do nome da pasta para fazer a verificação e selecionar o valor no select */ 
     4570                                var str_begin_name = _option.text.indexOf('<') + 1; 
     4571                                var str_end_name = _option.text.indexOf('@'); 
     4572                                var user_selected_name = _option.text.substring(str_begin_name, str_end_name);  
     4573                                /* Verifica se é o usuário da pasta selecionada */ 
     4574                                if(user_selected_name == user_shared){ 
     4575                                        _option.selected = 'selected'; 
     4576                                } 
    39854577                                sel_from.options[sel_from.options.length] = _option     ; 
    39864578                        } 
     
    43354927                cc_data[3] = array_addrs[0]; 
    43364928 
     4929        var onclick = '';                
     4930        $.each(cc_data, function(index, value){ 
     4931                onclick += "'"+value+"',"; 
     4932        }); 
     4933        onclick = onclick.substr(0, onclick.length-1); 
    43374934        var sm_envelope_img1 = '<img style="cursor:'+ (is_ie ? 'hand' : 'pointer') +'" title="' + get_lang("Add Contact") + 
    4338         '" onclick="ccQuickAddOne.showList(\''+cc_data+'\')" src="./templates/'+template+'/images/user_card.png">'; 
     4935        '" onclick="ccQuickAddOne.showList(['+onclick+'])" src="./templates/'+template+'/images/user_card.png">'; 
    43394936        var to_addybook_add = "<SPAN id='insert_plugin_"+idx_cc+"_"+ID+"'>"; 
    43404937        to_addybook_add += addrs; 
  • branches/2.4/expressoMail1_2/js/main.js

    r6736 r6754  
    66var results_search_messages = "";  
    77var cabecalho = '<h4>ExpressoLivre - ExpressoMail</h4>';  
     8// Variavel para controle de atualização das mensagens listadas na modal de alerta de filtro por remetente 
     9var checkAlarmsFilter = false; 
     10 
     11var dynamicPersonalContacts = new Array(); 
     12var dynamicContacts = new Array(); 
     13var topContact = 0; 
     14DataLayer.get("folder", true); 
    815 
    916//Os IE's < 9 não possui suporte a trim() introduzida no JavaScript 1.8.1 
    1017if(!String.prototype.trim){   
    1118        String.prototype.trim = function(){ 
    12                                                                 return this.replace(/^\s+|\s+$/g,''); 
    13                                                         }  
     19                return this.replace(/^\s+|\s+$/g,''); 
     20        }  
    1421} 
    1522         
     
    1926        return folders.join(cyrus_delimiter); 
    2027}  
     28 
     29function updateDynamicContact(){ 
     30        dynamicContacts = new Array(); 
     31        var dynamicData = REST.get("/dynamiccontacts").collection.itens; 
     32        if(dynamicData){ 
     33                $.each(dynamicData, function(index, value){ 
     34                        if(index ==0){ 
     35                                topContact = parseInt(value.data[2].value); 
     36                        } 
     37                        var dynamic = { 
     38                                name : value.data[0].value, 
     39                                mail : value.data[1].value, 
     40                                value: value.data[0].value + " - " + value.data[1].value, 
     41                                type: "", 
     42                                id: parseInt(value.data[3].value), 
     43                                qtd : parseInt(value.data[2].value) 
     44                        }; 
     45                        dynamicContacts.push(dynamic); 
     46                }); 
     47        } 
     48} 
     49 
     50 
     51function updateDynamicPersonalContacts(){ 
     52        dynamicPersonalContacts = new Array(); 
     53        var contactsData = REST.get("/contacts").collection.itens; 
     54        if(contactsData){ 
     55                $.each(contactsData, function(index, value){ 
     56                        var contact = { 
     57                                id : parseInt(value.data[0].value), 
     58                                name : value.data[1].value, 
     59                                email : value.data[2].value, 
     60                                value: value.data[1].value + " - " + value.data[2].value, 
     61                                type: "P" 
     62                        }; 
     63                        dynamicPersonalContacts.push(contact); 
     64                }); 
     65        } 
     66} 
     67 
    2168function init(){ 
    2269        if (!is_ie) 
    2370                Element('tableDivAppbox').width = '100%'; 
    2471 
    25         var save_contacts = function(data){ 
    26                 contacts = data; 
    27                 if (preferences.use_local_messages == 1 && window.google && google.gears) 
    28                         if (expresso_local_messages.is_offline_installed()) 
    29                                 expresso_local_messages.capt_url('controller.php?action=$this.db_functions.get_dropdown_contacts_to_cache'); 
    30  
    31         } 
    3272        var save_preferences = function(data){ 
    3373 
     
    69109                //Substituido por padrão Jquery 
    70110                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); 
    71                 cExecute ("$this.db_functions.get_dropdown_contacts", save_contacts); //Save contacts needs preferences. 
     111                //cExecute ("$this.db_functions.get_dropdown_contacts", save_contacts); //Save contacts needs preferences. 
    72112                if(preferences.hide_folders == "1") 
    73113                        Element('divAppboxHeader').innerHTML =  title_app_menu; 
     
    116156                                         
    117157                                $(".collapse_folders").removeClass("ui-icon-triangle-1-w"); 
    118                                 $(".collapse_folders").addClass("ui-icon-triangle-1-e");  
    119                                 $(".collapse_folders").parent().attr('title', "Expandir"); 
     158                                $(".collapse_folders").addClass("ui-icon-triangle-1-e"); 
     159                                $(".collapse_folders").parent().attr('title', "Expandir"); 
    120160                                $.cookie('collapse_folders', "true"); 
    121161                                refresh(); 
     
    127167                                        $("#folderscol").show(); 
    128168                                $(".collapse_folders").removeClass("ui-icon-triangle-1-e"); 
    129                                 $(".collapse_folders").addClass("ui-icon-triangle-1-w");  
    130                                 $(".collapse_folders").parent().attr('title', "Ocultar"); 
     169                                $(".collapse_folders").addClass("ui-icon-triangle-1-w"); 
     170                                $(".collapse_folders").parent().attr('title', "Ocultar"); 
    131171                                $.cookie('collapse_folders', "false"); 
    132172                                refresh(); 
     
    143183                        } 
    144184                ); 
     185                 
     186                if(parseInt(preferences.use_dynamic_contacts)){ 
     187                        var load_dynamics = function(){ 
     188                                updateDynamicContact(); 
     189                                updateDynamicPersonalContacts(); 
     190                        }; 
     191                        load_dynamics(); 
     192                } 
    145193        } 
    146194        var handler_automatic_trash_cleanness = function(data){ 
     
    160208                mobile_device = ( ( data.constructor == Boolean ) ? data : ( data === 'true' ) ); 
    161209        }); 
     210 
     211        DataLayer.get("folder", true); 
     212        cExecute("$this.imap_functions.get_folders_list&onload=true", update_menu);      
     213         
    162214        setTimeout('auto_refresh()', time_refresh); 
    163215         
     
    192244        cyrus_delimiter = Element('cyrus_delimiter').value; 
    193245 
    194         cExecute ("$this.db_functions.get_dropdown_contacts_to_cache", function(data) {contacts = data;}); 
     246        //cExecute ("$this.db_functions.get_dropdown_contacts_to_cache", function(data) {contacts = data;}); 
    195247        //cExecute ("$this.functions.get_preferences", save_preferences); 
    196248        } 
     
    279331                        msg_to_delete.childNodes[1].innerHTML = ""; 
    280332                        write_msg(get_lang("Attachments removed")); 
    281                         folderName = Base64.encode(folder);  
    282                         folderName = folderName.replace(/=/gi, '');  
    283                         delete_border(msg_num+'_r_'+folderName,'false'); //close email tab 
     333                        folderName = Base64.encode(folder); 
     334                        folderName = folderName.replace(/=/gi, ''); 
     335                        delete_border(msg_num+'_r_'+folderName,'false'); //close email tab 
    284336                } 
    285337        }; 
     
    386438                        // se existir prepara os dados para serem enviados e chama a 
    387439                        // operação na applet 
    388  
    389440 
    390441                   // if ((msg_info.DispositionNotificationTo) && ((msg_info.Unseen == 'U') || (msg_info.Recent == 'N'))){ 
     
    510561 
    511562function refresh(alert_new_msg){ 
     563        getFromAlertRules(); 
    512564        var handler_refresh = function(data){ 
     565                if(checkAlarmsFilter){ 
     566                        handlerMessageFilter = function (data) { 
     567                                alarmFollowupflagged('filtersAlarms', data); 
     568                        } 
     569                        /* Busca  nas pastas indexadas para ver se há novas mensagens com a flag $FilteredMessage */ 
     570                        cExecute ("$this.imap_functions.getFlaggedAlertMessages&folders="+fromRules, handlerMessageFilter); 
     571                } 
     572                checkAlarmsFilter = true; 
    513573                if(data['msg_range_end']) 
    514574                        if(data['msg_range_end'] > 0) 
     
    523583 
    524584                if (data.length > 0){ 
    525                         for(var i=0;i< data.length;i++){  
    526                                 if (!onceOpenedHeadersMessages[current_folder])  
    527                                         onceOpenedHeadersMessages[current_folder] = {};  
    528                                 onceOpenedHeadersMessages[current_folder][data[i].msg_number] = data[i];  
    529                         }  
     585                        for(var i=0;i< data.length;i++){ 
     586                                if (!onceOpenedHeadersMessages[current_folder]) 
     587                                        onceOpenedHeadersMessages[current_folder] = {}; 
     588                                onceOpenedHeadersMessages[current_folder][data[i].msg_number] = data[i]; 
     589                        } 
    530590                        Element("table_message_header_box_"+numBox).emptyBody = false; 
    531591                        table_element = Element("table_box"); 
     
    708768                          }, 
    709769                          beforeSend: function( jqXHR, settings ){ 
    710                                 connector.showProgressBar(); 
     770                                connector.showProgressBar(); 
    711771                          }, 
    712                                 complete: function( jqXHR, settings ){ 
    713                                 connector.hideProgressBar(); 
     772                          complete: function( jqXHR, settings ){ 
     773                                connector.hideProgressBar(); 
    714774                          } 
    715775 
     
    10511111                                                              if( data ) 
    10521112                                                                  show_msg( data ); 
    1053                                                           },  
    1054                                                           beforeSend: function( jqXHR, settings ){  
    1055                                                                 connector.showProgressBar();  
    1056                                                           },  
    1057                                                           complete: function( jqXHR, settings ){  
    1058                                                                 connector.hideProgressBar(); 
     1113                                                          }, 
     1114                                                          beforeSend: function( jqXHR, settings ){ 
     1115                                                                connector.showProgressBar(); 
     1116                                                          }, 
     1117                                                          complete: function( jqXHR, settings ){ 
     1118                                                                connector.hideProgressBar(); 
    10591119                                                          } 
    10601120                                                }); 
     
    11431203                        Element('tot_m').innerHTML = n_total_msg; 
    11441204                } 
    1145                  
    11461205                refresh(); 
    11471206        } 
     
    11681227 
    11691228        // se a aba estiver aberta e selecionada, apenas a msg da aba é movida 
    1170         if(currentTab.toString().indexOf("_r") != -1 && currentTab == border_ID)  
     1229        if(currentTab.toString().indexOf("_r") != -1 && currentTab == border_ID)