Changeset 6754
- Timestamp:
- 07/11/12 11:45:10 (10 years ago)
- Location:
- branches/2.4
- Files:
-
- 120 edited
- 263 copied
Legend:
- Unmodified
- Added
- Removed
-
branches/2.4
-
Property
svn:mergeinfo
set to
(toggle deleted branches)
/trunk merged eligible /sandbox/2.4.1-3 6237-6527
-
Property
svn:mergeinfo
set to
(toggle deleted branches)
-
branches/2.4/.htaccess
r6625 r6754 126 126 RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK|OPTIONS|HEAD)$ [NC] 127 127 RewriteRule ^.*$ - [F] 128 RewriteRule ^rest(.*)$ prototype/rest/$1 [QSA,L] 129 128 130 129 131 # -
branches/2.4/INSTALL/debian/squeeze/etc/apache2/sites-available/expresso
r6623 r6754 5 5 DocumentRoot /var/www/expresso/ 6 6 7 7 <Directory /var/www/expresso/> 8 8 Options FollowSymLinks MultiViews 9 9 AllowOverride All … … 12 12 </Directory> 13 13 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> 20 20 21 21 ErrorLog /var/log/apache2/error.log … … 64 64 </Directory> 65 65 66 #<Directory /var/www/expresso/setup> 67 # Options None 68 # AllowOverride All 69 # Order deny,allow 70 # allow from ##ip rede interna## 71 66 #<Directory /var/www/expresso/setup> 67 # Options None 68 # AllowOverride All 69 # Order deny,allow 70 # allow from ##ip rede interna## 71 #</Directory> 72 72 73 73 ErrorLog /var/log/apache2/error.log -
branches/2.4/INSTALL/debian/squeeze/etc/ldap/slapd.conf
r6730 r6754 14 14 include /etc/ldap/schema/inetorgperson.schema 15 15 # Necessario para o Expresso Livre 16 include /etc/ldap/schema/expressolivre.schema 16 include /etc/ldap/schema/expressolivre.schema 17 17 include /etc/ldap/schema/qmailuser.schema 18 18 include /etc/ldap/schema/phpgwaccount.schema 19 19 include /etc/ldap/schema/samba.schema 20 20 include /etc/ldap/schema/phpgwcontact.schema 21 include /etc/ldap/schema/phpgwquotacontrolled.schema 21 include /etc/ldap/schema/phpgwquotacontrolled.schema 22 22 23 23 # Where the pid file is put. The init.d script -
branches/2.4/INSTALL/expressoInstall.sh
r6595 r6754 4 4 # 5 5 # 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: 8 8 # "William Fernando Merlotto" <william@prognus.com.br>, para Debian, Ubuntu, Red Hat e CentOS 9 9 # "Gustavo Nakahara" <gustavonk@prognus.com.br>, para Debian, Ubuntu, Red Hat e CentOS 10 10 # "Rafael Cristaldo" <rafael@prognus.com.br>, para Debian, Ubuntu, Red Hat e CentOS 11 11 # "Alexandre Felipe Muller de Souza" <amuller@celepar.pr.gov.br>, para Debian 12 # "C ássio Luiz" <cassiolp@cnpq.br>, para Red Hat e CentOS12 # "Cássio Luiz" <cassiolp@cnpq.br>, para Red Hat e CentOS 13 13 # "M. Rodrigo Monteiro" <mrodrigom@gmail.com>, para Red Hat e CentOS 14 14 # 15 15 # 16 # Vers ões:16 # Versões: 17 17 # 27/03/2012 - v1.0 18 18 # Termino do instalador basico, para Debian Squeeze, CentOS 6 e Ubuntu Server 11.10 … … 24 24 ################################################################################################# 25 25 26 # TODO: Internacionalizar o script de instala ção:26 # TODO: Internacionalizar o script de instalação: 27 27 # http://www.linuxquestions.org/questions/programming-9/bash-script-how-to-get-locale-translations-802726/ 28 28 # http://tldp.org/LDP/abs/html/localization.html … … 44 44 45 45 # 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. 47 47 [ $UID != 0 ] && { echo "Este script deve ser executado como superusuario (root) ou com sudo"; exit 1; } 48 48 … … 62 62 echo "Sistema operacional desconhecido ou incompativel com o instalador do Expresso Livre!" 63 63 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" 65 65 exit 1 66 66 fi 67 67 68 # Telas da instalacao 69 BACKTITLE="Instala ção do ExpressoLivre versão $VERSAO"68 # Telas da instalacao 69 BACKTITLE="Instalação do ExpressoLivre versão $VERSAO" 70 70 71 71 BACKTITLE="$BACKTITLE, para $INSTALL" 72 72 73 # Inicializacao basica de instalacao, como atualiza ção de repositório e criação de variáveis de ambiente73 # Inicializacao basica de instalacao, como atualização de repositório e criação de variáveis de ambiente 74 74 ini_$INSTALL 75 75 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 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á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 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 88 88 89 89 # Inicia a escolha/instalacao e configuracao dos servicos nessarios ao ExpressoLivre 90 90 SERVICOS=$( 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 \ 93 93 ldap 'Servidor ldap (openldap)' on \ 94 94 bd 'Servidor de banco de dados (postgresql)' on \ … … 102 102 done 103 103 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 75104 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 -
branches/2.4/INSTALL/rhel/6/etc/openldap/slapd.conf
r6730 r6754 16 16 include /etc/openldap/schema/nis.schema 17 17 # 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 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 23 23 include /etc/ldap/schema/phpgwquotacontrolled.schema 24 24 -
branches/2.4/admin/inc/class.uiconfig.inc.php
r5988 r6754 11 11 \**************************************************************************/ 12 12 13 require_once('prototype/api/config.php'); 14 use prototype\api\Config as Config; 13 15 14 16 class uiconfig … … 337 339 /* Seta o valor padrão para a configuração de número máximo de marcadores */ 338 340 $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 } 339 360 /* Recupera o número mínimo de marcadores que pode ser definido */ 340 361 $db = ''; … … 420 441 $t->set_var('min_labels',$cont_labels); 421 442 443 $t->set_var('rows_ldap_identifier',$options); 422 444 $t->pfp('out','body'); 423 445 -
branches/2.4/admin/setup/phpgw_pt-br.lang
r5988 r6754 565 565 There 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. 566 566 Minimum number of labels allowed admin pt-br Número mínimo de marcadores permitido 567 Identifier of the recipient of a message admin pt-br Identificador do destinatário de uma mensagem 568 LDAP attribute used to replacement admin pt-br Atributo LDAP utilizado para substituição 569 None admin pt-br Nenhum -
branches/2.4/admin/setup/setup.inc.php
r5298 r6754 13 13 $setup_info['admin']['name'] = 'admin'; 14 14 $setup_info['admin']['title'] = 'Admin'; 15 $setup_info['admin']['version'] = '2.4. 0';15 $setup_info['admin']['version'] = '2.4.1'; 16 16 $setup_info['admin']['app_order'] = 1; 17 17 $setup_info['admin']['tables'] = ''; … … 48 48 $setup_info['admin']['depends'][] = array( 49 49 'appname' => 'phpgwapi', 50 'versions' => Array('2.4 ')50 'versions' => Array('2.4.1') 51 51 ); 52 52 ?> -
branches/2.4/calendar/setup/setup.inc.php
r5298 r6754 12 12 13 13 $setup_info['calendar']['name'] = 'calendar'; 14 $setup_info['calendar']['version'] = '2.4. 0';14 $setup_info['calendar']['version'] = '2.4.1'; 15 15 $setup_info['calendar']['app_order'] = 3; 16 16 $setup_info['calendar']['enable'] = 1; … … 52 52 $setup_info['calendar']['depends'][] = array( 53 53 'appname' => 'phpgwapi', 54 'versions' => Array('2.4 ')54 'versions' => Array('2.4.1') 55 55 ); -
branches/2.4/calendar/setup/tables_update.inc.php
r5314 r6754 134 134 return $GLOBALS['setup_info']['calendar']['currentver']; 135 135 } 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 } 136 143 ?> -
branches/2.4/emailadmin/setup/setup.inc.php
r5298 r6754 14 14 $setup_info['emailadmin']['name'] = 'emailadmin'; 15 15 $setup_info['emailadmin']['title'] = 'EMailAdmin'; 16 $setup_info['emailadmin']['version'] = '2.4. 0';16 $setup_info['emailadmin']['version'] = '2.4.1'; 17 17 $setup_info['emailadmin']['app_order'] = 10; 18 18 $setup_info['emailadmin']['enable'] = 2; … … 40 40 $setup_info['emailadmin']['depends'][] = array( 41 41 'appname' => 'phpgwapi', 42 'versions' => Array('2.4 ')42 'versions' => Array('2.4.1') 43 43 ); 44 44 -
branches/2.4/emailadmin/setup/tables_update.inc.php
r5352 r6754 128 128 return $GLOBALS['setup_info']['emailadmin']['currentver']; 129 129 } 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 } 130 137 ?> -
branches/2.4/expressoAdmin1_2/inc/class.bosectors.inc.php
r6713 r6754 45 45 $sector_info = array(); 46 46 $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; 56 55 57 56 $systemName = $GLOBALS['phpgw_info']['server']['system_name']; … … 111 110 $this->so->remove_attribute($sector_info[0]['dn'], $ldap_mod_del); 112 111 } 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); 121 121 } 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 } 134 134 // Volta para o ListSectors 135 135 ExecMethod('expressoAdmin1_2.uisectors.list_sectors'); -
branches/2.4/expressoAdmin1_2/inc/class.db_functions.inc.php
r6660 r6754 66 66 } 67 67 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 77 77 /* 78 78 * Reativa os usuários desabilitados por tempo inativo modificando o seu ultimo acesso para o dia atual. … … 779 779 780 780 //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'])); 782 782 783 783 //Insere novas regras -
branches/2.4/expressoAdmin1_2/inc/class.functions.inc.php
r6713 r6754 467 467 468 468 /* 469 Funciona de maneira similar ao get_sectors_list, por ém retorna a propria OU do contexto470 e monta o array de retorno de forma diferente, necess ário para algumas mudanças implementadas471 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. 472 472 */ 473 473 function get_organizations2($contexts, $selected='', $referral=false, $show_invisible_ou=true) { … … 495 495 ldap_close($ldap_conn); 496 496 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. 498 498 for ($i=0; $i<$info["count"]; $i++) 499 499 { 500 500 $dn = $info[$i]["dn"]; 501 501 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. 503 503 //if (strtolower($dn) == $context) 504 504 //continue; … … 514 514 } 515 515 } 516 // Ordena ção por chave516 // Ordenação por chave 517 517 ksort($inverted_dn); 518 518 519 // Constru ção do select519 // Construção do select 520 520 $level = 0; 521 521 $options = array(); … … 538 538 539 539 reset ( $array_dn ); 540 $display .= ' ' . urldecode( str_replace('\\', '%', current ( $array_dn ))); 540 $display .= ' ' . urldecode( str_replace('\\', '%', current ( $array_dn ))); 541 541 542 542 $info_retorno['display'] = $display; … … 598 598 } 599 599 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. 601 601 function existe_quota_usuario($setor) { 602 602 $num_users = $this->get_num_users($setor['dn']); … … 608 608 } 609 609 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. 611 611 function existe_quota_disco($setor,$quota_novo_usuario) { 612 612 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. 614 614 615 615 $nova_quota = $this->get_actual_disk_usage($setor['dn']) + $quota_novo_usuario; … … 620 620 } 621 621 622 // Soma as quotas de todos os usu ï¿Årios daquele contexto.622 // Soma as quotas de todos os usuᅵrios daquele contexto. 623 623 function get_actual_disk_usage($context) { 624 624 $quota_usada=0; … … 629 629 foreach($usuarios as $usuario) { 630 630 $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... 632 632 $quota_usada += ($temp['mailquota'] / 1024); 633 633 } -
branches/2.4/expressoAdmin1_2/inc/class.uimanagers.inc.php
r6585 r6754 88 88 89 89 // 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 '; 91 91 $GLOBALS['phpgw']->db->query($query); 92 92 while($GLOBALS['phpgw']->db->next_record()) … … 236 236 function edit_managers() 237 237 { 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 240 240 // Caso nao seja admin, sai. 241 241 if (!$GLOBALS['phpgw']->acl->check('run',1,'admin')) -
branches/2.4/expressoAdmin1_2/inc/class.uisectors.inc.php
r6713 r6754 233 233 234 234 $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 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])); 238 238 239 239 // Verifica se tem acesso a este modulo … … 255 255 if (!$_POST) 256 256 { 257 $sector_info = $this->so->get_info($_GET['context']); 257 $sector_info = $this->so->get_info($_GET['context']); 258 258 $sector_disk_quota = $sector_info[0]['diskquota'][0]; 259 259 $sector_users_quota = $sector_info[0]['usersquota'][0]; … … 299 299 function view_cota() 300 300 { 301 $context = utf8_decode($_GET['context']); 302 301 $context = utf8_decode($_GET['context']); 302 $a_tmp = explode(",", $context); 303 303 304 304 $sector_name = str_replace('ou=' , '' ,$a_tmp[0]); -
branches/2.4/expressoAdmin1_2/inc/class.user.inc.php
r6660 r6754 37 37 38 38 if($this->db_functions->use_cota_control()) { 39 //Verifica quota de usu ários e disco39 //Verifica quota de usuários e disco 40 40 $setor = $this->functions->get_info($params['context']); 41 41 if (!$this->functions->existe_quota_usuario($setor[0])) { 42 42 $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. 44 44 return $return; 45 45 } 46 46 if (!$this->functions->existe_quota_disco($setor[0],$params['mailquota'])) { 47 47 $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. 49 49 return $return; 50 50 } … … 318 318 */ 319 319 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. 321 321 if($this->db_functions->use_cota_control()) { 322 322 $setor = $this->functions->get_info($new_values['context']); 323 323 if (!$this->functions->existe_quota_disco($setor[0],$new_values['mailquota'])) { 324 324 $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. 326 326 return $return; 327 327 } -
branches/2.4/expressoAdmin1_2/js/jscode/managers.js
r6585 r6754 82 82 else 83 83 { 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 91 91 if (type == 'add') 92 92 cExecuteForm ("$this.manager.create", document.forms[0], handler_createsave_manager); -
branches/2.4/expressoAdmin1_2/setup/phpgw_pt-br.lang
r6662 r6754 460 460 last login expressoAdmin1_2 pt-br Último acesso 461 461 user 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 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 467 467 disk quota expressoAdmin1_2 pt-br Cota em Disco 468 468 shared accounts expressoAdmin1_2 pt-br Contas compartilhadas -
branches/2.4/expressoAdmin1_2/setup/setup.inc.php
r5298 r6754 13 13 $setup_info['expressoAdmin1_2']['title'] = 'Expresso Admin'; 14 14 /* 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'; 16 16 $setup_info['expressoAdmin1_2']['app_order'] = 1; 17 17 $setup_info['expressoAdmin1_2']['tables'][] = 'phpgw_expressoadmin'; … … 37 37 $setup_info['expressoAdmin1_2']['depends'][] = array( 38 38 'appname' => 'phpgwapi', 39 'versions' => Array('2.4 ')39 'versions' => Array('2.4.1') 40 40 ); 41 41 ?> -
branches/2.4/expressoAdmin1_2/setup/tables_update.inc.php
r5314 r6754 323 323 $GLOBALS['setup_info']['expressoAdmin1_2']['currentver'] = '2.4.0'; 324 324 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 } 326 333 ?> -
branches/2.4/expressoCalendar/docs/caldav-DELETE.php.diff
r6440 r6754 15 15 + $dav_name = explode('/', $dav_resource->GetProperty('dav_name')); 16 16 + 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) ]); 18 18 + } 19 19 +/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -
branches/2.4/expressoCalendar/docs/caldav-PUT-vcalendar.php.diff
r6440 r6754 14 14 + $params = array(); 15 15 + $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) ]; 17 17 + $params['owner'] = $session->username; 18 18 + $params['action'] = $put_action_type; -
branches/2.4/expressoMail1_2/inc/class.db_functions.inc.php
r6331 r6754 24 24 include_once(PHPGW_API_INC.'/class.db.inc.php'); 25 25 } 26 include_once('class.dynamic_contacts.inc.php');27 26 28 27 class db_functions … … 248 247 } 249 248 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 requests270 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 }278 249 function getUserByEmail($params){ 279 250 // Follow the referral … … 309 280 } 310 281 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 email331 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 }367 282 function update_preferences($params){ 368 283 $string_serial = urldecode($params['prefe_string']); … … 375 290 else 376 291 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);397 292 } 398 293 -
branches/2.4/expressoMail1_2/inc/class.functions.inc.php
r6733 r6754 15 15 function CalculateDateOffset() 16 16 { 17 18 17 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 18 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 22 22 $timezone_index = $_SESSION['phpgw_info']['user']['preferences']['expressoMail']['timezone']; 23 23 $user_timezone = $zones[$timezone_index]; -
branches/2.4/expressoMail1_2/inc/class.imap_functions.inc.php
r6735 r6754 1095 1095 function get_info_msg($params) 1096 1096 { 1097 1098 1097 if(isset($params['alarm'])){ 1099 1098 $alarm = $params['alarm']; … … 1140 1139 //$return['signature'] = $return_get_body['signature']; 1141 1140 } 1142 1141 1143 1142 $pattern = '/^[ \t]*Disposition-Notification-To:.*/mi'; 1144 1143 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]))); 1146 1145 1147 1146 $return['Recent'] = $header->Recent; … … 1400 1399 $return['login'] = $_SESSION['phpgw_info']['expressomail']['user']['account_id'];//$GLOBALS['phpgw_info']['user']['account_id']; 1401 1400 $return['reply_toaddress'] = $header->reply_toaddress; 1402 1401 1403 1402 if(($return['from']['email'] == '@unspecified-domain' || $return['sender']['email'] == null) && $return['msg_folder'] == 'INBOX/Drafts'){ 1404 1403 $return['from']['email'] = "Rascunho"; 1405 1404 } 1406 1405 1407 1406 if(strpos($return['toaddress2'], 'undisclosed-recipients') !== false){ 1408 1407 $return['toaddress2'] = $this->functions->getLang('without destination'); … … 1677 1676 break; 1678 1677 1679 1678 case 'CANCEL': 1680 1679 1681 1680 $ical = $icalService->getComponent('vevent'); … … 2811 2810 $header = $this->get_header($msg_numb); 2812 2811 $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]))); 2816 2815 2817 2816 $message_id = $header->message_id; … … 2918 2917 if($att['disposition'] == 'embedded' && $isHTML) //Caso mensagem em texto simples converter os embedded para attachments 2919 2918 { 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')); 2922 2921 } 2923 2922 else 2924 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' ); 2925 2924 2926 2925 $message_size_total += $att['size']; … … 2937 2936 { 2938 2937 $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') ); 2940 2939 } 2941 2940 else … … 2948 2947 $mbox_stream = $this->open_mbox(mb_convert_encoding($value['folder'] , 'ISO-8859-1' , 'UTF7-IMAP')); 2949 2948 $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' ); 2952 2951 $message_size_total += mb_strlen($rawmsg); //Adiciona o tamanho do anexo a variavel que controlao tamanho da msg. 2953 2952 unset($rawmsg); … … 3029 3028 */ 3030 3029 //////////////////////////////////////////////////////////////////////////////////////////////////// 3031 3032 3030 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>'; 3043 3042 $mailService->setBodyHtml($body); 3044 } 3043 } 3045 3044 else 3046 3045 $mailService->setBodyText($body); … … 3074 3073 error_log("$now - $userip - $sent [$subject] - $userid => $addrs\r\n", 3, "/home/expressolivre/mail_senders.log"); 3075 3074 } 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'])); 3084 3077 3085 3086 3078 //return array("success" => true, "folder" => $folder_list); 3087 3079 return array("success" => true, "load" => $has_new_folder); … … 3839 3831 } 3840 3832 3841 function send_notification($params) 3842 { 3843 $mailService = ServiceLocator::getService('mail'); 3833 function send_notification($params) 3834 { 3835 $mailService = ServiceLocator::getService('mail'); 3844 3836 $body = lang("Your message: %1",$params['subject']) . '<br>'; 3845 3837 $body .= lang("Received in: %1",date("d/m/Y H:i",$params['date'])) . '<br>'; 3846 3838 $body .= lang("Has been read by: %1 < %2 > 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); 3851 3843 3852 3844 } … … 4907 4899 $return['msgs'][$i]['flag'] .= $msg->Deleted ? $msg->Deleted : ''; 4908 4900 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. 4910 4902 $importante = array(); 4911 4903 … … 5188 5180 * @param <Array> <$proc> <ações do filtro> 5189 5181 * @return <Regras do usuário em Array> 5190 * @access <public>5182 * @access public 5191 5183 */ 5192 5184 function apliSieveFilter($msgs , $proc) … … 5229 5221 return $ret; 5230 5222 } 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 5231 5398 } 5232 5399 ?> -
branches/2.4/expressoMail1_2/inc/class.ldap_functions.inc.php
r6139 r6754 436 436 $ldapService->connection = $this->ds; 437 437 $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"); 439 439 foreach($searchable_fields as $fields_ldap => $value_field) 440 440 { … … 473 473 $this->ldapConnect(true,$i); 474 474 $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"); 476 476 $sr=@ldap_search($this->ds, $this->ldap_context, $filter, $justthese, 0, $this->max_result+1); 477 477 if(!$sr) … … 496 496 497 497 $info_return['search_for'] = $params['search_for']; 498 return $ info_return;498 return $this->toISO8859($info_return); 499 499 } 500 500 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 501 512 function make_quicksearch_card($info, $cn) 502 513 { … … 553 564 '<tr class="quicksearchcontacts_unselected">' . 554 565 '<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"].'\')">' . 556 567 $photo_link . 557 568 '</a>' . … … 559 570 '<td class="cc">' . 560 571 '<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"].'\')">' . 562 573 '<font color=blue>' . 563 574 '<span name="mail">' . $contacts_result['mail'] . '</span></a></font>'. -
branches/2.4/expressoMail1_2/index.php
r6669 r6754 38 38 <script src="../prototype/plugins/farbtastic/farbtastic.js" language="javascript"></script> 39 39 <script src="../prototype/api/datalayer.js" language="javascript"></script> 40 <script src="../prototype/api/rest.js" language="javascript"></script> 40 41 <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> 42 47 <script src="../library/ckeditor/ckeditor.js" language="javascript" charset="utf-8"></script> 43 48 <script src="../library/ckeditor/adapters/jquery.js" language="javascript"></script> … … 56 61 <script type="text/javascript" src="../prototype/plugins/datejs/sugarpak.js"></script> 57 62 <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> 58 64 59 65 <script type="text/javascript" src="../prototype/plugins/watermark/jquery.watermarkinput.js"></script> … … 71 77 <script type="text/javascript" src="../prototype/modules/calendar/js/calendar.date.js"></script> 72 78 <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 74 83 75 84 <script src="js/rich_text_editor.js" type="text/javascript"></script> … … 194 203 $_SESSION['phpgw_info']['user']['preferences']['expressoMail']['telephone_number'] = $GLOBALS['phpgw_info']['user']['telephonenumber']; 195 204 $_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']; 196 206 $_SESSION['phpgw_info']['user']['preferences']['expressoMail']['use_x_origin'] = $current_config['expressoMail_use_x_origin']; 197 207 $_SESSION['phpgw_info']['user']['preferences']['expressoMail']['number_of_contacts'] = $current_config['expressoMail_Number_of_dynamic_contacts'] ? $current_config['expressoMail_Number_of_dynamic_contacts'] : "0"; … … 215 225 $_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"; 216 226 $_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 218 227 $_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; 219 228 // ACL for block edit Personal Data. … … 274 283 $_SESSION['phpgw_info']['server']['expressomail']['expressoMail_use_spam_filter'] = $current_config['expressoMail_use_spam_filter']; 275 284 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>'; 277 287 // End Set Anti-Spam options. 278 288 … … 352 362 "js/main.js," . 353 363 "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 361 371 if($_SESSION['phpgw_info']['user']['preferences']['expressoMail']['use_local_messages']) 362 372 $scripts .= "js/local_messages.js,"; … … 364 374 "js/DropDownContacts.js," . 365 375 "js/doiMenuData.js," . 366 "js/connector.js"; 376 "js/connector.js"; 367 377 echo $obj -> getFilesJs($scripts, $update_version); 368 378 echo ' -
branches/2.4/expressoMail1_2/js/QuickCatalogSearch.js
r6631 r6754 14 14 }); 15 15 }); 16 16 17 17 /* showlist */ 18 18 emQuickCatalogSearch.prototype.showList = function(data, begin, end, ID, field) … … 125 125 switch(data_['type_catalog']) { 126 126 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("#"); 130 130 else 131 131 var extra_fields = []; … … 149 149 } 150 150 } 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 } 151 163 break; 152 164 case 'P': … … 157 169 if(data_[id_contact].telephonenumber != null) 158 170 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 } 159 183 break; 160 184 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("#"); 164 188 else 165 189 var extra_fields = []; … … 190 214 } 191 215 } 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 } 192 228 break; 193 229 } … … 255 291 var signal = "+"; 256 292 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(","); 259 300 for(aux=0; aux<emails_adicionados.length -1; aux++) { 260 301 if(emails_adicionados[aux].match(/<([^<]*)>[\s]*$/)){ … … 279 320 else if(contact_name.toLowerCase().indexOf(data.search_for.toLowerCase()) != -1 && data.search_for.indexOf(" ") == -1 && data.search_for.indexOf("@") == -1) 280 321 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>'; 282 326 Op.innerHTML = line; 283 327 $(Op).val(i - 1); … … 317 361 } 318 362 } 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 } 320 376 break; 321 377 case 'P': … … 326 382 if(data[first_contact].telephonenumber != null) 327 383 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 } 328 396 break; 329 397 default: … … 358 426 } 359 427 } 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 } 360 440 break; 361 441 } 362 var string_results = sliderValue + " " + get_lang("of") + " " + paginas + " (" + data.length + " " + get_lang("Results") + ")"; 363 442 var string_results = sliderValue + " " + get_lang("of") + " " + paginas + " (" + data.length + " " + get_lang("Results") + ")"; 443 $( "#amount-text" ).val( string_results ).attr('readonly', true); 364 444 $("button").button(); 365 445 //$("button.remove").button({icons:{primary:"ui-icon-close"}, text: false}); … … 389 469 }else 390 470 var extra_fields = []; 391 if(preferences.default_fields_quick_search != 0 && data[this.value] ) { 392 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 ) 394 474 details.append('<p><label class="attribute">Telefone</label>' + '<span class="value">' + (data[this.value].telephonenumber ? data[this.value].telephonenumber[0] : "")+ "</span></p>"); 395 475 } … … 405 485 } 406 486 } 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 } 407 499 break; 408 500 case 'P': … … 413 505 if(data[this.value].telephonenumber != null) 414 506 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 } 415 519 break; 416 520 default: 417 if(this.value == undefined) 418 break; 419 521 if(this.value == undefined) 522 break; 523 420 524 if(data['extra_ldap_fields'].length != 0) 421 525 var extra_fields = (data['extra_ldap_fields']).split("#"); … … 447 551 } 448 552 } 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 } 449 565 break; 450 566 } … … 587 703 var nome = $(contact).clone().find('.name').text(); 588 704 var email = $(contact).clone().find('.email').text(); 589 590 705 if(email == get_lang("No mail")){ 591 706 alert(get_lang("It is not possible to add this contact as a recipient because it does not have email")); … … 594 709 return; 595 710 } 596 597 711 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")); 613 728 } 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 622 729 content.find(field_).filter("input").val(""); 623 730 button.onclick = function(){ … … 625 732 }; 626 733 var div = document.getElementById(divs); 627 628 734 div.ondblclick = function(){ 629 735 remove_contact_field(div.innerHTML, button, divs); 630 736 }; 631 632 737 button.innerHTML = '<span class="ui-button-text" style="">x</span>'; 633 738 } … … 639 744 function remove_contact_field(contact, button, divs) { 640 745 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 669 756 button.onclick = function(){ 670 757 add_contact_field(document.getElementById(divs).innerHTML, button, divs); 671 758 }; 672 673 759 var div = document.getElementById(divs); 674 675 760 div.ondblclick = function(){ 676 761 add_contact_field(div.innerHTML, button, divs); 677 762 }; 678 679 content.find(field_).trigger("update");680 763 button.innerHTML = '<span class="ui-button-text" style="">+</span>'; 681 764 } -
branches/2.4/expressoMail1_2/js/QuickSearchUser.js
r5477 r6754 53 53 } 54 54 55 emQuickSearchUser.prototype.create_new_message = function (cn, mail )55 emQuickSearchUser.prototype.create_new_message = function (cn, mail, uid) 56 56 { 57 57 QuickSearchUser.closeWindow(); 58 var ldap_id = preferences.expressoMail_ldap_identifier_recipient; 58 59 59 if (openTab.type[currentTab] != 4) 60 { 61 Element("msg_number").value = "\""+cn+"\" <"+mail+">"; 60 if (openTab.type[currentTab] != 4){ 62 61 new_message("new","null"); 63 62 } 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")); 68 68 } 69 69 } -
branches/2.4/expressoMail1_2/js/TreeShow.js
r6607 r6754 88 88 var aux = ttree.getFolder().split(cyrus_delimiter); 89 89 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 96 96 if( ttree.getFolder() != "" ) 97 97 { -
branches/2.4/expressoMail1_2/js/abas.js
r6691 r6754 270 270 parent_bb.insertBefore(td, bb); 271 271 272 if((typeof(id_value) == 'string') && id_value.match(/_r/)){ 272 if((typeof(id_value) == 'string') && id_value.match(/_r/)){ 273 273 $(td).draggable({ 274 274 start : function(){ … … 306 306 var border_id = ui.draggable.find("input[type=hidden]").attr("name"); 307 307 if(folder_to_move == "border_tr"){ 308 var id_msg = border_id.split("_")[0]; 308 var id_msg = border_id.split("_")[0]; 309 309 folder = $("#input_folder_"+border_id+"_r")[0] ? $("#input_folder_"+border_id+"_r").val() : (openTab.imapBox[border_id] ? openTab.imapBox[border_id]:get_current_folder()); 310 310 move_msgs2(folder, id_msg, border_id, folder_to, to_folder_title,true); … … 400 400 } 401 401 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 } 406 406 return(title); 407 407 } … … 435 435 'width' : width, 436 436 'onClose': function(clicked) { 437 if(clicked == 'Cancelar'){ 438 if (RichTextEditor.plain[id] != true)439 setTimeout("RichTextEditor.focus("+ID+")",100);440 else441 $('#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 } 443 443 if(clicked == 'Descartar alterações' || clicked == 'Descartar alterações e anexos' ) { 444 444 if (openTab.imapBox[ID] && !openTab.toPreserve[ID]) … … 502 502 function delete_border(ID, msg_sent) 503 503 { 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); 520 520 } 521 521 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 */ 2 var ccQuickAddOne = { 3 send : function(data){ 4 var email = data[4]; 5 5 var handler = function (responseText) 6 6 { … … 9 9 write_msg("Problema ao contactar servidor"); 10 10 return; 11 }else if (data['status'] == 'alreadyExists'){ 11 }else if (data['status'] == 'alreadyExists'){ 12 12 alert(data['msg']); 13 13 return; … … 16 16 } 17 17 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 } 19 31 }; 20 32 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)); 26 38 var CC_url = '../index.php?menuaction=contactcenter.ui_data.data_manager&method='; 27 39 connector.newRequest('cQuickAdd.Send', CC_url+'quick_add', 'POST', handler, sdata); 40 updateDynamicPersonalContacts(); 41 cache = new Array(); 28 42 return true; 29 43 }, 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 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 } 81 95 }; -
branches/2.4/expressoMail1_2/js/common_functions.js
r6727 r6754 775 775 } 776 776 777 function search_emails(value ){777 function search_emails(value, data){ 778 778 var resize = false; 779 779 resize = resize_borders(); … … 815 815 connector.loadScript("search"); 816 816 if (typeof(EsearchE) == 'undefined' || typeof(ttree) == 'undefined'){ 817 setTimeout("search_emails('"+value+"' )",500);817 setTimeout("search_emails('"+value+"', '"+data+"')",500); 818 818 return false; 819 819 } 820 EsearchE.showForms(value );820 EsearchE.showForms(value, data); 821 821 $("#em_message_search").val(""); 822 822 } … … 1127 1127 Element("check_box_message_"+main_list[i].id).checked = true; 1128 1128 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 } 1137 1137 } 1138 1138 } … … 1144 1144 remove_className(Element(main_list[i].id), 'selected_msg selected_shortcut_msg'); 1145 1145 $("#"+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 1149 1150 } 1150 1151 -
branches/2.4/expressoMail1_2/js/doiMenuData.js
r5866 r6754 195 195 items: menuToolsItems 196 196 }); 197 197 var 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 }); 198 209 199 210 function updateLabelsColumn(messageInfo) { … … 294 305 } 295 306 296 297 298 299 300 301 307 function 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 330 function 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 8 8 * formatação, etc.) 9 9 */ 10 11 focusIn = ""; 12 canMakeBox = true; 13 fastSearch = false; 14 10 15 onceOpenedHeadersMessages = {}; 11 16 var cache = new Array(); 12 17 var openTab = { 13 18 'type' : [], // 8 types of tabs, further info. see expressolivre.org/dev/wiki/mail/Documentacao … … 891 896 var _mouse_out; 892 897 var _cell; 893 var colGroupMain = document.getElementById("colgroup_main_"+numBox); 894 898 var colGroupMain = document.getElementById("colgroup_main_"+numBox); 899 var colGroupHead = document.getElementById("colgroup_head_"+numBox); 895 900 for (var r=0;r<trM.length;r++) { 896 901 for (var c=0;c<trM[r].cells.length;c++) { … … 899 904 if (is_mozilla && !is_webkit) { 900 905 if (!emptyBody) { 901 colGroupMain.childNodes[c].setAttribute("width",colSizes[tbl][c]); 906 colGroupMain.childNodes[c].setAttribute("width",colSizes[tbl][c]); 902 907 } 903 colGroupHead.childNodes[c].setAttribute("width",colSizes[tbl][c]); 908 colGroupHead.childNodes[c].setAttribute("width",colSizes[tbl][c]); 904 909 if (tbH.rows[0].cells[c].className=="th_resizable") { 905 910 // lots of stupid fixes for FF to redraw cell content … … 929 934 document.getElementById("colgroup_main_"+numBox).childNodes[c].setAttribute("width",colSizes[tbl][c]); 930 935 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++){ 936 941 if(arrBody[i] !== undefined && arrBody[i].width !== undefined) 937 arrHeader[i].width = arrBody[i].width; 938 } 942 arrHeader[i].width = arrBody[i].width; 943 } 939 944 } 940 945 } … … 1506 1511 if ((headers_msgs.Forwarded == 'F') || (headers_msgs.Draft == 'X' && headers_msgs.Answered == 'A')){ 1507 1512 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')+"'>"; 1509 1514 headers_msgs.Draft = '' 1510 1515 headers_msgs.Answered = ''; … … 1512 1517 } 1513 1518 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')+"'>"; 1515 1520 else if (headers_msgs.Answered == 'A'){ 1516 1521 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')+"'>"; 1518 1523 }else 1519 1524 td_element21.innerHTML = " "; … … 1764 1769 .html('<img src="../prototype/modules/mail/img/flagEditor.png">'); 1765 1770 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 } 1775 1781 }); 1776 1782 … … 1982 1988 var msg_selected; 1983 1989 function 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 } 1984 1999 var content = document.getElementById('content_id_' + ID); 1985 2000 … … 3033 3048 var newAttendeeName = ""; 3034 3049 3035 var name = decoded.match(/"([^"]*)"/) ? decoded.match(/"([^"]*)"/)[1] : ''; 3036 var mail = decoded.match(/<([^<]*)>[\s]*$/) ? decoded.match(/<([^<]*)>[\s]*$/)[1].toLowerCase() : decoded;3037 3038 3039 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); 3040 3055 3041 3056 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.isExternal3057 }, !!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 }else3081 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); 3082 3097 }) 3083 3098 … … 3508 3523 resizeWindow(); 3509 3524 3510 $("#div_message_scroll_"+ID).scrollTo( 0, 400, {queue:true} ); 3525 $("#div_message_scroll_"+ID).scrollTo( 0, 400, {queue:true} ); 3511 3526 } 3512 3527 … … 3559 3574 } 3560 3575 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 3577 function 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 3593 function 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 3644 function 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; 3576 3679 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 } 3823 var input_search = ""; 3824 var click = false; 3825 //EVENTOS DA CAIXA 3826 function 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" ); 3586 3906 }, 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 3914 function 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 3998 function 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 } 3602 4165 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); 3611 4175 }); 3612 4176 } … … 3615 4179 connector.loadScript("color_palette"); 3616 4180 connector.loadScript('wfolders'); 4181 connector.loadScript("ccQuickAdd"); 3617 4182 3618 4183 if(typeof(RichTextEditor) == 'undefined' || typeof(ColorPalette) == 'undefined' || typeof(wfolders) == 'undefined') … … 3662 4227 button.toggleClass("expressomail-button-icon-ative"); 3663 4228 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); 3668 4234 } 3669 4235 } 3670 4236 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); 3672 4238 3673 4239 //Botão TextoRico/TextoSimples 3674 4240 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 } 3695 4261 }) 3696 4262 … … 3934 4500 3935 4501 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 } 3936 4510 // The element was loaded and populated...so return. 3937 4511 if(el_shared_users){ … … 3944 4518 _option.text = el_shared_users.options[x].text; 3945 4519 _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 } 3946 4528 sel_from.options[sel_from.options.length] = _option ; 3947 4529 } … … 3969 4551 if(data.length > 0) { 3970 4552 tr1_1.style.display = ''; 3971 4553 var mycn = typeof(data.myname != 'undefined') ? data.myname : ''; 3972 4554 var _option = document.createElement("OPTION"); 3973 4555 _option.text = '"'+mycn+'" <'+Element("user_email").value+'>'; 3974 4556 _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'; 3975 4560 sel_from.options[sel_from.options.length] = _option; 3976 4561 3977 4562 var options = ''; 3978 var cn = ''; 3979 4563 var cn = ''; 3980 4564 for (var x = 0; x < data.length; x++) { 3981 4565 cn = typeof(data[x].cn[0] != 'undefined') ? data[x].cn[0] : ''; … … 3983 4567 _option.text = '"'+cn+'" <'+data[x].mail[0]+'>'; 3984 4568 _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 } 3985 4577 sel_from.options[sel_from.options.length] = _option ; 3986 4578 } … … 4335 4927 cc_data[3] = array_addrs[0]; 4336 4928 4929 var onclick = ''; 4930 $.each(cc_data, function(index, value){ 4931 onclick += "'"+value+"',"; 4932 }); 4933 onclick = onclick.substr(0, onclick.length-1); 4337 4934 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">'; 4339 4936 var to_addybook_add = "<SPAN id='insert_plugin_"+idx_cc+"_"+ID+"'>"; 4340 4937 to_addybook_add += addrs; -
branches/2.4/expressoMail1_2/js/main.js
r6736 r6754 6 6 var results_search_messages = ""; 7 7 var cabecalho = '<h4>ExpressoLivre - ExpressoMail</h4>'; 8 // Variavel para controle de atualização das mensagens listadas na modal de alerta de filtro por remetente 9 var checkAlarmsFilter = false; 10 11 var dynamicPersonalContacts = new Array(); 12 var dynamicContacts = new Array(); 13 var topContact = 0; 14 DataLayer.get("folder", true); 8 15 9 16 //Os IE's < 9 não possui suporte a trim() introduzida no JavaScript 1.8.1 10 17 if(!String.prototype.trim){ 11 18 String.prototype.trim = function(){ 12 13 19 return this.replace(/^\s+|\s+$/g,''); 20 } 14 21 } 15 22 … … 19 26 return folders.join(cyrus_delimiter); 20 27 } 28 29 function 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 51 function 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 21 68 function init(){ 22 69 if (!is_ie) 23 70 Element('tableDivAppbox').width = '100%'; 24 71 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 }32 72 var save_preferences = function(data){ 33 73 … … 69 109 //Substituido por padrão Jquery 70 110 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. 72 112 if(preferences.hide_folders == "1") 73 113 Element('divAppboxHeader').innerHTML = title_app_menu; … … 116 156 117 157 $(".collapse_folders").removeClass("ui-icon-triangle-1-w"); 118 $(".collapse_folders").addClass("ui-icon-triangle-1-e"); 119 158 $(".collapse_folders").addClass("ui-icon-triangle-1-e"); 159 $(".collapse_folders").parent().attr('title', "Expandir"); 120 160 $.cookie('collapse_folders', "true"); 121 161 refresh(); … … 127 167 $("#folderscol").show(); 128 168 $(".collapse_folders").removeClass("ui-icon-triangle-1-e"); 129 $(".collapse_folders").addClass("ui-icon-triangle-1-w"); 130 169 $(".collapse_folders").addClass("ui-icon-triangle-1-w"); 170 $(".collapse_folders").parent().attr('title', "Ocultar"); 131 171 $.cookie('collapse_folders', "false"); 132 172 refresh(); … … 143 183 } 144 184 ); 185 186 if(parseInt(preferences.use_dynamic_contacts)){ 187 var load_dynamics = function(){ 188 updateDynamicContact(); 189 updateDynamicPersonalContacts(); 190 }; 191 load_dynamics(); 192 } 145 193 } 146 194 var handler_automatic_trash_cleanness = function(data){ … … 160 208 mobile_device = ( ( data.constructor == Boolean ) ? data : ( data === 'true' ) ); 161 209 }); 210 211 DataLayer.get("folder", true); 212 cExecute("$this.imap_functions.get_folders_list&onload=true", update_menu); 213 162 214 setTimeout('auto_refresh()', time_refresh); 163 215 … … 192 244 cyrus_delimiter = Element('cyrus_delimiter').value; 193 245 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;}); 195 247 //cExecute ("$this.functions.get_preferences", save_preferences); 196 248 } … … 279 331 msg_to_delete.childNodes[1].innerHTML = ""; 280 332 write_msg(get_lang("Attachments removed")); 281 folderName = Base64.encode(folder); 282 folderName = folderName.replace(/=/gi, ''); 283 333 folderName = Base64.encode(folder); 334 folderName = folderName.replace(/=/gi, ''); 335 delete_border(msg_num+'_r_'+folderName,'false'); //close email tab 284 336 } 285 337 }; … … 386 438 // se existir prepara os dados para serem enviados e chama a 387 439 // operação na applet 388 389 440 390 441 // if ((msg_info.DispositionNotificationTo) && ((msg_info.Unseen == 'U') || (msg_info.Recent == 'N'))){ … … 510 561 511 562 function refresh(alert_new_msg){ 563 getFromAlertRules(); 512 564 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; 513 573 if(data['msg_range_end']) 514 574 if(data['msg_range_end'] > 0) … … 523 583 524 584 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 } 530 590 Element("table_message_header_box_"+numBox).emptyBody = false; 531 591 table_element = Element("table_box"); … … 708 768 }, 709 769 beforeSend: function( jqXHR, settings ){ 710 770 connector.showProgressBar(); 711 771 }, 712 713 connector.hideProgressBar();772 complete: function( jqXHR, settings ){ 773 connector.hideProgressBar(); 714 774 } 715 775 … … 1051 1111 if( data ) 1052 1112 show_msg( data ); 1053 }, 1054 beforeSend: function( jqXHR, settings ){ 1055 connector.showProgressBar(); 1056 }, 1057 complete: function( jqXHR, settings ){ 1058 1113 }, 1114 beforeSend: function( jqXHR, settings ){ 1115 connector.showProgressBar(); 1116 }, 1117 complete: function( jqXHR, settings ){ 1118 connector.hideProgressBar(); 1059 1119 } 1060 1120 }); … … 1143 1203 Element('tot_m').innerHTML = n_total_msg; 1144 1204 } 1145 1146 1205 refresh(); 1147 1206 } … … 1168 1227 1169 1228 // 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) 1171 1230 {