- Timestamp:
- 06/24/08 16:45:40 (16 years ago)
- Location:
- trunk/expressoMail1_2
- Files:
-
- 12 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/expressoMail1_2/inc/class.imap_functions.inc.php
r320 r325 696 696 //Search for emails, then open a new message tab. 697 697 //$body = @ereg_replace('[a-zA-Z0-9!#$%&\'*+/=?^_`{|}~]+@([.]?[a-zA-Z0-9_/-])*', '<a title=\''.$this->functions->getLang("New Message").' -> \\0\'" onclick="Element(\'msg_number\').value=\'\\0\';new_message(\'new\',\'null\')" href="#">\\0</a>',$body); 698 $matches = array();698 //$matches = array(); 699 699 // Verify exception. 700 @preg_match("/<a href=\"notes:\/\/\//",$body,$matches);700 //@preg_match("/<a href=\"notes:\/\/\//",$body,$matches); 701 701 // It no has exception,then open the link in new window. 702 if(!count($matches)){702 /*if(!count($matches)){ 703 703 $body = @eregi_replace("<a (.*) href=", "<a \\1 target='_blank' href=", $body); 704 704 $body = @str_replace("<a href=", "<a target='_blank' href=", $body); 705 705 $body = @eregi_replace("target=\"\"", "target='_blank'", $body); 706 706 $body = @eregi_replace("target=''", "target='_blank'", $body); 707 } 707 }*/ 708 $body = preg_replace('/(?<=[\s|(<br>)|\n|\r|;])((http(s?):\/\/((?:[\w]\.?)+(?::[\d]+)?[\/.\-~&=?%;@#,+\w]*))|((?:www?\.)(?:\w\.?)*(?::\d+)?[\/\w.\-~&=?%;@+]*))/i', '<a href="http$3://$4$5" target="_blank">http$3://$4$5</a>', $body); 708 709 return $body; 709 710 } … … 946 947 if (is_array($folders_list)) { 947 948 reset($folders_list); 949 $ldap = new ldap_functions(); 948 950 949 951 $i = 0; … … 960 962 $result[$i]['folder_name'] = array_pop($tmp_folder_parent); 961 963 $result[$i]['folder_name'] = $result[$i]['folder_name'] == 'INBOX' ? 'Inbox' : $result[$i]['folder_name']; 962 964 if (is_numeric($result[$i]['folder_name'])) { 965 if ($cn = $ldap->uid2cn($result[$i]['folder_name'])){ 966 $result[$i]['folder_name'] = $cn; 967 } 968 } 969 963 970 $tmp_folder_parent = implode($this->imap_delimiter, $tmp_folder_parent); 964 971 $result[$i]['folder_parent'] = $tmp_folder_parent == 'INBOX' ? '' : $tmp_folder_parent; … … 985 992 } 986 993 987 return array_merge($result2, $this->get_quota()); 994 if($mbox_stream) 995 imap_close($mbox_stream); 996 return array_merge($result2); 988 997 } 989 998 … … 1408 1417 'folder' => $folder, 1409 1418 'new_folder_name' => $new_folder_name, 1410 'border_ID' => $params['border_ID']); 1411 1412 // Caso estejamos no box principal, não é necessário pegar a informação da mensagem anterior. 1419 'border_ID' => $params['border_ID'], 1420 'status' => true); //Status foi adicionado para validar as permissoes ACL 1421 1422 //Este bloco tem a finalidade de averiguar as permissoes para pastas compartilhadas 1423 if (substr($folder,0,4) == 'user'){ 1424 $acl = $this->getacltouser($folder); 1425 /* 1426 * l - lookup (mailbox is visible to LIST/LSUB commands) 1427 * r - read (SELECT the mailbox, perform CHECK, FETCH, PARTIAL, SEARCH, COPY from mailbox) 1428 * s - keep seen/unseen information across sessions (STORE SEEN flag) 1429 * w - write (STORE flags other than SEEN and DELETED) 1430 * i - insert (perform APPEND, COPY into mailbox) 1431 * p - post (send mail to submission address for mailbox, not enforced by IMAP4 itself) 1432 * c - create (CREATE new sub-mailboxes in any implementation-defined hierarchy) 1433 * d - delete (STORE DELETED flag, perform EXPUNGE) 1434 * a - administer (perform SETACL) 1435 */ 1436 if (strpos($acl, "d") === false){ 1437 $return['status'] = false; 1438 return $return; 1439 } 1440 } 1441 1442 // Caso estejamos no box principal, nï¿œo ï¿œ necessï¿œrio pegar a informaᅵᅵo da mensagem anterior. 1413 1443 if (($params['get_previous_msg']) && ($params['border_ID'] != 'null') && ($params['border_ID'] != '')) 1414 1444 $return['previous_msg'] = $this->get_info_previous_msg($params); … … 1894 1924 } 1895 1925 1896 function get_quota( ){1897 1926 function get_quota($params){ 1927 $folder_id = $params['folder_id']; 1898 1928 if(!$this->mbox) 1899 1929 $this->mbox = $this->open_mbox(); 1900 1930 1901 $quota = imap_get_quotaroot($this->mbox, "INBOX");1931 $quota = imap_get_quotaroot($this->mbox, $folder_id); 1902 1932 if($this->mbox) 1903 1933 imap_close($this->mbox); … … 1935 1965 $toaddress = $params['notificationto']; 1936 1966 1937 $subject = 'Confirma ção de leitura: ' . $params['subject'];1967 $subject = 'Confirmaᅵᅵo de leitura: ' . $params['subject']; 1938 1968 $body = 'Sua mensagem: ' . $params['subject'] . '<br>'; 1939 1969 $body .= 'foi lida por: ' . $_SESSION['phpgw_info']['expressomail']['user']['fullname'] . ' <' . $_SESSION['phpgw_info']['expressomail']['user']['email'] . '> em ' . date("d/m/Y H:i"); … … 1959 1989 function empty_trash() 1960 1990 { 1961 $folder = 'INBOX' . $this->imap_delimiter . 'Lixeira';1991 $folder = 'INBOX' . $this->imap_delimiter . $_SESSION['phpgw_info']['expressomail']['email_server']['imapDefaultTrashFolder']; 1962 1992 $mbox_stream = $this->open_mbox($folder); 1963 1993 $return = imap_delete($mbox_stream,'1:*'); … … 2068 2098 $before_date = date("m/d/Y", strtotime("-".$params['before_date']." day")); 2069 2099 $criteria = 'BEFORE "'.$before_date.'"'; 2070 $mbox_stream = $this->open_mbox('INBOX'.$this->imap_delimiter. "Lixeira");2100 $mbox_stream = $this->open_mbox('INBOX'.$this->imap_delimiter.$_SESSION['phpgw_info']['expressomail']['email_server']['imapDefaultTrashFolder']); 2071 2101 $messages = imap_search($mbox_stream, $criteria, SE_UID); 2072 2102 if (is_array($messages)){ … … 2082 2112 function remove_accents($string) { 2083 2113 return strtr($string, 2084 "? Ó??ó?Ý?úÁÀÃÂÄÇÉÈÊËÍÌ?ÎÏÑÕÔÓÒÖÚÙ?ÛÜ?áàãâäçéèêëíì?îïñóòõôöúù?ûüýÿ",2114 "?ï¿œ??ï¿œ?ï¿œ?ᅵᅵᅵᅵᅵᅵᅵᅵᅵᅵᅵᅵᅵ?ᅵᅵᅵᅵᅵᅵᅵᅵᅵᅵ?ᅵᅵ?ᅵᅵᅵᅵᅵᅵᅵᅵᅵᅵᅵᅵ?ᅵᅵᅵᅵᅵᅵᅵᅵᅵᅵ?ᅵᅵᅵᅵ", 2085 2115 "SOZsozYYuAAAAACEEEEIIIIINOOOOOUUUUUsaaaaaceeeeiiiiinooooouuuuuyy"); 2086 2116 } … … 2287 2317 $return = array(); 2288 2318 $mbox_stream = $this->open_mbox(); 2289 $mbox_acl = imap_getacl($mbox_stream, 'user'.$this->imap_delimiter.$user); 2319 //Alterado, antes era 'imap_getacl($mbox_stream, 'user'.$this->imap_delimiter.$user); 2320 //Afim de tratar as pastas compartilhadas, verificandos as permissoes de operacao sobre as mesmas 2321 //No caso de se tratar da caixa do proprio usuario logado, utiliza a sintaxe abaixo 2322 if(substr($user,0,4) != 'user') 2323 $mbox_acl = imap_getacl($mbox_stream, 'user'.$this->imap_delimiter.$user); 2324 else 2325 $mbox_acl = imap_getacl($mbox_stream, $user); 2290 2326 return $mbox_acl[$this->username]; 2291 2327 } … … 2354 2390 $msg = $header . $body; 2355 2391 $email = $_SESSION['phpgw_info']['expressomail']['user']['email']; 2356 $username = $this->username; 2392 //$tmp_file = $tmp_dir . "msg." . $email . '.'. $msg_number . time(); 2393 // maybe we can get it faster with regex, don't know how :'( 2394 $signature = trim(substr($header, strpos($header, 'X-DSPAM-Signature:') + 18)); 2357 2395 strtok($email, '@'); 2358 2396 $domain = strtok('@'); 2359 2397 2360 //Encontrar a assinatura do dspam no cabecalho2361 $v = explode("\r\n", $header);2362 foreach ($v as $linha){2363 if (eregi("^X-DSPAM-Signature", $linha)) {2364 2365 $args = explode(" ",$linha);2366 $signature = $args[1];2367 }2368 }2369 2370 2398 // feed dspam 2371 switch($is_spam){ 2372 case 'true': $cmd = $_SESSION['phpgw_info']['server']['expressomail']['expressoMail_command_for_spam']; break; 2373 case 'false': $cmd = $_SESSION['phpgw_info']['server']['expressomail']['expressoMail_command_for_ham']; break; 2374 } 2375 $tags = array('##EMAIL##', '##USERNAME##', '##DOMAIN##', '##SIGNATURE##'); 2376 $cmd = str_replace($tags,array($email,$username,$domain,$signature),$cmd); 2399 if ($is_spam) 2400 $cmd = str_replace( 2401 array('##EMAIL##', '##USERNAME##', '##DOMAIN##', '##SIGNATURE##'), 2402 array($email, $this->username, $domain, $signature), $_SESSION['phpgw_info']['server']['expressomail']['expressoMail_command_for_spam'] 2403 ); 2404 else 2405 $cmd = str_replace( 2406 array('##EMAIL##', '##USERNAME##', '##DOMAIN##', '##SIGNATURE##'), 2407 array($email, $this->username, $domain, $signature), $_SESSION['phpgw_info']['server']['expressomail']['expressoMail_command_for_ham'] 2408 ); 2409 2377 2410 system($cmd); 2411 2378 2412 } 2379 2413 imap_close($mbox_stream); -
trunk/expressoMail1_2/inc/class.ldap_functions.inc.php
r320 r325 15 15 16 16 // usa o host e context do contact center. 17 function ldapConnect($refer = false){ 18 $this->ldap_host = $_SESSION['phpgw_info']['expressomail']['ldap_server']['host']; 19 $this->ldap_context = $_SESSION['phpgw_info']['expressomail']['ldap_server']['dn']; 20 $this->ds = ldap_connect($this->ldap_host); 17 function ldapConnect($refer = false,$catalogo = 0){ 18 include("../contactcenter/setup/external_catalogs.inc.php"); 19 if ($catalogo == 0){ 20 $this->ldap_host = $_SESSION['phpgw_info']['expressomail']['ldap_server']['host']; 21 $this->ldap_context = $_SESSION['phpgw_info']['expressomail']['ldap_server']['dn']; 22 $this->bind_dn = $_SESSION['phpgw_info']['expressomail']['ldap_server']['acc']; 23 $this->bind_dn_pw = $_SESSION['phpgw_info']['expressomail']['ldap_server']['pw']; 24 $this->branch = 'ou'; 25 }else { 26 27 $this->ldap_host = $external_srcs[$catalogo]['host']; 28 $this->ldap_context = $external_srcs[$catalogo]['dn']; 29 $this->bind_dn = $external_srcs[$catalogo]['acc']; 30 $this->bind_dn_pw = $external_srcs[$catalogo]['pw']; 31 $this->object_class = $external_srcs[$catalogo]['obj']; 32 $this->base_dn = $external_srcs[$catalogo]['dn']; 33 $this->branch = $external_srcs[$catalogo]['branch']; 34 35 } 36 $this->ds = ldap_connect($this->ldap_host); 21 37 ldap_set_option($this->ds, LDAP_OPT_PROTOCOL_VERSION, 3); 22 38 ldap_set_option($this->ds, LDAP_OPT_REFERRALS, $refer); 23 if ($refer) 24 { 39 if ($refer){ 25 40 ldap_set_rebind_proc($this->ds, ldapRebind); 26 41 } 27 @ldap_bind($this->ds, $_SESSION['phpgw_info']['expressomail']['ldap_server']['acc'],$_SESSION['phpgw_info']['expressomail']['ldap_server']['pw']); 42 @ldap_bind($this->ds,$this->bind_dn,$this->bind_dn_pw ); 43 28 44 } 29 45 … … 58 74 function quicksearch($params) 59 75 { 76 include_once("../contactcenter/setup/external_catalogs.inc.php"); 60 77 include_once("class.functions.inc.php"); 61 78 $functions = new functions; 62 79 63 $search_for = $params['search_for'];80 $search_for = utf8_encode($params['search_for']); 64 81 $field = $params['field']; 65 82 $ID = $params['ID']; 66 83 84 $search_for = explode(" ",$search_for); 85 $aux=""; 86 foreach ($search_for as $search) 87 { 88 if(!$aux) 89 { 90 $aux=$search; 91 } 92 else 93 { 94 $aux=$aux."*".$search; 95 } 96 } 97 $search_for=$aux; 67 98 $contacts_result = array(); 68 99 $contacts_result['field'] = $field; … … 73 104 74 105 if ($this->ds) 75 {106 { 76 107 if (($field != 'null') && ($ID != 'null')) 77 {78 $filter="(& (|(phpgwAccountType=u)(phpgwAccountType=l)) (|(cn=*$search_for*)(mail= $search_for*)) (!(phpgwaccountvisible=-1)) )";79 $justthese = array("cn", "mail", "telephoneNumber", "mobile", "phpgwAccountVisible", "uid" );80 }108 { 109 $filter="(& (|(phpgwAccountType=u)(phpgwAccountType=l)) (|(cn=*$search_for*)(mail=*$search_for*)) (!(phpgwaccountvisible=-1)) )"; 110 $justthese = array("cn", "mail", "telephoneNumber", "mobile", "phpgwAccountVisible", "uid", "employeeNumber", "ou"); 111 } 81 112 else 82 {113 { 83 114 $filter="(& (phpgwAccountType=u)(cn=*$search_for*) (!(phpgwaccountvisible=-1)) )"; 84 $justthese = array("cn", "mail", "telephoneNumber", "mobile", "phpgwAccountVisible", "jpegPhoto", "uid"); 85 } 86 87 $sr=ldap_search($this->ds, $this->ldap_context, $filter, $justthese); 115 $justthese = array("cn", "mail", "telephoneNumber", "mobile", "phpgwAccountVisible", "jpegPhoto", "uid", "employeeNumber", "ou"); 116 } 117 $sr=ldap_search($this->ds, $this->ldap_context, $filter, $justthese, 0, 201); 88 118 $count_entries = ldap_count_entries($this->ds,$sr); 89 119 90 120 // Get user org dn. 91 121 $user_dn = $_SESSION['phpgw_info']['expressomail']['user']['account_dn']; … … 104 134 $this->ldapRootConnect(true); 105 135 106 $sr=ldap_search($this->ds, $user_sector_dn, $filter, $justthese );136 $sr=ldap_search($this->ds, $user_sector_dn, $filter, $justthese, 0, 201); 107 137 $count_entries = ldap_count_entries($this->ds,$sr); 108 138 … … 123 153 $tmp = array(); 124 154 $tmp_users_from_user_org = array(); 155 156 if (!$quickSearch_only_in_userSector) 157 { 158 $catalogsNum=count($external_srcs); 159 for ($i=0; $i<=count($external_srcs); $i++) 160 { 161 if ($external_srcs[$i]["quicksearch"]) 162 { 163 $this->ldapConnect(true,$i); 164 $filter="(|(cn=*$search_for*)(mail=*$search_for*))"; 165 $justthese = array("cn", "mail", "telephoneNumber", "mobile", "phpgwAccountVisible", "uid", "employeeNumber", "ou"); 166 $sr=ldap_search($this->ds, $this->ldap_context, $filter, $justthese, 0, 201); 167 $count_entries = ldap_count_entries($this->ds,$sr); 168 $search = ldap_get_entries($this->ds, $sr); 169 for ($i=0; $i<$search["count"]; $i++) 170 { 171 $info[] = $search[$i]; 172 } 173 $info["count"] = count($info)-1; 174 } 175 } 176 } 177 125 178 for ($i=0; $i<$info["count"]; $i++) 126 { 127 // Usuario sempre serao da minha org. 179 { 128 180 if ($quickSearch_only_in_userSector) 129 {130 $tmp[$info[$i]["mail"][0] . '%' . $info[$i]["telephonenumber"][0] . '%'. $info[$i]["mobile"][0] . '%' . $info[$i]["uid"][0] . '%' . $info[$i]["jpegphoto"]['count'] ] = $info[$i]["cn"][0];131 }181 { 182 $tmp[$info[$i]["mail"][0] . '%' . $info[$i]["telephonenumber"][0] . '%'. $info[$i]["mobile"][0] . '%' . $info[$i]["uid"][0] . '%' . $info[$i]["jpegphoto"]['count'] . '%' . $info[$i]["employeenumber"][0] . '%' . $info[$i]["ou"][0]] = utf8_decode($info[$i]["cn"][0]); 183 } 132 184 else 133 {185 { 134 186 if (preg_match("/$user_sector_dn/i", $info[$i]['dn'])) 135 { 136 $tmp_users_from_user_org[$info[$i]["mail"][0] . '%' . $info[$i]["telephonenumber"][0] . '%'. $info[$i]["mobile"][0] . '%' . $info[$i]["uid"][0] . '%' . $info[$i]["jpegphoto"]['count']] = $info[$i]["cn"][0]; 187 { 188 $tmp_users_from_user_org[$info[$i]["mail"][0] . '%' . $info[$i]["telephonenumber"][0] . '%'. $info[$i]["mobile"][0] . '%' . $info[$i]["uid"][0] . '%' . $info[$i]["jpegphoto"]['count'] . '%' . $info[$i]["employeenumber"][0] . '%' . $info[$i]["ou"][0]] = utf8_decode($info[$i]["cn"][0]); 189 } 190 else 191 { 192 $tmp[$info[$i]["mail"][0] . '%' . $info[$i]["telephonenumber"][0] . '%'. $info[$i]["mobile"][0] . '%' . $info[$i]["uid"][0] . '%' . $info[$i]["jpegphoto"]['count'] . '%' . $info[$i]["employeenumber"][0] . '%' . $info[$i]["ou"][0]] = utf8_decode($info[$i]["cn"][0]); 193 } 137 194 } 138 else 139 { 140 $tmp[$info[$i]["mail"][0] . '%' . $info[$i]["telephonenumber"][0] . '%'. $info[$i]["mobile"][0] . '%' . $info[$i]["uid"][0] . '%' . $info[$i]["jpegphoto"]['count']] = $info[$i]["cn"][0]; 141 } 142 } 143 } 195 } 144 196 natcasesort($tmp_users_from_user_org); 145 197 natcasesort($tmp); … … 156 208 $contacts_result[$i] = array(); 157 209 $contacts_result[$i]["cn"] = $cn; 158 list ($contacts_result[$i]["mail"], $contacts_result[$i]["phone"], $contacts_result[$i]["mobile"] ) = split ('%', $info);210 list ($contacts_result[$i]["mail"], $contacts_result[$i]["phone"], $contacts_result[$i]["mobile"], $contacts_result[$i]["uid"], $contacts_result[$i]["jpegphoto"], $contacts_result[$i]["employeenumber"], $contacts_result[$i]["ou"]) = split ('%', $info); 159 211 $i++; 160 212 } … … 272 324 } 273 325 326 function get_catalogs(){ 327 include("../contactcenter/setup/external_catalogs.inc.php"); 328 $catalogs = array(); 329 $catalogs[0] = "Catalogo geral"; 330 foreach ($external_srcs as $key => $valor ){ 331 $catalogs[$key] = $valor['name']; 332 } 333 return $catalogs; 334 } 274 335 function get_organizations($params){ 336 275 337 $organizations = array(); 276 $referral = $params['referral']; 277 $this->ldapConnect($referral); 278 if ($this->ds) { 279 $filter="ou=*"; 280 $justthese = array("ou"); 281 $sr = ldap_list($this->ds, $this->ldap_context, $filter, $justthese); 282 $info = ldap_get_entries($this->ds, $sr); 283 284 for ($i=0; $i<$info["count"]; $i++) 285 $organizations[$i] = $info[$i]["ou"][0]; 286 287 ldap_close($this->ds); 288 sort($organizations); 289 } 290 return $organizations; 291 } 292 338 $params['referral']?$referral = $params['referral']:$referral = false; 339 $cat = $params['catalog']; 340 341 $this->ldapConnect($referral,$cat); 342 343 if($this->branch != '') { 344 $filter=$this->branch."=*"; 345 $justthese = array("$this->branch"); 346 $sr = ldap_list($this->ds, $this->ldap_context, $filter, $justthese); 347 $info = ldap_get_entries($this->ds, $sr); 348 349 for ($i=0; $i<$info["count"]; $i++) 350 $organizations[$i] = $info[$i]["ou"][0]; 351 352 ldap_close($this->ds); 353 sort($organizations); 354 return $organizations; 355 }else{ 356 return null; 357 } 358 } 293 359 function get_organizations2($params){ 294 360 $organizations = array(); … … 315 381 function catalogsearch($params) 316 382 { 317 $this->ldapConnect(true); 318 $cn = $params['search_for'] ? "*".$params['search_for']."*" : "*"; 319 $user_context = "ou=".$params['organization'].",".$this->ldap_context; 320 $max_result = $params['max_result'] ? $params['max_result'] : '200'; 383 //$this->ldapConnect(true); 384 include("../contactcenter/inc/external_catalogs.inc.php"); 385 $cn = $params['search_for'] ? "*".utf8_encode($params['search_for'])."*" : "*"; 386 $max_result = $params['max_result'] ? $params['max_result'] : '200'; 387 $catalog = $params['catalog']; 321 388 $error = False; 389 390 $this->ldapConnect(false,$catalog); 391 392 $params['organization'] == 'todos'?$user_context = $this->ldap_context :$user_context = $this->branch."=".$params['organization'].",".$this->ldap_context; 322 393 323 394 if ($this->ds) { 324 $justthese = array("cn", "mail", "phpgwaccounttype", "phpgwAccountVisible"); 325 $filter="(&(|(phpgwAccountType=u)(phpgwAccountType=l))(cn=".$cn."))"; 326 $sr=ldap_search($this->ds, $user_context, $filter, $justthese); 327 395 if ($catalog == 0){ 396 //os atributos "employeeNumber" e "ou" foram adicionado ao vetor de busca; 397 $justthese = array("cn", "mail", "phpgwaccounttype", "phpgwAccountVisible", "employeeNumber", "ou"); 398 $filter="(&(|(phpgwAccountType=u)(phpgwAccountType=l))(cn=".$cn."))"; 399 //$user_context = "ou=".$params['organization'].",".$this->ldap_context; 400 }else { 401 //os atributos "employeeNumber" e "ou" foram adicionado ao vetor de busca; 402 $justthese = array("cn", "mail", "employeeNumber", "ou"); 403 $filter="(&(objectClass=".$this->object_class.")(cn=".$cn."))"; 404 //$user_context = $this->branch."=".$params['organization'].",".$external_srcs[$catalog]['dn']; 405 } 406 407 $sr=ldap_search($this->ds, $user_context, $filter, $justthese,0,200); 328 408 $count_entries = ldap_count_entries($this->ds,$sr); 329 409 if ($count_entries > $max_result){ … … 340 420 341 421 for ($i=0; $i<$info["count"]; $i++){ 342 if ($info[$i]["phpgwaccountvisible"][0] == '-1') 343 continue; 344 if((strtoupper($info[$i]["phpgwaccounttype"][0]) == 'U') && ($info[$i]["phpgwaccountvisible"][0] != '-1')) 345 $u_tmp[$info[$i]["mail"][0]] = $info[$i]["cn"][0]; 422 if((!$catalog==0)||(strtoupper($info[$i]["phpgwaccounttype"][0]) == 'U') && ($info[$i]["phpgwaccountvisible"][0] != '-1')) 423 //aqui eh feita a concatenacao do departamento ao cn; 424 $u_tmp[$info[$i]["mail"][0]] = utf8_decode($info[$i]["cn"][0]). '%' . $info[$i]["ou"][0]; 346 425 else 347 $g_tmp[$info[$i]["mail"][0]] = $info[$i]["cn"][0];426 $g_tmp[$info[$i]["mail"][0]] = utf8_decode($info[$i]["cn"][0]); 348 427 } 349 428 350 429 natcasesort($u_tmp); 351 430 natcasesort($g_tmp); 352 431 353 432 $i = 0; 354 $users = array(); 355 356 foreach ($u_tmp as $mail => $cn){ 357 $users[$i++] = array("name" => $cn, "email" => $mail); 358 } 433 $users = array(); 434 435 436 foreach ($u_tmp as $mail => $cn){ 437 438 $tmp = explode("%", $cn); //explode o cn pelo caracter "%" e joga em $tmp; 439 $name = $tmp[0]; //pega o primeiro item (cn) do vetor resultante do explode acima; 440 $department = $tmp[1]; //pega o segundo item (ou) do vetor resultanto do explode acima; 441 $users[$i++] = array("name" => $name, "email" => $mail, "department" => $department); 442 443 } 444 359 445 unset($u_tmp); 360 446 … … 368 454 369 455 return array('users' => $users, 'groups' => $groups, 'error' => $error); 370 } 456 }else 371 457 return null; 372 458 } … … 393 479 } 394 480 395 //Busca usu ários de um contexto e járetorna as options do select;481 //Busca usuï¿œrios de um contexto e jï¿œ retorna as options do select; 396 482 function get_available_users($params) 397 483 { 398 484 $this->ldapRootConnect(); 399 //Monta lista de Grupos e Usu ários485 //Monta lista de Grupos e Usuï¿œrios 400 486 $users = Array(); 401 487 $groups = Array(); … … 449 535 } 450 536 451 //Busca usu ários de um contexto e járetorna as options do select;537 //Busca usuï¿œrios de um contexto e jï¿œ retorna as options do select; 452 538 function get_available_users2($params) 453 539 { … … 499 585 500 586 $info = ldap_get_entries($this->ds, $sr); 501 return $info[0]["cn"][0];587 return utf8_decode($info[0]["cn"][0]); 502 588 } 503 589 return false; … … 524 610 $info = ldap_get_entries($this->ds, $sr); 525 611 $info['myname'] = $_SESSION['phpgw_info']['expressomail']['user']['fullname']; 612 for ($i = 0;$i < $info["count"]; $i++) 613 $info[$i]['cn'][0] = utf8_decode($info[$i]['cn'][0]); 526 614 return $info; 527 615 } … … 546 634 547 635 if($entry) { 548 $obj = array("cn" => ldap_get_values($ds, $entry, "cn"),636 $obj = array("cn" => utf8_decode(ldap_get_values($ds, $entry, "cn")), 549 637 "email" => $params['email'], 550 638 "uid" => ldap_get_values($ds, $entry, "uid"), -
trunk/expressoMail1_2/index.php
r320 r325 40 40 41 41 //Enable/Disable VoIP Service 42 $voip_enabled = false;42 $voip_enabled = true; 43 43 44 44 // Get Data from ldap_manager and emailadmin. … … 62 62 'mainscreen_showmail' => $GLOBALS['phpgw_info']['user']['preferences']['expressoMail']['mainscreen_showmail'] ? $GLOBALS['phpgw_info']['user']['preferences']['expressoMail']['mainscreen_showmail'] : "0", 63 63 'signature' => $GLOBALS['phpgw_info']['user']['preferences']['expressoMail']['signature'], 64 'hide_folders' => $GLOBALS['phpgw_info']['user']['preferences']['expressoMail']['hide_folders'] ? $GLOBALS['phpgw_info']['user']['preferences']['expressoMail']['hide_folders'] : "0", 64 'use_signature' => $GLOBALS['phpgw_info']['user']['preferences']['expressoMail']['use_signature'], 65 'hide_folders' => $GLOBALS['phpgw_info']['user']['preferences']['expressoMail']['hide_folders'] ? $GLOBALS['phpgw_info']['user']['preferences']['expressoMail']['hide_folders'] : "0", 65 66 'save_in_folder' => $GLOBALS['phpgw_info']['user']['preferences']['expressoMail']['save_in_folder'] ? $GLOBALS['phpgw_info']['user']['preferences']['expressoMail']['save_in_folder'] : "-1", 66 67 'line_height' => $GLOBALS['phpgw_info']['user']['preferences']['expressoMail']['line_height'] ? $GLOBALS['phpgw_info']['user']['preferences']['expressoMail']['line_height'] : "30", … … 114 115 // Set Imap Folder names options 115 116 116 $_SESSION['phpgw_info']['expressomail']['email_server']['imapDefaultTrashFolder'] = $_SESSION['phpgw_info']['expressomail']['email_server']['imapDefaultTrashFolder'] ? $_SESSION['phpgw_info']['expressomail']['email_server']['imapDefaultTrashFolder'] : lang("Trash");117 $_SESSION['phpgw_info']['expressomail']['email_server']['imapDefaultDraftsFolder'] = $_SESSION['phpgw_info']['expressomail']['email_server']['imapDefaultDraftsFolder'] ? $_SESSION['phpgw_info']['expressomail']['email_server']['imapDefaultDraftsFolder'] : lang("Drafts");118 $_SESSION['phpgw_info']['expressomail']['email_server']['imapDefaultSpamFolder'] = $_SESSION['phpgw_info']['expressomail']['email_server']['imapDefaultSpamFolder'] ? $_SESSION['phpgw_info']['expressomail']['email_server']['imapDefaultSpamFolder'] : lang("Spam");119 $_SESSION['phpgw_info']['expressomail']['email_server']['imapDefaultSentFolder'] = $_SESSION['phpgw_info']['expressomail']['email_server']['imapDefaultSentFolder'] ? $_SESSION['phpgw_info']['expressomail']['email_server']['imapDefaultSentFolder'] : lang("Sent");117 $_SESSION['phpgw_info']['expressomail']['email_server']['imapDefaultTrashFolder'] = $_SESSION['phpgw_info']['expressomail']['email_server']['imapDefaultTrashFolder'] ? $_SESSION['phpgw_info']['expressomail']['email_server']['imapDefaultTrashFolder'] : "Trash"; 118 $_SESSION['phpgw_info']['expressomail']['email_server']['imapDefaultDraftsFolder'] = $_SESSION['phpgw_info']['expressomail']['email_server']['imapDefaultDraftsFolder'] ? $_SESSION['phpgw_info']['expressomail']['email_server']['imapDefaultDraftsFolder'] : "Drafts"; 119 $_SESSION['phpgw_info']['expressomail']['email_server']['imapDefaultSpamFolder'] = $_SESSION['phpgw_info']['expressomail']['email_server']['imapDefaultSpamFolder'] ? $_SESSION['phpgw_info']['expressomail']['email_server']['imapDefaultSpamFolder'] : "Spam"; 120 $_SESSION['phpgw_info']['expressomail']['email_server']['imapDefaultSentFolder'] = $_SESSION['phpgw_info']['expressomail']['email_server']['imapDefaultSentFolder'] ? $_SESSION['phpgw_info']['expressomail']['email_server']['imapDefaultSentFolder'] : "Sent"; 120 121 121 122 echo '<script> var special_folders = new Array(4); -
trunk/expressoMail1_2/js/QuickCatalogSearch.js
r271 r325 35 35 var cmb = document.createElement("SELECT"); 36 36 cmb.id = "select_QuickCatalogSearch"; 37 cmb.style.width = " 585px";37 cmb.style.width = "685px"; // na comunidade valor eh 585px 38 38 cmb.size = "12"; 39 39 cmb.onkeypress = function (e) … … 134 134 Op.text = data[i].cn + ' (' + data[i].mail + ')'; 135 135 if (data[i].phone != '') 136 Op.text += ' (tel: ' + data[i].phone + ')'; 136 Op.text += ' - ' + data[i].phone; 137 if (data[i].ou != '') 138 Op.text += ' - ' + data[i].ou; // adicionado "data[i].ou" para exibir setor (F9) 137 139 Op.value = '"' + data[i].cn + '" ' + '<' + data[i].mail + '>'; 138 140 cmb.options.add(Op); 141 139 142 } 140 143 cmb.options[0].selected = true; … … 150 153 151 154 if(! this.arrayWin[div.id]) { 152 div.style.width = " 600px";155 div.style.width = "700px"; //na comunidade valor eh 600px 153 156 div.style.height = "230px"; 154 157 var title = get_lang('The results were found in the Global Catalog')+':'; … … 223 226 el.style.visibility = "hidden"; 224 227 el.style.position = "absolute"; 225 el.style.width = " 495px";228 el.style.width = "700px"; // na comunidade valor eh 495px 226 229 el.style.height = is_ie ? "360px" : "375px"; 227 230 el.style.left = "0px"; … … 234 237 '<table border="0" cellpading="0" cellspacing="0">'+ 235 238 '<tr><td>'+get_lang("Select an organization and click on button <b>Search</b>")+' :</td></tr>'+ 236 '<tr><td><select id="select_organization" name="select_organization"></select> '+ 237 '<input type="text" id="search_for" name="search_for" value="" size="17" maxlength="20"/> <input type="button" onclick="QuickCatalogSearch.searchCatalogList(true)" class="button" value="'+get_lang('Search')+'"> <input type="button" onclick="QuickCatalogSearch.searchCatalogList(false)" class="button" value="'+get_lang('List All')+'"></td></tr>'+ 239 '<tr><td><select style="width:150px" id="select_catalog" name="select_catalog" onchange="javascript:QuickCatalogSearch.update_organizations();"></select> '+ 240 '<select id="select_organization" style="width:100px" name="select_organization"></select> '+ 241 '<input type="text" id="search_for" name="search_for" value="" size="10" maxlength="15"/> <input type="button" onclick="QuickCatalogSearch.searchCatalogList(true)" class="button" value="'+get_lang('Search')+'"> <input style="display:none" type="button" onclick="QuickCatalogSearch.searchCatalogList(false)" class="button" value="'+get_lang('List All')+'"></td></tr>'+ 238 242 '<tr><td><input onclick="javascript:QuickCatalogSearch.changeOptions(this.value)" id="type" type="radio" name="type" value="l"/>'+get_lang('Public Lists')+' <input type="radio" name="type" value="u" onclick="javascript:QuickCatalogSearch.changeOptions(this.value)" checked/>'+get_lang('Users')+' '+ 239 243 '<span style="visibility:hidden;background:#cc4444" id=msg_search> <font face="Verdana" size="1" color="WHITE">'+get_lang('Search in Catalog')+'...</font> </span></td></tr>'+ 240 244 '<tr><td>'+ 241 '<span id="list_span"><select multiple style="display:none;width:4 00px" size="14" id="list_values"></select></span>'+242 '<span id="user_span"><select multiple style="width: 400px" size="14" id="user_values"></select></span>'+245 '<span id="list_span"><select multiple style="display:none;width:450px" size="14" id="list_values"></select></span>'+ 246 '<span id="user_span"><select multiple style="width:580px" size="14" id="user_values"></select></span>'+ 243 247 '</td></tr>'+ 244 248 '<tr><td nowrap><center>'+get_lang('Click here to add into the fields')+': <input type="button" class="button" value="'+get_lang('TO')+'" onClick="javascript:QuickCatalogSearch.addContacts(\'to\')"> '+ … … 291 295 win.open(); 292 296 293 var handler_ organizations = function(data){294 var user_ organization = Element('user_organization').value;297 var handler_catalogs = function(data){ 298 var user_catalog = "Catalogo Geral"; 295 299 296 300 for(i = 0; i < data.length; i++) { 297 Element('select_organization').options[i] = new Option(data[i],data[i]); 298 if(user_organization.toUpperCase() == data[i].toUpperCase()) 299 Element('select_organization').options[i].selected = true; 300 } 301 } 302 cExecute ("$this.ldap_functions.get_organizations&referral=true", handler_organizations); 303 301 302 Element('select_catalog').options[i] = new Option(data[i],i); 303 if(user_catalog.toUpperCase() == data[i].toUpperCase()) 304 Element('select_catalog').options[i].selected = true; 305 } 306 } 307 cExecute ("$this.ldap_functions.get_catalogs", handler_catalogs); 308 309 this.update_organizations(); 310 304 311 var handler_cc_contacts= function(data){ 305 312 if(data && data.length > 0){ … … 367 374 } 368 375 376 emQuickCatalogSearch.prototype.update_organizations = function(){ 377 378 379 while(Element('select_organization').options.length > 0) { 380 Element('select_organization').remove(0); 381 } 382 383 384 var handler_org = function(data){ 385 Element('select_organization').options[0] = new Option('todos','todos'); 386 if (data != null){ 387 388 for(x = 0; x < data.length; x++) { 389 Element('select_organization').options[x+1] = new Option(data[x],data[x]); 390 } 391 } 392 393 } 394 395 cExecute ("$this.ldap_functions.get_organizations&referral=false&catalog="+Element('select_catalog').value, handler_org); 396 397 } 398 369 399 emQuickCatalogSearch.prototype.changeOptions = function(type){ 370 400 … … 428 458 emQuickCatalogSearch.prototype.searchCatalogList = function (itemSearch){ 429 459 430 if(itemSearch && Element('search_for').value.length == 0){431 alert(get_lang(' No data to search'));460 if(itemSearch && Element('search_for').value.length < 4){ 461 alert(get_lang('your search argument must be longer than 4 characters.')); 432 462 Element('search_for').focus(); 433 463 return false; … … 435 465 var organization = Element('select_organization').value; 436 466 var search = itemSearch ? Element('search_for').value : ''; 437 var max_result = 2000; 467 var catalog = Element('select_catalog').value; 468 var max_result = 300; 438 469 439 470 var handler_searchResults = function(data){ … … 477 508 478 509 for(i = 0; data.users && i < data.users.length; i++) { 479 if(is_ie) 510 if(is_ie){ 480 511 arr[i] = '<option value="'+'"'+data.users[i].name+'" <'+data.users[i].email+'>">'+data.users[i].name+' ('+data.users[i].email+')'+'</option>'; 481 else 482 user.options[i] = new Option(data.users[i].name+' ('+data.users[i].email+')','"'+data.users[i].name+'" <'+data.users[i].email+'>'); 512 } 513 else{ 514 515 /*******************************************************************************************/ 516 /* O resultado pratico do bloco de codigo a seguir eh a exibicao dos valores em tela, 517 ja que vai verificar se o departamento e o email estao vazios ou nulos e a partir dai o 518 resultado apresentado em tela sera exibido de maneira mais apresentavel; 519 */ 520 //verifica se departamento eh null ou nao; 521 var departamento_nulo = 'false'; 522 if((data.users[i].department == null) || (data.users[i].department == '')) { 523 data.users[i].department = ''; 524 departamento_nulo = 'true'; 525 } 526 else { 527 data.users[i].department = ' - ' + data.users[i].department; 528 } 529 530 //verifica se email eh null ou nao; 531 if((data.users[i].email == null) || (data.users[i].email == '')) { 532 if(departamento_nulo = 'true') { 533 data.users[i].email = ''; 534 } 535 else { 536 data.users[i].email = ' - '; 537 } 538 } 539 else { 540 data.users[i].email = ' (' + data.users[i].email + ') '; 541 } 542 543 user.options[i] = new Option(data.users[i].name+data.users[i].email+data.users[i].department,'"'+data.users[i].name+'" <'+data.users[i].email+'>'); // incluido data.users[i].department para exibir setor na opcao "Pesquisar" do email; 544 } 483 545 } 484 546 … … 488 550 489 551 Element('msg_search').style.visibility = 'visible'; 490 cExecute ("$this.ldap_functions.catalogsearch&max_result="+max_result+"&organization="+organization+"&search_for="+search , handler_searchResults);552 cExecute ("$this.ldap_functions.catalogsearch&max_result="+max_result+"&organization="+organization+"&search_for="+search+"&catalog="+catalog, handler_searchResults); 491 553 } 492 554 -
trunk/expressoMail1_2/js/common_functions.js
r320 r325 35 35 var bar = Element("toolbar"); 36 36 var offset = 0; 37 if(bar.style.visibility != 'hidden') 38 offset = (bar.offsetHeight ? bar.offsetHeight : bar.clientHeight); 37 if(bar.style.visibility != 'hidden') 38 offset = (bar.offsetHeight ? bar.offsetHeight : bar.clientHeight); 39 39 40 40 var screenHeight = document.body.clientHeight ? document.body.clientHeight : document.body.offsetHeight; … … 57 57 // END: FUNCTION RESIZE WINDOW 58 58 59 // onUnload edit message60 61 59 var _beforeunload_ = window.onbeforeunload; 62 60 … … 79 77 function get_lang(_key,_arg1,_arg2,_arg3,_arg4) { 80 78 81 if(!array_lang[0]){ 79 if(!array_lang[0]){ 82 80 return _key+"*"; 83 81 } 84 _value = ""; 82 _value = ""; 85 83 for(i = 0; i < array_lang[0].length;i++){ 86 84 if(array_lang[0][i] == _key.toLowerCase()) { 87 _value = array_lang[1][i]; 85 _value = array_lang[1][i]; 88 86 break; 89 87 } 90 } 91 88 } 89 92 90 if(!_value) 93 91 return _key+"*"; 94 92 95 93 if(_arg1 || _arg2 ||_arg3 || _arg4) { 96 94 for(j = 1; j <= 4; j++){ 97 95 if(eval("_arg"+j)) { 98 var regExp = new RegExp("%"+j+""); 96 var regExp = new RegExp("%"+j+""); 99 97 _value = _value.replace(regExp,eval("_arg"+j)); 100 98 } 101 99 } 102 100 } 103 101 104 102 return _value; 105 103 } … … 112 110 113 111 // Change the class of message. 114 // In refresh, the flags UnRead and UnSeen don't exist anymore. 112 // In refresh, the flags UnRead and UnSeen don't exist anymore. 115 113 function set_msg_as_read(msg_number, selected){ 116 114 tr_message = Element(msg_number); … … 170 168 //Get element tBody. 171 169 main = document.getElementById("tbody_box"); 172 170 173 171 // Get all TR (messages) in tBody. 174 172 main_list = main.childNodes; 175 173 176 174 return main_list.length; 177 175 } … … 180 178 div_attachment = document.getElementById("id_div_attachment"); 181 179 var params = ''; 182 180 183 181 if (div_attachment == null){ 184 182 var div_attachment = document.createElement("DIV"); … … 195 193 196 194 function download_all_attachments(msg_folder, msg_number){ 197 var handler_source = function(data){ 195 var handler_source = function(data){ 198 196 download_attachments(null, null, data, null,null,'anexos.zip'); 199 197 } … … 205 203 if (! divFiles) 206 204 return false; 207 205 208 206 if (divFiles.lastChild) 209 207 var countDivFiles = parseInt(divFiles.lastChild.id.split('_')[2]) + 1; … … 211 209 if (! countDivFiles) 212 210 var countDivFiles = 1; 213 211 214 212 divFile = document.createElement('DIV'); 215 213 216 214 var inputFile = document.createElement("INPUT"); 217 215 218 216 var tmp_id_border = document.createAttribute('id_border'); 219 217 tmp_id_border.value = id_border; 220 218 221 219 inputFile.setAttributeNode(tmp_id_border); 222 220 inputFile.id = "inputFile_"+id_border+"_"+countDivFiles; … … 226 224 inputFile.maxLength = 255; 227 225 inputFile.name='file_'+countDivFiles; 228 226 229 227 divFile.appendChild(inputFile); 230 228 231 229 var linkFile = document.createElement("A"); 232 230 linkFile.id = "linkFile_"+id_border+"_"+countDivFiles; 233 231 linkFile.href='javascript:void(0)'; 234 232 linkFile.onclick=function () {removeFile(this.id.replace("link","div")); return false;}; 235 linkFile.innerHTML=get_lang("Remove"); 233 linkFile.innerHTML=get_lang("Remove"); 236 234 //divFile.innerHTML += " "; 237 235 divFile.appendChild(linkFile); 238 divFile.id = "divFile_"+id_border+"_"+countDivFiles; 236 divFile.id = "divFile_"+id_border+"_"+countDivFiles; 239 237 divFiles.appendChild(divFile); 240 238 } … … 289 287 // Funcao usada para escrever mensagem 290 288 // notimeout = True : mensagem nao apaga 291 function write_msg(msg, notimeout){ 292 289 function write_msg(msg, notimeout){ 290 293 291 if (setTimeout_write_msg) 294 292 clearTimeout(setTimeout_write_msg); 295 293 296 294 var msg_div = Element('em_div_write_msg'); 297 295 var old_divStatusBar = Element("divStatusBar"); … … 304 302 msg_div.style.display = 'none'; 305 303 old_divStatusBar.parentNode.insertBefore(msg_div,old_divStatusBar); 306 } 304 } 307 305 msg_div.innerHTML = '<table bgcolor="#f7f8fa" width=100% cellspacing="0" cellpadding="0" border="0"><tbody><tr><th width="40%"></th><th noWrap class="action_info_th">'+msg+'</th><th width="40%"></th></tr></tbody></table>'; 308 306 old_divStatusBar.style.display = 'none'; 309 msg_div.style.display = ''; 307 msg_div.style.display = ''; 310 308 // Nao ponha var na frente!! jakjr 311 309 handle_write_msg = function(){ … … 314 312 clean_msg(); 315 313 else 316 write_msg(old_msg, true); 314 write_msg(old_msg, true); 317 315 } 318 316 catch(e){} … … 330 328 if(msg_div) 331 329 msg_div.style.display = 'none'; 332 old_divStatusBar.style.display = ''; 330 old_divStatusBar.style.display = ''; 333 331 } 334 332 … … 373 371 var quickSearchKeyBegin; 374 372 var quickSearchKeyEnd; 375 373 376 374 var handler_emQuickSearch = function(data) 377 375 { … … 380 378 window_DropDownContacts.style.visibility = 'hidden'; 381 379 } 382 380 383 381 if ((!data.status) && (data.error == "many results")){ 384 382 alert(get_lang('More than %1 results. Please, try to refine your search.',200)); 385 383 return false; 386 384 } 387 385 388 386 if (data.length > 0){ 389 387 if ((field != 'null') && (ID != 'null')) … … 402 400 return true; 403 401 } 404 402 405 403 if ((field != 'null') && (ID != 'null')) 406 404 { 407 Element(field +'_'+ ID).focus(); //necess ário para o IE.405 Element(field +'_'+ ID).focus(); //necessï¿œrio para o IE. 408 406 var i = getPosition(Element(field +'_'+ ID)); //inputBox.selectionStart; 409 407 var j = --i; … … 422 420 else 423 421 var search_for = emailList; 424 422 425 423 if (search_for.length < 4){ 426 424 alert(get_lang('Your search argument must be longer than 4 characters.')); 427 425 return false; 428 426 } 429 427 430 428 cExecute ("$this.ldap_functions.quicksearch&search_for="+search_for+"&field="+field+"&ID="+ID, handler_emQuickSearch); 431 429 } … … 475 473 476 474 function url_encode(str){ 477 var hex_chars = "0123456789ABCDEF"; 478 var noEncode = /^([a-zA-Z0-9\_\-\.])$/; 479 var n, strCode, hex1, hex2, strEncode = ""; 480 481 for(n = 0; n < str.length; n++) { 482 if (noEncode.test(str.charAt(n))) { 483 strEncode += str.charAt(n); 484 } else { 485 strCode = str.charCodeAt(n); 486 hex1 = hex_chars.charAt(Math.floor(strCode / 16)); 487 hex2 = hex_chars.charAt(strCode % 16); 488 strEncode += "%" + (hex1 + hex2); 489 } 490 } 491 return strEncode; 492 } 493 494 function url_decode(str) { 495 496 var n, strCode, strDecode = ""; 497 for (n = 0; n < str.length; n++) { 498 if (str.charAt(n) == "%") { 499 strCode = str.charAt(n + 1) + str.charAt(n + 2); 500 strDecode += String.fromCharCode(parseInt(strCode, 16)); 501 n += 2; 502 } else { 503 strDecode += str.charAt(n); 504 } 505 } 506 return strDecode; 507 } 475 var hex_chars = "0123456789ABCDEF"; 476 var noEncode = /^([a-zA-Z0-9\_\-\.])$/; 477 var n, strCode, hex1, hex2, strEncode = ""; 478 479 for(n = 0; n < str.length; n++) { 480 if (noEncode.test(str.charAt(n))) { 481 strEncode += str.charAt(n); 482 } else { 483 strCode = str.charCodeAt(n); 484 hex1 = hex_chars.charAt(Math.floor(strCode / 16)); 485 hex2 = hex_chars.charAt(strCode % 16); 486 strEncode += "%" + (hex1 + hex2); 487 } 488 } 489 return strEncode; 490 } 491 492 function url_decode(str) { 493 494 var n, strCode, strDecode = ""; 495 for (n = 0; n < str.length; n++) { 496 if (str.charAt(n) == "%") { 497 strCode = str.charAt(n + 1) + str.charAt(n + 2); 498 strDecode += String.fromCharCode(parseInt(strCode, 16)); 499 n += 2; 500 } else { 501 strDecode += str.charAt(n); 502 } 503 } 504 return strDecode; 505 } 508 506 509 507 … … 530 528 var Lp=obj.createTextRange(); 531 529 } 532 530 533 531 Lp.setEndPoint("EndToStart",M); 534 532 var rb=Lp.text.length; 535 533 536 534 if(rb > obj.value.length) 537 535 { … … 543 541 544 542 function trim(inputString) { 545 if (typeof inputString != "string") 543 if (typeof inputString != "string") 546 544 return inputString; 547 545 548 546 var retValue = inputString; 549 547 var ch = retValue.substring(0, 1); 550 while (ch == " ") { 548 while (ch == " ") { 551 549 retValue = retValue.substring(1, retValue.length); 552 550 ch = retValue.substring(0, 1); 553 551 } 554 552 ch = retValue.substring(retValue.length-1, retValue.length); 555 while (ch == " ") { 553 while (ch == " ") { 556 554 retValue = retValue.substring(0, retValue.length-1); 557 555 ch = retValue.substring(retValue.length-1, retValue.length); 558 556 } 559 while (retValue.indexOf(" ") != -1) { 560 retValue = retValue.substring(0, retValue.indexOf(" ")) + retValue.substring(retValue.indexOf(" ")+1, retValue.length); 557 while (retValue.indexOf(" ") != -1) { 558 retValue = retValue.substring(0, retValue.indexOf(" ")) + retValue.substring(retValue.indexOf(" ")+1, retValue.length); 561 559 } 562 return retValue; 560 return retValue; 563 561 } 564 562 565 563 function increment_folder_unseen(){ 566 564 var folder_id = get_current_folder(); 567 565 568 566 var folder_unseen = Element('dftree_'+folder_id+'_unseen'); 569 567 if (folder_unseen) … … 581 579 function decrement_folder_unseen(){ 582 580 var folder_id = get_current_folder(); 583 581 584 582 var folder_unseen = Element('dftree_'+folder_id+'_unseen'); 585 583 if(!folder_unseen) … … 605 603 var strTemp = ""; 606 604 var iTemp = 0; 607 605 608 606 if(v_length < 1) 609 607 return ""; 610 608 611 609 var v_length = value ? value.length : 0; 612 610 613 611 while(iTemp < v_length){ 614 612 if(value && value.charAt(iTemp) != w_space){ … … 617 615 } 618 616 iTemp++; 619 } 617 } 620 618 return strTemp; 621 619 } … … 673 671 var main_list = main.childNodes; 674 672 var len_main_list = main_list.length; 675 673 676 674 if (select) 677 675 { -
trunk/expressoMail1_2/js/draw_api.js
r320 r325 34 34 // } 35 35 Element('new_m').innerHTML = data[i].folder_unseen ? '<font color="RED">'+data[i].folder_unseen+'</font>' : 0; 36 draw_paging(Element('tot_m').innerHTML); 36 draw_paging(Element('tot_m').innerHTML); 37 37 } 38 38 } … … 114 114 draw_tree_folders(data); 115 115 if(data) { 116 build_quota(data);116 update_quota('INBOX'); 117 117 var f_unseen = Element('dftree_'+get_current_folder()+'_unseen'); 118 118 if(f_unseen && f_unseen.innerHTML) … … 148 148 Element("tot_m").innerHTML = data.num_msgs; 149 149 update_menu(); 150 update_quota(folder); 150 151 return true; 151 152 } … … 156 157 157 158 function open_folder(folder, folder_name){ 158 if (get_current_folder()!= folder) 159 { 159 if (get_current_folder() != folder) { 160 160 current_folder = folder; 161 var handler_draw_box = function(data) 162 { 163 if(!verify_session(data)) 164 return false; 165 numBox++; 166 create_border(folder_name,numBox.toString()); 167 draw_box(data, current_folder, false); 168 alternate_border(numBox); 169 return true; 170 } 171 cExecute ("$this.imap_functions.get_range_msgs2&folder="+current_folder+"&msg_range_begin=1&msg_range_end="+preferences.max_email_per_page+"&sort_box_type="+sort_box_type+ "&search_box_type="+ search_box_type +"&sort_box_reverse="+sort_box_reverse+"", handler_draw_box); 161 var handler_draw_box = function(data){ 162 if (!verify_session(data)) 163 return; 164 Element("border_id_0").innerHTML = " " + lang_folder(folder_name) + ' <font face="Verdana" size="1" color="#505050">[<span id="new_m"> </span> / <span id="tot_m"></span>]</font>'; 165 draw_box(data, current_folder); 166 draw_paging(data.num_msgs); 167 Element("tot_m").innerHTML = data.num_msgs; 168 update_menu(); 169 update_quota(folder); 170 alternate_border(0); 171 } 172 cExecute("$this.imap_functions.get_range_msgs2&folder=" + current_folder + "&msg_range_begin=1&msg_range_end=" + preferences.max_email_per_page + "&sort_box_type=" + sort_box_type + "&search_box_type=" + search_box_type + "&sort_box_reverse=" + sort_box_reverse + "", handler_draw_box); 172 173 } 173 174 else 174 alternate_border(numBox); 175 return true; 175 alternate_border(0); 176 176 } 177 177 … … 1845 1845 } 1846 1846 else{ 1847 div.innerHTML = null; 1847 1848 value = data['quota_percent']; 1848 1849 q_used = data['quota_used']; … … 1913 1914 } 1914 1915 1915 function update_quota( ){1916 cExecute ("$this.imap_functions.get_quota ",build_quota);1916 function update_quota(folder_id){ 1917 cExecute ("$this.imap_functions.get_quota&folder_id="+folder_id,build_quota); 1917 1918 } 1918 1919 -
trunk/expressoMail1_2/js/filter.js
r271 r325 220 220 } 221 221 222 /* 223 * Corrige bug 65, solução: desabilitar radio3 e field6 e desmarcar radio3 (ação de rejeição) 224 * quando a caixa de seleção para manter o e-mail na caixa de entrada do usuário for selecionada 225 */ 226 cfilter.prototype.disable_radio3 = function(){ 227 228 radio3 = Element('radio3'); 229 field6 = Element('field6'); 230 cb2 = Element('checkBox2'); 231 232 if (cb2.checked){ 233 radio3.disabled = true; 234 field6.disabled = true; 235 236 if (radio3.checked){ 237 radio3.checked = false; 238 } 239 } 240 else{ 241 radio3.disabled = false; 242 field6.disabled = false; 243 } 244 245 } 246 222 247 cfilter.prototype.forms_ = function(){ 223 248 var form = ""; 224 249 form = "<div id='div_rule' style='display:none'><table id='table_rule' border='0' cellpading='0' cellspacing='0' width='100%'>"+ 225 250 "<tr><td colspan='2'><input type='checkBox' id='checkBox1' name='checkb'>"+get_lang('Also check message against next rule') + "</td></tr>"+ 226 "<tr><td colspan='2'><input type='checkBox' id='checkBox2' name='checkb'>"+get_lang('Keep a copy of the message at your Inbox')+ "</td><tr>"+251 "<tr><td colspan='2'><input type='checkBox' id='checkBox2' onclick='filter.disable_radio3();' name='checkb'>"+get_lang('Keep a copy of the message at your Inbox')+ "</td><tr>"+ 227 252 "<tr><td colspan='2'><hr size='1' width='100%'></td></tr><tr>"+ 228 253 "<td rowspan='4' width='20%'>"+get_lang('Coincident')+"<br><select id='select_rules' name='select_rules'>"+ -
trunk/expressoMail1_2/js/main.js
r320 r325 316 316 return false; 317 317 } 318 //Este bloco verifica as permissoes ACL sobre pastas compartilhadas 319 if(data.status == false){ 320 alert(get_lang("You don't have permission for this operation in this shared folder!")); 321 return false; 322 } 318 323 319 324 … … 506 511 var body = Element("body_" + new_border_ID); 507 512 body.contentWindow.document.open(); 508 body.contentWindow.document.write("<html><body bgcolor='#FFFFFF'></body></html>"); 513 // Insert the signature automaticaly at message body if use_signature preference is set 514 if (preferences.use_signature){ 515 body.contentWindow.document.write("<html><body bgcolor='#FFFFFF'>" + "<br>" + preferences.signature.replace(/\n/g, "<br>") + "</body></html>"); 516 } 517 else{ 518 body.contentWindow.document.write("<html><body bgcolor='#FFFFFF'></body></html>"); 519 } 509 520 body.contentWindow.document.close(); 510 521 body.contentWindow.document.designMode = "on"; … … 529 540 var body = Element("body_" + new_border_ID); 530 541 body.contentWindow.document.open(); 531 body.contentWindow.document.write("<html><body bgcolor='#FFFFFF'>"+block_quoted_body+"</body></html>"); 542 // Insert the signature automaticaly at message body if use_signature preference is set 543 if (preferences.use_signature) { 544 body.contentWindow.document.write("<html><body bgcolor='#FFFFFF'>" + "<br>" + preferences.signature.replace(/\n/g, "<br>") + "</body></html>" + block_quoted_body + "</body></html>"); 545 } 546 else { 547 body.contentWindow.document.write("<html><body bgcolor='#FFFFFF'>" + block_quoted_body + "</body></html>"); 548 } 532 549 body.contentWindow.document.close(); 533 550 body.contentWindow.document.designMode = "on"; … … 568 585 var body = Element("body_" + new_border_ID); 569 586 body.contentWindow.document.open(); 570 body.contentWindow.document.write("<html><body bgcolor='#FFFFFF'></body></html>"); 587 // Insert the signature automaticaly at message body if use_signature preference is set 588 if (preferences.use_signature) { 589 body.contentWindow.document.write("<html><body bgcolor='#FFFFFF'>" + "<br>" + preferences.signature.replace(/\n/g, "<br>") + "</body></html>"); 590 } 591 else { 592 body.contentWindow.document.write("<html><body bgcolor='#FFFFFF'></body></html>"); 593 } 571 594 body.contentWindow.document.close(); 572 595 body.contentWindow.document.designMode = "on"; … … 607 630 var body = document.getElementById("body_" + new_border_ID); 608 631 body.contentWindow.document.open(); 609 body.contentWindow.document.write("<html><body bgcolor='#FFFFFF'>"+block_quoted_body+"</body></html>"); 632 // Insert the signature automaticaly at message body if use_signature preference is set 633 if (preferences.use_signature) { 634 body.contentWindow.document.write("<html><body bgcolor='#FFFFFF'>" + "<br>" + preferences.signature.replace(/\n/g, "<br>") + "</body></html>" + block_quoted_body + "</body></html>"); 635 } 636 else { 637 body.contentWindow.document.write("<html><body bgcolor='#FFFFFF'>" + block_quoted_body + "</body></html>"); 638 } 610 639 body.contentWindow.document.close(); 611 640 body.contentWindow.document.designMode = "on"; … … 649 678 var body = Element("body_" + new_border_ID); 650 679 body.contentWindow.document.open(); 651 body.contentWindow.document.write("<html><body bgcolor='#FFFFFF'>"+make_forward_body(data.body, data.to, data.date, data.subject, data.to_all, data.cc)+"</body></html>"); 680 // Insert the signature automaticaly at message body if use_signature preference is set 681 if (preferences.use_signature) { 682 body.contentWindow.document.write("<html><body bgcolor='#FFFFFF'>" + "<br>" + preferences.signature.replace(/\n/g, "<br>") + "</body></html>" + make_forward_body(data.body, data.to, data.date, data.subject, data.to_all, data.cc) + "</body></html>"); 683 } 684 else { 685 body.contentWindow.document.write("<html><body bgcolor='#FFFFFF'>" + make_forward_body(data.body, data.to, data.date, data.subject, data.to_all, data.cc) + "</body></html>"); 686 } 652 687 body.contentWindow.document.close(); 653 688 body.contentWindow.document.designMode = "on"; … … 676 711 var body = document.getElementById("body_" + new_border_ID); 677 712 body.contentWindow.document.open(); 678 body.contentWindow.document.write("<html><body bgcolor='#FFFFFF'></body></html>"); 713 // Insert the signature automaticaly at message body if use_signature preference is set 714 if (preferences.use_signature) { 715 body.contentWindow.document.write("<html><body bgcolor='#FFFFFF'>" + "<br>" + preferences.signature.replace(/\n/g, "<br>") + "</body></html>"); 716 } 717 else { 718 body.contentWindow.document.write("<html><body bgcolor='#FFFFFF'></body></html>"); 719 } 679 720 body.contentWindow.document.close(); 680 721 body.contentWindow.document.designMode = "on"; … … 993 1034 watch_changes_in_msg(border_id); 994 1035 995 write_msg(get_lang('Your message was save as draft in folder %1.', folder_name));1036 write_msg(get_lang('Your message was save as draft in folder %1.', lang_folder(folder_name))); 996 1037 } 997 1038 } … … 1264 1305 tree_folders.getNodeById('INBOX'+cyrus_delimiter+trashfolder).alter({caption: get_lang("Trash")}); 1265 1306 tree_folders.getNodeById('INBOX'+cyrus_delimiter+trashfolder)._refresh(); 1266 update_quota( );1307 update_quota(get_current_folder()); 1267 1308 if (data) 1268 1309 write_msg(get_lang('Your Trash folder was empty.')); -
trunk/expressoMail1_2/js/preferences.js
r271 r325 77 77 "<tr><td> - " + get_lang("Use shortcuts?") + "</td>"+ 78 78 "<td><input type='checkBox' id='use_shortcuts' name='use_shortcuts'></td></tr>"+ 79 "<tr><td nowrap> - " + get_lang('Insert signature automatically in new messages?') + "</td>"+ 80 "<td><input type='checkBox' id='use_signature' name='use_signature'></td>"+ 81 "</tr>"+ 79 82 "<tr><td colspan='2'> - " + get_lang('Signature') + "<br>"+ 80 83 "<textarea id='txt_signature' name='txt_signature' rows='3' cols='59'></textarea></td>"+ … … 129 132 for(var i=0; i < sel_size_font.options.length; i++){ 130 133 if(sel_size_font.options[i].value == preferences.font_size){sel_size_font.options[i].selected = true;} 134 } 135 var use_signature = Element("use_signature"); 136 if( preferences.use_signature == 1){ 137 use_signature.checked = true; 131 138 } 132 139 var txt_signature = Element("txt_signature"); … … 169 176 preferences.line_height = Element("sel_height_line").value; 170 177 preferences.font_size = Element("sel_size_font").value; 178 preferences.use_signature = Element("use_signature").checked ? 1 : 0; 171 179 preferences.signature = Element("txt_signature").value; 172 180 preferences.use_shortcuts = Element("use_shortcuts").checked ? 1 : 0; … … 217 225 document.getElementById('check_menu').checked = false; 218 226 document.getElementById("sel_name_box").options[0].selected = true; 227 document.getElementById("check_use_signature").checked = false; 219 228 document.getElementById('txt_signature').value = ""; 220 229 } … … 225 234 if(! this.prefeW[div.id]) { 226 235 div.style.height = is_ie ? "385px" : "370px"; 227 div.style.width = "51 0px";236 div.style.width = "515px"; 228 237 div.style.visibility = "hidden"; 229 238 div.style.position = "absolute"; 230 239 div.style.paddingLeft = "10px"; 231 240 var title = get_lang("ExpressoMail 1.2 Configuration"); 232 var wHeight = div.offsetHeight + "px";233 var wWidth = div.offsetWidth + "px";241 var wHeight = "420px"; 242 var wWidth = "530px"; 234 243 235 244 win = new dJSWin({ -
trunk/expressoMail1_2/preferences.php
r271 r325 58 58 $GLOBALS['phpgw']->template->set_var('checked_auto_save_draft',''); 59 59 60 // Insert new expressoMail preference use_signature: defines if the signature will be automatically inserted 61 // at the e-mail body 62 if ($GLOBALS['phpgw_info']['user']['preferences']['expressoMail']['use_signature']) 63 $GLOBALS['phpgw']->template->set_var('checked_use_signature','checked'); 64 else 65 $GLOBALS['phpgw']->template->set_var('checked_use_signature',''); 66 60 67 if ($GLOBALS['phpgw_info']['user']['preferences']['expressoMail']['signature']) 61 68 $GLOBALS['phpgw']->template->set_var('text_signature',$GLOBALS['phpgw_info']['user']['preferences']['expressoMail']['signature']); … … 119 126 else 120 127 $GLOBALS['phpgw']->preferences->add('expressoMail','auto_save_draft',$_POST['auto_save_draft']); 128 129 // Insert new expressoMail preference use_signature: defines if the signature will be automatically inserted 130 // at the e-mail body 131 if ($GLOBALS['phpgw_info']['user']['preferences']['expressoMail']['use_signature']) 132 $GLOBALS['phpgw']->preferences->change('expressoMail','use_signature',$_POST['use_signature']); 133 else 134 $GLOBALS['phpgw']->preferences->add('expressoMail','use_signature',$_POST['use_signature']); 121 135 122 136 if ($GLOBALS['phpgw_info']['user']['preferences']['expressoMail']['signature']) … … 183 197 $GLOBALS['phpgw']->template->set_var('normal',lang('Normal')); 184 198 $GLOBALS['phpgw']->template->set_var('big',lang('Big')); 199 $GLOBALS['phpgw']->template->set_var('lang_use_signature',lang('Insert signature automatically in new messages?')); 200 $GLOBALS['phpgw']->template->set_var('lang_signature',lang('Signature')); 185 201 186 202 $boemailadmin = CreateObject('emailadmin.bo'); … … 195 211 $GLOBALS['phpgw']->template->set_var('checked_delete_and_show_previous_message','checked'); 196 212 $GLOBALS['phpgw']->template->set_var('checked_alert_new_msg','checked'); 213 $GLOBALS['phpgw']->template->set_var('checked_use_signature','checked'); 197 214 $GLOBALS['phpgw']->template->set_var('checked_mainscreen_showmail','checked'); 198 $save_in_folder_selected = "INBOX".$_SESSION['phpgw_info']['expressomail']['email_server']['imapDelimiter']." Enviados";215 $save_in_folder_selected = "INBOX".$_SESSION['phpgw_info']['expressomail']['email_server']['imapDelimiter']."Sent"; 199 216 } 200 217 $o_folders = "<option value='-1' ".(!$save_in_folder_selected ? 'selected' : '' ).">".lang("Select on send")."</option>"; 201 foreach($imap -> get_folders_list() as $id => $folder) 218 foreach($imap -> get_folders_list() as $id => $folder){ 219 $folder['folder_name'] = $folder['folder_name'] == ('Inbox') ? lang($folder['folder_name']) : $folder['folder_name']; 220 $folder['folder_name'] = $folder['folder_name'] == ('Trash') ? lang($folder['folder_name']) : $folder['folder_name']; 221 $folder['folder_name'] = $folder['folder_name'] == ('Drafts') ? lang($folder['folder_name']) : $folder['folder_name']; 222 $folder['folder_name'] = $folder['folder_name'] == ('Sent') ? lang($folder['folder_name']) : $folder['folder_name']; 223 $folder['folder_name'] = $folder['folder_name'] == ('Spam') ? lang($folder['folder_name']) : $folder['folder_name']; 202 224 $o_folders.= "<option value='".$folder['folder_id']."' ".($save_in_folder_selected == $folder['folder_id'] ? 'selected' : '' ).">".$folder['folder_name']."</option>"; 203 225 $GLOBALS['phpgw']->template->set_var('value_save_in_folder',$o_folders); 226 } 204 227 205 228 $GLOBALS['phpgw']->template->set_var('lang_save',lang('Save')); -
trunk/expressoMail1_2/templates/default/preferences.tpl
r320 r325 60 60 <tr bgcolor="{tr_color1}"> 61 61 <td>{lang_save_in_folder}</td> 62 <td align="center"> 62 <td align="center"> 63 63 <select name="save_in_folder">{value_save_in_folder}</select> 64 64 </td> … … 66 66 <tr bgcolor="{tr_color2}"> 67 67 <td>{lang_hide_menu}</td> 68 <td align="center"> 68 <td align="center"> 69 69 <input type="checkbox" name="check_menu" value=1 {checked_menu}> 70 70 </td> … … 73 73 <td>{lang_line_height}</td> 74 74 <td align="center"> 75 <select name="line_height"> 75 <select name="line_height"> 76 76 <option {line_height_option_20_selected} value="20">{normal}</option> 77 77 <option {line_height_option_30_selected} value="30">{medium}</option> 78 <option {line_height_option_40_selected} value="40">{big}</option> 78 <option {line_height_option_40_selected} value="40">{big}</option> 79 79 </select> 80 80 </td> … … 86 86 <option {font_size_option_10_selected} value="10">{small}</option> 87 87 <option {font_size_option_11_selected} value="11">{normal}</option> 88 <option {font_size_option_15_selected} value="15">{big}</option> 88 <option {font_size_option_15_selected} value="15">{big}</option> 89 89 </select> 90 90 </td> … … 96 96 <td align="center"> 97 97 <input type="checkbox" name="use_shortcuts" value=1 {checked_shortcuts}> 98 </td>99 </tr>100 101 <tr bgcolor="{tr_color1}">102 <td>103 {lang_auto_save_draft}104 </td>105 <td align="center">106 <input type="checkbox" name="auto_save_draft" value=1 {checked_auto_save_draft}>107 98 </td> 108 99 </tr> … … 117 108 </tr> 118 109 110 <tr bgcolor="{tr_color1}"> 111 <td> 112 {lang_use_signature} 113 </td> 114 <td align="center"> 115 <input type="checkbox" name="use_signature" value=1 {checked_use_signature}> 116 </td> 117 </tr> 118 119 119 <tr bgcolor="{tr_color2}"> 120 120 <td colspan='2'> … … 123 123 </td> 124 124 </tr> 125 125 126 126 <tr bgcolor="{th_bg}"> 127 127 <td colspan="2" > … … 133 133 <td align="right"> 134 134 <input type="submit" name="submit" value="{lang_save}" onClick="try_saved.value='true';"> 135 </td> 135 </td> 136 136 </tr> 137 </td> 137 </td> 138 138 </tr> 139 139
Note: See TracChangeset
for help on using the changeset viewer.