Changeset 271
- Timestamp:
- 04/30/08 17:11:15 (16 years ago)
- Location:
- trunk/expressoMail1_2
- Files:
-
- 1 added
- 19 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/expressoMail1_2/inc/class.imap_attachment.inc.php
r2 r271 63 63 { 64 64 $array_parts_attachments[$i]['pid'] = $msg->pid[$msgno][$index]; 65 $array_parts_attachments[$i]['name'] = $this->flat_mime_decode($fname); 65 $array_parts_attachments[$i]['name'] = $this->decode_mimeheader($fname); 66 //$array_parts_attachments[$i]['name'] = $this->flat_mime_decode($fname); 66 67 $array_parts_attachments[$i]['name'] = $array_parts_attachments[$i]['name'] ? $array_parts_attachments[$i]['name'] : "attachment.bin"; 67 68 $array_parts_attachments[$i]['encoding'] = $msg->encoding[$msgno][$index]; … … 75 76 } 76 77 78 function decode_mimeheader($string) { 79 return mb_decode_mimeheader($string); 80 } 77 81 function flat_mime_decode($string) { 78 82 $array = imap_mime_header_decode($string); -
trunk/expressoMail1_2/inc/class.imap_functions.inc.php
r205 r271 840 840 841 841 $msg_to_insert = array_diff($msgs_in_the_server, $msgs_in_the_client); 842 //$msg_to_delete = array_diff($msgs_in_the_client, $msgs_in_the_server);842 $msg_to_delete = array_diff($msgs_in_the_client, $msgs_in_the_server); 843 843 844 844 $msgs_to_exec = array(); … … 867 867 } 868 868 } 869 /*if (count($msg_to_delete))870 {871 foreach($msg_to_delete as $index => $msg_number)872 {873 $msgs_to_exec[$msg_number] = 'Apagar mensage numero ' . $msg_number;874 }875 }*/876 869 877 870 $return = array(); … … 930 923 } 931 924 $return['new_msgs'] = imap_num_recent($this->mbox); 925 $return['msgs_to_delete'] = $msg_to_delete; 932 926 if($this->mbox) 933 927 imap_close($this->mbox); … … 1094 1088 $ccoaddress = implode(',',$db->getAddrs(explode(',',$params['input_cco']))); 1095 1089 $subject = $params['input_subject']; 1090 $msg_uid = $params['msg_id']; 1096 1091 $return_receipt = $params['input_return_receipt']; 1097 1092 $body = $params['body']; … … 1113 1108 //////////////////////////////////////////////////////////////////////////////////////////////////// 1114 1109 $mail->SMTPDebug = false; 1115 1116 //$mail->SMTPAuth = true;1117 //$mail->Username = $_SESSION['phpgw_info']['expressomail']['user']['userid'];1118 //$mail->Password = $_SESSION['phpgw_info']['expressomail']['user']['passwd'];1119 1110 1120 1111 $mail->IsSMTP(); … … 1136 1127 $mail->IsHTML(true); 1137 1128 $mail->Body = $params['body']; 1129 1130 //////////////////////////////////////////////////////////////////////////////////////////////////// 1131 // Build CID for embedded Images!!! 1132 $pattern = '/src="([^"]*?show_embedded_attach.php\?msg_folder=(.+)?&msg_num=(.+)?&msg_part=(.+)?)"/isU'; 1133 $cid_imgs = ''; 1134 $name_cid_files = array(); 1135 preg_match_all($pattern,$mail->Body,$cid_imgs,PREG_PATTERN_ORDER); 1136 $cid_array = array(); 1137 foreach($cid_imgs[4] as $j => $val){ 1138 if ( !array_key_exists($cid_imgs[3][$j].$val, $cid_array) ) 1139 { 1140 $cid_array[$cid_imgs[3][$j].$val] = base_convert(microtime(), 10, 36); 1141 } 1142 $cid = $cid_array[$cid_imgs[3][$j].$val]; 1143 $mail->Body = str_replace($cid_imgs[1][$j], "cid:".$cid, $mail->Body); 1144 1145 if ($msg_uid != $cid_imgs[3][$j]) // The image isn't in the same mail? 1146 { 1147 $fileContent = $this->get_forwarding_attachment($cid_imgs[2][$j], $cid_imgs[3][$j], $cid_imgs[4][$j], 'base64'); 1148 $fileName = "image_".($j).".jpg"; 1149 $fileCode = "base64"; 1150 $fileType = "image/jpg"; 1151 } 1152 else 1153 { 1154 $attach_img = $forwarding_attachments[$cid_imgs[4][$j]-2]; 1155 $file_description = unserialize(rawurldecode($attach_img)); 1156 1157 foreach($file_description as $i => $descriptor){ 1158 $file_description[$i] = eregi_replace('\'*\'','',$descriptor); 1159 } 1160 $fileContent = $this->get_forwarding_attachment($file_description[0], $msg_uid, $file_description[3], 'base64'); 1161 $fileName = $file_description[2]; 1162 $fileCode = $file_description[4]; 1163 $fileType = $this->get_file_type($file_description[2]); 1164 unset($forwarding_attachments[$cid_imgs[4][$j]-2]); 1165 } 1166 $tempDir = ini_get("session.save_path"); 1167 $file = "cid_image_".base_convert(microtime(), 10, 36).".dat"; 1168 $f = fopen($tempDir.'/'.$file,"w"); 1169 fputs($f,$fileContent); 1170 fclose($f); 1171 if ($fileContent) 1172 $mail->AddEmbeddedImage($tempDir.'/'.$file, $cid, $fileName, $fileCode, $fileType); 1173 //else 1174 // return "Error loading image attachment content"; 1175 1176 } 1138 1177 //////////////////////////////////////////////////////////////////////////////////////////////////// 1139 1178 // Build Uploading Attachments!!! … … 1151 1190 } 1152 1191 //////////////////////////////////////////////////////////////////////////////////////////////////// 1153 // Build CID for embedded Images!!! 1154 $pattern = '/show_embedded_attach.php\?msg_folder=INBOX&(.+)&(.+)">/isU'; 1155 $cid_imgs = ''; 1156 $name_cid_files = array(); 1157 if(preg_match_all($pattern,$mail->Body,$cid_imgs,PREG_PATTERN_ORDER)){ 1158 include("class.imap_attachment.inc.php"); 1159 $imap_attachment = new imap_attachment(); 1160 } 1161 for($i = 0; $i < count($cid_imgs);$i++){ 1162 if($i == 1) { 1163 for($j = 0; $j < count($cid_imgs[$i]);$j++){ 1164 $cid = base_convert(microtime(), 10, 36); 1165 $msg_num = explode("=",$cid_imgs[$i][$j]); 1166 $msg_part = explode("=",$cid_imgs[$i+1][$j]); 1167 $fileContent = imap_base64(imap_fetchbody($this->open_mbox(), $msg_num[1], $msg_part[1], FT_UID)); 1168 $pattern = './inc/show_embedded_attach.php?msg_folder=INBOX&msg_num='.$msg_num[1].'&msg_part='.$msg_part[1]; 1169 $replace = "cid:".$cid; 1170 $mail->Body = str_replace($pattern,$replace,$mail->Body); 1171 $tempDir = ini_get("session.save_path"); 1172 $file = "cid_image_".base_convert(microtime(), 10, 36).".dat"; 1173 $f = fopen($tempDir.'/'.$file,"w"); 1174 fputs($f,$fileContent); 1175 fclose($f); 1176 $name_cid_files[$j] = "image_".($j).".jpg"; 1177 $mail->AddEmbeddedImage("$tempDir/$file", $cid, "image_".($j).".jpg", "base64", "image/jpg"); 1178 } 1179 } 1180 } 1181 //////////////////////////////////////////////////////////////////////////////////////////////////// 1182 // Build Forwarding Attachments!!! 1192 // Build Forwarding Attachments!!! 1183 1193 if (count($forwarding_attachments) > 0) 1184 1194 { … … 1191 1201 foreach($forwarding_attachments as $forwarding_attachment) 1192 1202 { 1193 $file_description = unserialize(rawurldecode($forwarding_attachment)); 1194 foreach($file_description as $i => $descriptor){ 1195 $file_description[$i] = eregi_replace('\'*\'','',$descriptor); 1196 } 1197 $fileContent = $this->get_forwarding_attachment($file_description[0], $file_description[1], $file_description[3],$file_description[4]); 1198 $fileName = $file_description[2]; 1199 if(!array_search(trim($fileName),$name_cid_files)) { 1200 $mail->AddStringAttachment($fileContent, $fileName, $file_description[4], $this->get_file_type($file_description[2])); 1203 $file_description = unserialize(rawurldecode($forwarding_attachment)); 1204 $tmp = array_values($file_description); 1205 foreach($file_description as $i => $descriptor){ 1206 $tmp[$i] = eregi_replace('\'*\'','',$descriptor); 1207 } 1208 $file_description = $tmp; 1209 $fileContent = $this->get_forwarding_attachment($file_description[0], $file_description[1], $file_description[3],$file_description[4]); 1210 $fileName = $file_description[2]; 1211 if(!array_search(trim($fileName),$name_cid_files)) { 1212 $mail->AddStringAttachment($fileContent, $fileName, $file_description[4], $this->get_file_type($file_description[2])); 1201 1213 } 1202 1214 } … … 1452 1464 function save_msg($params) 1453 1465 { 1454 $folder_id = $params['folder_id']; 1455 $folder_id = mb_convert_encoding($folder_id, "UTF7-IMAP", "UTF-8"); 1456 $folder_name = $params['folder_name']; 1457 $folder_name = mb_convert_encoding($folder_name, "ISO-8859-1", "UTF-8"); 1458 $border_id = $params['border_id']; 1459 $imap_server = $_SESSION['phpgw_info']['expressomail']['email_server']['imapServer']; 1460 $mbox_stream = $this->open_mbox(); 1461 1462 $from = '"' . $_SESSION['phpgw_info']['expressomail']['user']['fullname'] . '" <' . $_SESSION['phpgw_info']['expressomail']['user']['email'] . '>'; 1463 $to = $params['to']; 1464 $cc = $params['cc']; 1465 $subject = $params['subject']; 1466 1467 include_once("class.phpmailer.php"); 1468 $mail = new PHPMailer(); 1469 include_once("class.db_functions.inc.php"); 1470 $toaddress = $params['input_to']; 1471 $ccaddress = $params['input_cc']; 1472 $subject = $params['input_subject']; 1466 1473 $body = $params['body']; 1467 1474 $body = str_replace("%nbsp;"," ",$params['body']); 1468 1475 $body = preg_replace("/\n/"," ",$body); 1469 1476 $body = preg_replace("/\r/","",$body); 1470 1471 $header = "From: " . $from . "\r\n" 1472 . "To: " . $to . "\r\n" 1473 . "Cc: " . $cc . "\r\n"; 1477 $forwarding_attachments = $params['forwarding_attachments']; 1478 $attachments = $params['FILES']; 1479 $return_files = $params['FILES']; 1480 1481 $folder = $params['folder']; 1482 $folder = mb_convert_encoding($folder, "UTF7-IMAP","ISO_8859-1"); 1483 // Fix problem with cyrus delimiter changes. 1484 // Dots in names: enabled/disabled. 1485 $folder = @eregi_replace("INBOX/", "INBOX".$this->imap_delimiter, $folder); 1486 $folder = @eregi_replace("INBOX.", "INBOX".$this->imap_delimiter, $folder); 1487 // End Fix. 1474 1488 1475 $header = mb_convert_encoding($header, "ISO-8859-1", "UTF-8"); 1476 $header = $header 1477 . "Subject: " . $subject . "\r\n" 1478 . "\r\n" 1479 . $body . "\r\n"; 1480 1481 $return = array(); 1482 $return['append'] = imap_append($mbox_stream, "{".$this->imap_server.":".$this->imap_port."}".$folder_id, $header, "\\Seen \\Draft"); 1483 $return['folder_name'] = $folder_name; 1484 $return['border_id'] = $border_id; 1489 $mail->SaveMessageInFolder = $folder; 1490 $mail->SMTPDebug = false; 1491 1492 $mail->IsSMTP(); 1493 $mail->Host = $_SESSION['phpgw_info']['expressomail']['email_server']['smtpServer']; 1494 $mail->Port = $_SESSION['phpgw_info']['expressomail']['email_server']['smtpPort']; 1495 $mail->From = $_SESSION['phpgw_info']['expressomail']['user']['email']; 1496 $mail->FromName = $_SESSION['phpgw_info']['expressomail']['user']['fullname']; 1497 1498 $mail->Sender = $mail->From; 1499 $mail->SenderName = $mail->FromName; 1500 $mail->FromName = $_SESSION['phpgw_info']['expressomail']['user']['fullname']; 1501 $mail->From = $_SESSION['phpgw_info']['expressomail']['user']['email']; 1502 1503 $this->add_recipients("to", $toaddress, &$mail); 1504 $this->add_recipients("cc", $ccaddress, &$mail); 1505 $mail->Subject = $subject; 1506 $mail->IsHTML(true); 1507 $mail->Body = $body; 1508 1509 1510 // Build Forwarding Attachments!!! 1511 if (count($forwarding_attachments) > 0) 1512 { 1513 foreach($forwarding_attachments as $forwarding_attachment) 1514 { 1515 $file_description = unserialize(rawurldecode($forwarding_attachment)); 1516 $tmp = array_values($file_description); 1517 foreach($file_description as $i => $descriptor){ 1518 $tmp[$i] = eregi_replace('\'*\'','',$descriptor); 1519 } 1520 $file_description = $tmp; 1521 1522 $fileContent = $this->get_forwarding_attachment($file_description[0], $file_description[1], $file_description[3],$file_description[4]); 1523 $fileName = $file_description[2]; 1524 1525 $file_description[5] = strlen($fileContent); //Size of file 1526 $return_forward[] = $file_description; 1527 1528 $mail->AddStringAttachment($fileContent, $fileName, $file_description[4], $this->get_file_type($file_description[2])); 1529 } 1530 } 1531 1532 if ((count($return_forward) > 0) && (count($return_files) > 0)) 1533 $return_files = array_merge_recursive($return_forward,$return_files); 1534 else 1535 if (count($return_files) < 1) 1536 $return_files = $return_forward; 1537 1538 // Build Uploading Attachments!!! 1539 if (count($attachments)) 1540 foreach ($attachments as $attach) 1541 $mail->AddAttachment($attach['tmp_name'], $attach['name'], "base64", $this->get_file_type($attach['name'])); // optional name 1542 1543 1544 1545 if(!empty($mail->AltBody)) 1546 $mail->ContentType = "multipart/alternative"; 1547 1548 $mail->error_count = 0; // reset errors 1549 $mail->SetMessageType(); 1550 $header = $mail->CreateHeader(); 1551 $body = $mail->CreateBody(); 1552 1553 if ($_SESSION['phpgw_info']['expressomail']['email_server']['imapTLSEncryption'] == 'yes') 1554 { 1555 $imap_options = '/tls/novalidate-cert'; 1556 } 1557 else 1558 { 1559 $imap_options = '/notls/novalidate-cert'; 1560 } 1561 $username = $_SESSION['phpgw_info']['expressomail']['user']['userid']; 1562 $password = $_SESSION['phpgw_info']['expressomail']['user']['passwd']; 1563 $imap_server = $_SESSION['phpgw_info']['expressomail']['email_server']['imapServer']; 1564 $imap_port = $_SESSION['phpgw_info']['expressomail']['email_server']['imapPort']; 1565 $mbox_stream = imap_open("{".$imap_server.":".$imap_port.$imap_options."}".$folder, $username, $password); 1566 1567 $new_header = str_replace("\n", "\r\n", $header); 1568 $new_body = str_replace("\n", "\r\n", $body); 1569 1570 $return['append'] = imap_append($mbox_stream, "{".$imap_server.":".$imap_port."}".$folder, $new_header . $new_body, "\\Seen \\Draft"); 1571 $status = imap_status($mbox_stream, "{".$this->imap_server.":".$this->imap_port."}".$folder, SA_UIDNEXT); 1572 $return['msg_no'] = $status->uidnext - 1; 1573 $return['folder_id'] = $folder; 1485 1574 1486 1575 if($mbox_stream) 1487 1576 imap_close($mbox_stream); 1488 1577 1578 foreach ($return_files as $index => $_attachment) { 1579 if (array_key_exists("name",$_attachment)){ 1580 unset($return_files[$index]); 1581 $return_files[$index] = $_attachment['name']."_SIZE_".$return_files[$index][1] = $_attachment['size']; 1582 } 1583 else 1584 { 1585 unset($return_files[$index]); 1586 $return_files[$index] = $_attachment[2]."_SIZE_". $return_files[$index][1] = $_attachment[5]; 1587 } 1588 } 1589 1590 $return['files'] = serialize($return_files); 1591 1489 1592 if (!$return['append']) 1490 1593 $return['append'] = imap_last_error(); 1491 else 1492 $return['header'] = $header; 1594 1493 1595 return $return; 1494 1596 } … … 1916 2018 function search_msg($params = ''){ 1917 2019 $retorno = ""; 2020 $mbox_stream = ""; 1918 2021 $search = explode(",",$params['condition']); 1919 2022 if($search){ 1920 2023 $search_criteria = ''; 1921 foreach($search as $tmp){ 2024 foreach($search as $tmp) 2025 { 1922 2026 $tmp1 = explode("##",$tmp); 1923 2027 $name_box = $tmp1[0]; 1924 2028 $criteria = explode("<=>",rawurldecode($tmp1[1])); 1925 2029 $criteria[1] = $this->remove_accents($criteria[1]); 1926 $mbox_stream = $this->open_mbox($name_box); 2030 2031 if(!is_resource($mbox_stream)) 2032 $mbox_stream = $this->open_mbox(); 2033 else 2034 imap_reopen($mbox_stream, "{".$this->imap_server.":".$this->imap_port.$this->imap_options."}".$name_box); 1927 2035 1928 2036 if($criteria[0] == "ALL ") { 1929 $all_criterias = array ("TO","SUBJECT","FROM","CC"); 1930 foreach($all_criterias as $criteria_fixed){ 1931 $search_criteria = imap_search($mbox_stream,$criteria_fixed." \"".$criteria[1]."\"", SE_UID); 1932 if($search_criteria && count($search_criteria) < 50) { 2037 $all_criterias = array ("TO","SUBJECT","FROM","CC"); 2038 foreach($all_criterias as $criteria_fixed) 2039 { 2040 $filter = $criteria_fixed . ' "' . $criteria[1] . '"'; 2041 $search_criteria = imap_search($mbox_stream, $filter, SE_UID); 2042 2043 if($search_criteria && count($search_criteria) < 50) 2044 { 1933 2045 foreach($search_criteria as $new_search){ 1934 $m_token = trim("##".$name_box . "--" . $this->get_msg($new_search,$name_box ) . "--".$new_search."##"."\n");1935 if(! strstr($retorno,$m_token))2046 $m_token = trim("##".$name_box . "--" . $this->get_msg($new_search,$name_box,$mbox_stream) . "--".$new_search."##"."\n"); 2047 if(!@strstr($retorno,$m_token)) 1936 2048 $retorno .= $m_token; 1937 2049 } … … 1940 2052 return "many results"; 1941 2053 } 1942 } 2054 } 1943 2055 else { 1944 $search_criteria = imap_search($mbox_stream,$criteria[0]."\"".$criteria[1]."\"", SE_UID); 2056 $filter = $criteria[0] . '"' . $criteria[1] . '"'; 2057 $search_criteria = imap_search($mbox_stream, $filter, SE_UID); 2058 1945 2059 if($search_criteria) { 1946 2060 foreach($search_criteria as $new_search){ 1947 $retorno .= trim("##".$name_box . "--" . $this->get_msg($new_search,$name_box ) . "--".$new_search."##"."\n");2061 $retorno .= trim("##".$name_box . "--" . $this->get_msg($new_search,$name_box,$mbox_stream) . "--".$new_search."##"."\n"); 1948 2062 } 1949 2063 } 1950 2064 } 1951 if($mbox_stream) 1952 imap_close($mbox_stream); 1953 } 1954 } 2065 } 2066 } 2067 if($mbox_stream) 2068 imap_close($mbox_stream); 2069 1955 2070 return $retorno ? $retorno : "none"; 1956 2071 } 1957 2072 1958 function get_msg($uid_msg,$name_box ){1959 $mbox_stream = $this->open_mbox($name_box);1960 $header = @imap_headerinfo($mbox_stream, imap_msgno($mbox_stream, $uid_msg), 80, 255); 2073 function get_msg($uid_msg,$name_box, $mbox_stream ) 2074 { 2075 $header = @imap_headerinfo($mbox_stream, imap_msgno($mbox_stream, $uid_msg), 80, 255); 1961 2076 $subject = $this->decode_string($header->fetchsubject); 1962 2077 $from = $header->from[0]->mailbox; … … 1964 2079 $from = $header->from[0]->personal; 1965 2080 $ret_msg = $this->decode_string($from) . "--" . $subject . "--". date("d/m/Y",$header ->udate)."--". $this->size_msg($header->Size); 1966 return $ret_msg; 1967 } 1968 2081 return $ret_msg; 2082 } 2083 1969 2084 function size_msg($size){ 1970 2085 $var = floor($size/1024); -
trunk/expressoMail1_2/inc/class.ldap_functions.inc.php
r243 r271 76 76 if (($field != 'null') && ($ID != 'null')) 77 77 { 78 $filter="(& (|(phpgwAccountType=u)(phpgwAccountType=l))(|(cn=*$search_for*)(mail=$search_for*)))";78 $filter="(& (|(phpgwAccountType=u)(phpgwAccountType=l)) (|(cn=*$search_for*)(mail=$search_for*)) (!(phpgwaccountvisible=-1)) )"; 79 79 $justthese = array("cn", "mail", "telephoneNumber", "mobile", "phpgwAccountVisible", "uid"); 80 80 } 81 81 else 82 82 { 83 $filter="(& (phpgwAccountType=u)(cn=*$search_for*) )";83 $filter="(& (phpgwAccountType=u)(cn=*$search_for*) (!(phpgwaccountvisible=-1)) )"; 84 84 $justthese = array("cn", "mail", "telephoneNumber", "mobile", "phpgwAccountVisible", "jpegPhoto", "uid"); 85 85 } … … 87 87 $sr=ldap_search($this->ds, $this->ldap_context, $filter, $justthese); 88 88 $count_entries = ldap_count_entries($this->ds,$sr); 89 89 90 // Get user org dn. 91 $user_dn = $_SESSION['phpgw_info']['expressomail']['user']['account_dn']; 92 $user_sector_dn = ldap_explode_dn ( $user_dn, false ); 93 array_shift($user_sector_dn); 94 array_shift($user_sector_dn); 95 $user_sector_dn = implode(",", $user_sector_dn); 96 97 // New search only on user sector 90 98 if ($count_entries > 200) 91 99 { … … 96 104 $this->ldapRootConnect(true); 97 105 98 $user_dn = $_SESSION['phpgw_info']['expressomail']['user']['account_dn'];99 $user_sector_dn = ldap_explode_dn ( $user_dn, false );100 array_shift($user_sector_dn);101 array_shift($user_sector_dn);102 $user_sector_dn = implode(",", $user_sector_dn);103 104 // New search only on user sector105 106 $sr=ldap_search($this->ds, $user_sector_dn, $filter, $justthese); 106 107 $count_entries = ldap_count_entries($this->ds,$sr); … … 117 118 } 118 119 } 120 119 121 $info = ldap_get_entries($this->ds, $sr); 120 122 121 123 $tmp = array(); 124 $tmp_users_from_user_org = array(); 122 125 for ($i=0; $i<$info["count"]; $i++) 123 126 { 124 if ($info[$i]["phpgwaccountvisible"][0] == '-1') 125 continue; 126 $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]; 127 } 127 // Usuario sempre serao da minha org. 128 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 } 132 else 133 { 134 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]; 137 } 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 } 144 natcasesort($tmp_users_from_user_org); 128 145 natcasesort($tmp); 129 146 130 $i = 0;131 147 if (($field != 'null') && ($ID != 'null')) 132 148 { 149 $i = 0; 150 151 $tmp = array_merge($tmp, $tmp_users_from_user_org); 152 natcasesort($tmp); 153 133 154 foreach ($tmp as $info => $cn) 134 155 { … … 142 163 else 143 164 { 165 $options_users_from_user_org = ''; 144 166 $options = ''; 145 167 168 /* List of users from user org */ 169 $i = 0; 170 foreach ($tmp_users_from_user_org as $info => $cn) 171 { 172 $contacts_result[$i] = array(); 173 $options_users_from_user_org .= $this->make_quicksearch_card($info, $cn); 174 $i++; 175 } 176 177 /* List of users from others org */ 146 178 foreach ($tmp as $info => $cn) 147 179 { 148 180 $contacts_result[$i] = array(); 149 $contacts_result[$i]["cn"] = $cn; 150 list ($contacts_result[$i]["mail"], $contacts_result[$i]["phone"], $contacts_result[$i]["mobile"], $contacts_result[$i]["uid"], $contacts_result[$i]["jpegphoto"]) = split ('%', $info); 151 152 if ($contacts_result[$i]['jpegphoto']) 153 $photo_link = '<img src="./inc/show_user_photo.php?mail='.$contacts_result[$i]['mail'].'">'; 154 else 155 $photo_link = '<img src="./templates/default/images/photo.png">'; 156 157 // '<tr class="quicksearchcontacts_unselected" onClick="javascript:QuickSearchUser.select_cc(this)">' . 158 $phoneUser = $contacts_result[$i]['phone']; 159 160 if($_SESSION['phpgw_info']['user']['preferences']['expressoMail']['voip_enabled'] && $phoneUser) { 161 $phoneUser = '<a title="'.$functions->getLang("Call to Comercial Number").'" href="#" onclick="InfoContact.connectVoip(\''.$phoneUser.'\',\'com\')">'.$phoneUser.'</a>'; 162 if($contacts_result[$i]['mobile']){ 163 $phoneUser .= ' / <a title="'.$functions->getLang("Call to Mobile Number").'" href="#" onclick="InfoContact.connectVoip(\''.$contacts_result[$i]['mobile'].'\',\'mob\')">'.$contacts_result[$i]['mobile'].'</a>'; 164 } 165 } 166 $options .= 167 '<tr class="quicksearchcontacts_unselected">' . 168 '<td class="cc" width="1%">' . 169 '<a title="'.$functions->getLang("Write message").'" onClick="javascript:QuickSearchUser.create_new_message(\''.$contacts_result[$i]["cn"].'\', \''.$contacts_result[$i]["mail"].'\')">' . 170 $photo_link . 171 '</a>' . 172 '</td>' . 173 '<td class="cc">' . 174 '<span name="cn">' . $contacts_result[$i]['cn'] . '</span>' . '<br>' . 175 '<a title="'.$functions->getLang("Write message").'" onClick="javascript:QuickSearchUser.create_new_message(\''.$contacts_result[$i]["cn"].'\', \''.$contacts_result[$i]["mail"].'\')">' . 176 '<font color=blue>' . 177 '<span name="mail">' . $contacts_result[$i]['mail'] . '</span>' . '<br>' . 178 '</font>' . 179 '</a>' . 180 $phoneUser . 181 '</td>' . 182 '</tr>'; 181 $options .= $this->make_quicksearch_card($info, $cn); 183 182 $i++; 184 183 } 185 $contacts_result = $options;186 184 187 185 if ($quickSearch_only_in_userSector) 188 186 { 189 $head_option = 190 '<tr class="quicksearchcontacts_unselected">' . 191 '<td colspan="2" width="100%" align="center">' . 192 $functions->getLang('More than 200 results were found') . '.<br>' . 193 $functions->getLang('Showing only the results found in your organization') . '.'; 194 '</td>' . 195 '</tr>'; 196 $contacts_result = $head_option . $contacts_result; 187 if ($options != '') 188 { 189 $head_option = 190 '<tr class="quicksearchcontacts_unselected">' . 191 '<td colspan="2" width="100%" align="center">' . 192 $functions->getLang('More than 200 results were found') . '.<br>' . 193 $functions->getLang('Showing only the results found in your organization') . '.'; 194 '</td>' . 195 '</tr>'; 196 $contacts_result = $head_option . $options_users_from_user_org . $options; 197 } 198 else 199 { 200 $return = array(); 201 $return['status'] = false; 202 $return['error'] = "many results"; 203 return $return; 204 } 205 } 206 else 207 { 208 if (($options_users_from_user_org != '') && ($options != '')) 209 { 210 $head_option0 = 211 '<tr class="quicksearchcontacts_unselected">' . 212 '<td colspan="2" width="100%" align="center" style="background:#EEEEEE"><B>' . 213 $functions->getLang('Users from your organization') . '.'; 214 '</B></td>' . 215 '</tr>'; 216 217 $head_option1 = 218 '<tr class="quicksearchcontacts_unselected">' . 219 '<td colspan="2" width="100%" align="center" style="background:#EEEEEE"><B>' . 220 $functions->getLang('Users from others organizations') . '.'; 221 '</B></td>' . 222 '</tr>'; 223 } 224 $contacts_result = $head_option0 . $options_users_from_user_org . $head_option1 . $options; 197 225 } 198 226 } … … 200 228 ldap_close($this->ds); 201 229 return $contacts_result; 230 } 231 232 function make_quicksearch_card($info, $cn) 233 { 234 include_once("class.functions.inc.php"); 235 $functions = new functions; 236 237 $contacts_result = array(); 238 $contacts_result["cn"] = $cn; 239 list ($contacts_result["mail"], $contacts_result["phone"], $contacts_result["mobile"], $contacts_result["uid"], $contacts_result["jpegphoto"]) = split ('%', $info); 240 241 if ($contacts_result['jpegphoto']) 242 $photo_link = '<img src="./inc/show_user_photo.php?mail='.$contacts_result['mail'].'">'; 243 else 244 $photo_link = '<img src="./templates/default/images/photo.png">'; 245 246 $phoneUser = $contacts_result['phone']; 247 248 if($_SESSION['phpgw_info']['user']['preferences']['expressoMail']['voip_enabled'] && $phoneUser) { 249 $phoneUser = '<a title="'.$functions->getLang("Call to Comercial Number").'" href="#" onclick="InfoContact.connectVoip(\''.$phoneUser.'\',\'com\')">'.$phoneUser.'</a>'; 250 if($contacts_result['mobile']){ 251 $phoneUser .= ' / <a title="'.$functions->getLang("Call to Mobile Number").'" href="#" onclick="InfoContact.connectVoip(\''.$contacts_result['mobile'].'\',\'mob\')">'.$contacts_result['mobile'].'</a>'; 252 } 253 } 254 $option = 255 '<tr class="quicksearchcontacts_unselected">' . 256 '<td class="cc" width="1%">' . 257 '<a title="'.$functions->getLang("Write message").'" onClick="javascript:QuickSearchUser.create_new_message(\''.$contacts_result["cn"].'\', \''.$contacts_result["mail"].'\')">' . 258 $photo_link . 259 '</a>' . 260 '</td>' . 261 '<td class="cc">' . 262 '<span name="cn">' . $contacts_result['cn'] . '</span>' . '<br>' . 263 '<a title="'.$functions->getLang("Write message").'" onClick="javascript:QuickSearchUser.create_new_message(\''.$contacts_result["cn"].'\', \''.$contacts_result["mail"].'\')">' . 264 '<font color=blue>' . 265 '<span name="mail">' . $contacts_result['mail'] . '</span>' . '<br>' . 266 '</font>' . 267 '</a>' . 268 $phoneUser . 269 '</td>' . 270 '</tr>'; 271 return $option; 202 272 } 203 273 -
trunk/expressoMail1_2/index.php
r242 r271 28 28 'nonavbar' => False, 29 29 'currentapp' => 'expressoMail1_2', 30 'update_version' => '1.221 0',30 'update_version' => '1.2211', 31 31 'enable_nextmatchs_class' => True 32 32 ); … … 66 66 'line_height' => $GLOBALS['phpgw_info']['user']['preferences']['expressoMail']['line_height'] ? $GLOBALS['phpgw_info']['user']['preferences']['expressoMail']['line_height'] : "30", 67 67 'font_size' => $GLOBALS['phpgw_info']['user']['preferences']['expressoMail']['font_size'] ? $GLOBALS['phpgw_info']['user']['preferences']['expressoMail']['font_size'] : "11", 68 'use_shortcuts' => $GLOBALS['phpgw_info']['user']['preferences']['expressoMail']['use_shortcuts'] ? $GLOBALS['phpgw_info']['user']['preferences']['expressoMail']['use_shortcuts'] : "0" 68 'use_shortcuts' => $GLOBALS['phpgw_info']['user']['preferences']['expressoMail']['use_shortcuts'] ? $GLOBALS['phpgw_info']['user']['preferences']['expressoMail']['use_shortcuts'] : "0", 69 'auto_save_draft' => $GLOBALS['phpgw_info']['user']['preferences']['expressoMail']['auto_save_draft'] ? $GLOBALS['phpgw_info']['user']['preferences']['expressoMail']['auto_save_draft'] : "0" 69 70 70 71 ); -
trunk/expressoMail1_2/js/QuickCatalogSearch.js
r128 r271 11 11 _this = this; 12 12 13 var title = get_lang('Select a name') + ':';14 13 var el = document.createElement("DIV"); 15 14 el.style.visibility = "hidden"; … … 23 22 el.innerHTML = ""; 24 23 25 if (data.quickSearch_only_in_userSector)26 title += "<font color='BLACK' nowrap> ("+get_lang('Showing only the results found in your organization')+".)</font>"27 28 el.innerHTML = " <b><font color='BLUE' nowrap>"+title+"</font></b><br> ";29 30 24 if (document.getElementById('select_QuickCatalogSearch') == null){ 25 26 var title_innerHTML = get_lang('Select a name') + ':'; 27 if (data.quickSearch_only_in_userSector) 28 title_innerHTML += "<font color='BLACK' nowrap> ("+get_lang('Showing only the results found in your organization')+".)</font>" 29 30 var title = document.createElement("SPAM"); 31 title.id = 'window_QuickCatalogSearch_title'; 32 title.innerHTML = " <b><font color='BLUE' nowrap>"+title_innerHTML+"</font></b><br> "; 33 el.appendChild(title); 34 31 35 var cmb = document.createElement("SELECT"); 32 36 cmb.id = "select_QuickCatalogSearch"; … … 83 87 } 84 88 else{ 89 var title_innerHTML = get_lang('Select a name') + ':'; 90 if (data.quickSearch_only_in_userSector) 91 title_innerHTML += "<font color='BLACK' nowrap> ("+get_lang('Showing only the results found in your organization')+".)</font>" 92 93 var title = Element('window_QuickCatalogSearch_title'); 94 title.innerHTML = " <b><font color='BLUE' nowrap>"+title_innerHTML+"</font></b><br> "; 95 85 96 var cmb = document.getElementById('select_QuickCatalogSearch'); 86 97 cmb.onkeypress = function (e) … … 109 120 } 110 121 }; 111 112 122 113 123 for (i=0; i<cmb.length; i++) 114 124 cmb.options[i--] = null; -
trunk/expressoMail1_2/js/abas.js
r245 r271 69 69 } 70 70 71 /*var span_options = document.getElementById("span_options");72 if (span_options){73 span_options.parentNode.removeChild(span_options);74 var span_options = document.createElement("SPAN");75 span_options.setAttribute("id","span_options");76 }77 78 if ((span_options) && (ID == 0)){79 var span_D = Element("span_D");80 span_options.innerHTML =81 '<span title="'+get_lang("Delete")+'" style="margin-left:8px;" class="message_options" onclick=delete_msgs(\'null\',\'selected\',\'null\')>'+get_lang("Delete")+'</span> | '+82 '<span title="'+get_lang("Move")+'" class="message_options" onclick=wfolders.makeWindow(\"\",\"move_to\")>'+get_lang("Move")+'</span> | '+83 '<span title="'+get_lang("Print")+'" class="message_options" onclick=print_all()>'+get_lang("Print")+'</span> | '+84 '<span title="'+get_lang("Export")+'" class="message_options" onclick="export_all_selected_msgs()">'+get_lang("Export")+'</span>';85 span_options.setAttribute('style',"font-size:5px;");86 span_D.parentNode.insertBefore(span_options,span_D);87 } else88 if ((span_options) && (ID != 0)){89 span_options.innerHTML = '<span title="'+get_lang("Delete")+'" style="margin-left:8px" class="message_options" onclick=delete_search_msgs('+content.id+')>'+get_lang("Delete")+'</span> | '+90 '<span title="'+get_lang("Move")+'" class="message_options" onclick=wfolders.makeWindow(\"border_id_'+content.id.substr(11)+'\",\"move_to\")>'+get_lang("Move")+'</span>';91 var span_D = Element("span_D");92 span_D.parentNode.insertBefore(span_options,span_D);93 }94 */95 71 return ID; 96 72 } … … 108 84 } 109 85 Element("footer_menu").style.display = 'none'; 110 var ID = id_value ? id_value : parseInt(BordersArray[(BordersArray.length-1)].sequence) + 1; 86 87 if (! id_value) // Is new message? 88 var ID = parseInt(BordersArray[(BordersArray.length-1)].sequence) + 1; 89 else{ 90 var ID = id_value; 91 if (document.getElementById("border_id_"+id_value+"_r")) // Edit message? if yes treat like new 92 var id_value = null; 93 } 111 94 112 95 td = document.createElement("TD"); … … 204 187 if(!ID) 205 188 return false; 189 206 190 if (msg_sent == 'false') 207 191 { … … 211 195 try 212 196 { 213 if (body.contentWindow.document.designMode.toLowerCase() == 'on') 197 var save_link = Element("save_message_options"); 198 if ((body.contentWindow.document.designMode.toLowerCase() == 'on') && (save_link.onclick != '')) 214 199 { 215 200 var discard_msg = confirm(get_lang("Your message has not been sent. Discard your message?"), ""); … … 220 205 else 221 206 { 207 if (! newMessageTab.toPreserve[ID]) 208 cExecute ("$this.imap_functions.delete_msgs&folder="+newMessageTab.imapBox[ID]+"&msgs_number="+newMessageTab.imapUid[ID],function(data){ return }); 222 209 Element('to_'+ID).focus(); 223 210 } … … 229 216 } 230 217 } 218 219 newMessageTab.toPreserve[ID] = false; 220 newMessageTab.imapUid[ID] = 0; 231 221 232 222 hold_session = false; -
trunk/expressoMail1_2/js/common_functions.js
r197 r271 45 45 // onUnload edit message 46 46 if(!is_ie) 47 window.onbeforeunload = unloadMess; 47 { 48 var beforeunload = window.onbeforeunload; 49 window.onbeforeunload = function() 50 { 51 if ( typeof beforeunload == 'function' ) 52 beforeunload(); 53 54 return unloadMess(); 55 }; 56 } 48 57 function unloadMess(){ 49 58 var mess = get_lang("Your message has not been sent and will be discarted."); … … 154 163 } 155 164 156 function download_attachments(msg_folder, msg_number, idx_file, msg_part, encoding, new_file_name ){165 function download_attachments(msg_folder, msg_number, idx_file, msg_part, encoding, new_file_name, show_iframe){ 157 166 div_attachment = document.getElementById("id_div_attachment"); 158 167 var params = ''; … … 167 176 if(encoding) 168 177 params += "&encoding="+encoding; 178 169 179 div_attachment.innerHTML="<iframe style='display:none;width:0;height:0' name='attachment' src='inc/gotodownload.php?msg_folder="+msg_folder+"&msg_number="+msg_number+"&idx_file="+idx_file+"&msg_part="+msg_part+params+"'></iframe>"; 170 180 } 181 171 182 function download_all_attachments(msg_folder, msg_number){ 172 183 var handler_source = function(data){ … … 176 187 } 177 188 // Add Input File Dynamically. 178 var countFiles = 0;179 189 function addFile(id_border){ 180 190 divFiles = document.getElementById("divFiles_"+id_border); 181 countFiles++; 191 192 if (divFiles.lastChild) 193 var countDivFiles = parseInt(divFiles.lastChild.id.split('_')[2]) + 1; 194 195 if (! countDivFiles) 196 var countDivFiles = 1; 197 182 198 divFile = document.createElement('DIV'); 183 inputFile = document.createElement("INPUT"); 199 200 var inputFile = document.createElement("INPUT"); 184 201 185 202 var tmp_id_border = document.createAttribute('id_border'); 186 203 tmp_id_border.value = id_border; 204 187 205 inputFile.setAttributeNode(tmp_id_border); 188 inputFile.id = "inputFile_"+id_border+ countFiles;206 inputFile.id = "inputFile_"+id_border+"_"+countDivFiles; 189 207 inputFile.onchange = function () {validateFileExtension(this.value, this.id.replace("input","div"), this.getAttribute('id_border'));}; 190 208 inputFile.type = 'file'; 191 209 inputFile.size = 50; 192 210 inputFile.maxLength = 255; 193 inputFile.name='file_'+countFiles; 211 inputFile.name='file_'+countDivFiles; 212 194 213 divFile.appendChild(inputFile); 195 linkFile = document.createElement("A"); 196 linkFile.id = "linkFile_"+id_border+countFiles; 214 215 var linkFile = document.createElement("A"); 216 linkFile.id = "linkFile_"+id_border+"_"+countDivFiles; 197 217 linkFile.href='javascript:void(0)'; 198 218 linkFile.onclick=function () {removeFile(this.id.replace("link","div"));}; … … 200 220 //divFile.innerHTML += " "; 201 221 divFile.appendChild(linkFile); 202 divFile.id = "divFile_"+id_border+ countFiles;222 divFile.id = "divFile_"+id_border+"_"+countDivFiles; 203 223 divFiles.appendChild(divFile); 204 224 } 205 225 // Remove Input File Dynamically. 206 226 function removeFile(id){ 227 var border_id = id.substr(8,1); 207 228 var el = Element(id); 208 229 el.parentNode.removeChild(el); … … 210 231 211 232 function validateFileExtension(fileName, id, id_border){ 212 var fileExtension = fileName.split("."); 233 var error_flag = false; 234 if (fileName[0] != '/'){ // file name is windows format? 235 var file = fileName.substr(fileName.lastIndexOf('\\') + 1, fileName.length); 236 if ((fileName.indexOf(':\\') != 1) && (fileName.indexOf('\\\\') != 0)) // Is stored in partition or a network file? 237 error_flag = true; 238 } 239 else // is nix 240 var file = fileName.substr(fileName.lastIndexOf('/') + 1, fileName.length); 241 242 var fileExtension = file.split("."); 213 243 fileExtension = fileExtension[(fileExtension.length-1)]; 214 215 244 for(var i=0; i<denyFileExtensions.length; i++) 216 245 { 217 246 if(denyFileExtensions[i] == fileExtension) 218 247 { 219 alert(get_lang('File extension forbidden') + '.'); 220 removeFile(id); 221 addFile(id_border); 222 } 223 } 248 error_flag = true; 249 break; 250 } 251 252 } 253 254 if (error_flag == true){ 255 alert(get_lang('File extension forbidden or invalid file') + '.'); 256 removeFile(id); 257 addFile(id_border); 258 return false; 259 } 260 return true; 261 224 262 } 225 263 -
trunk/expressoMail1_2/js/connector.js
r197 r271 506 506 // url: 'module.class.method' 507 507 // form: form element (for upload files) 508 function cExecuteForm(url, form, handler ){508 function cExecuteForm(url, form, handler,id){ 509 509 connector.buildBar(); 510 510 isExecuteForm = true; … … 526 526 } 527 527 528 if(countFiles) { 528 var divFiles = Element("divFiles_"+id); 529 if (divFiles.firstChild) { 529 530 el = document.createElement('input'); 530 531 el.type = 'hidden'; 531 532 el.name = 'countFiles'; 532 el.value = countFiles; 533 var countDivFiles = 0; 534 try{ 535 countDivFiles = parseInt(divFiles.lastChild.firstChild.id.split('_')[2]) + 1; // The id of last file 536 } 537 catch (e) { var countDivFiles = 0; }; 538 el.value = countDivFiles ; 533 539 form.appendChild(el); 534 540 } -
trunk/expressoMail1_2/js/draw_api.js
r252 r271 871 871 var option_edit = '<span class="message_options" onclick="new_message(\'edit\',\''+ID+'\');">'+get_lang('Edit')+'</span> | '; 872 872 var option_print = '<span class="message_options" onclick="print_msg(\''+info_msg.msg_folder+'\',\''+info_msg.msg_number+'\',\''+ID+'\');">'+get_lang('Print')+'</span> | '; 873 var option_delete = '<span class="message_options" onclick="delete_msgs(\''+info_msg.msg_folder+'\',\''+info_msg.msg_number+'\',\''+ID+'\');">'+get_lang('Delete')+'</span>'; 873 var option_delete = '<span class="message_options" onclick="delete_msgs(\''+info_msg.msg_folder+'\',\''+info_msg.msg_number+'\',\''+ID+'\');">'+get_lang('Delete')+'</span> | '; 874 var option_hide_more = document.createElement("SPAN"); 875 option_hide_more.className = 'message_options'; 876 options.align = 'right'; 877 option_hide_more.value = 'more_options'; 878 option_hide_more.id = 'option_hide_more_'+ID; 879 option_hide_more.innerHTML = get_lang('Options'); 880 option_hide_more.onclick = function(){ 881 var _height = Element("div_message_scroll_"+ID).style.height; 882 _height = parseInt(_height.replace("px","")); 883 var _offset = 35; 884 if (this.value == 'more_options'){ 885 this.innerHTML = "<b><u>"+get_lang('Options')+"</u></b>"; 886 this.value = 'hide_options'; 887 Element("div_message_scroll_"+ID).style.height = (_height - _offset)+"px"; 888 Element('table_message_others_options_'+ID).style.display = ''; 889 } 890 else{ 891 this.innerHTML = get_lang('Options'); 892 this.value = 'more_options'; 893 Element("div_message_scroll_"+ID).style.height = (_height + _offset)+"px"; 894 Element('table_message_others_options_'+ID).style.display = 'none'; 895 } 896 }; 874 897 options.innerHTML = option_edit + option_print + option_delete; 898 options.appendChild(option_hide_more); 875 899 tr.appendChild(td); 876 900 tr.appendChild(options); … … 896 920 var td1 = document.createElement("TD"); 897 921 td1.innerHTML = get_lang("From: "); 922 td1.appendChild(deny_email(info_msg.from.email)); 898 923 td1.width = "7%"; 899 924 … … 903 928 var td111 = document.createElement("TD"); 904 929 td111.innerHTML = get_lang("Sent by")+": "; 930 td111.appendChild(deny_email(info_msg.sender.email)); 905 931 td111.setAttribute("noWrap","true"); 906 932 var sender = document.createElement("TD"); … … 911 937 sender_values.value = info_msg.sender.full; //Veio do IMAP, sem images nem links. 912 938 sender.innerHTML += draw_plugin_cc(ID, info_msg.sender.full); 913 sender.appendChild(deny_email(info_msg.sender.email));914 939 sender.className = "header_message_field"; 915 940 tr111.appendChild(td111); … … 925 950 if (info_msg.Draft != "X"){ 926 951 from.innerHTML += draw_plugin_cc(ID, info_msg.from); 927 from.appendChild(deny_email(info_msg.from.email));928 952 tbody_message_others_options.appendChild(tr1); 929 953 } … … 1197 1221 } 1198 1222 1199 function draw_new_message( ){1200 var ID = create_border("" );1223 function draw_new_message(border_ID){ 1224 var ID = create_border("",border_ID); 1201 1225 hold_session = true; 1202 1226 ///////////////////////////////////////////////////////////////////////////////////////////////////////// … … 1241 1265 wfolders.alert = true; 1242 1266 } 1243 var option_save = '<span class="message_options" onclick=wfolders.makeWindow("'+ID+'","save");>'+get_lang("Save")+'</span> | '; 1267 // var option_save_as = '<span class="message_options" onclick=wfolders.makeWindow("'+ID+'","save");>'+get_lang("Save as")+'</span> | '; 1268 var option_save = '<span id="save_message_options" class="message_options" onclick="newMessageTab.toPreserve['+ID+'] = true; save_msg('+ID+');">'+get_lang("Save")+'</span> | '; 1244 1269 var option_search = '<span class="message_options" onclick=openListUsers("'+ID+'");>'+get_lang("Search")+'</span>'; 1245 1270 td_menu_new_message.innerHTML = option_send + option_send_and_file + option_save + option_search; … … 2046 2071 dn_em.setAttribute("title",get_lang("Block Sender")); 2047 2072 dn_em.style.cursor = "pointer"; 2048 dn_em.innerHTML = "<img onclick=filter.new_rule('"+email+"') src='./templates/default/images/deny.gif'>";2073 dn_em.innerHTML = "<img align='top' onclick=filter.new_rule('"+email+"') src='./templates/default/images/deny.gif'>"; 2049 2074 return dn_em; 2050 2075 -
trunk/expressoMail1_2/js/filter.js
r246 r271 370 370 _this.out_officeF = false; 371 371 //Save outoffice in prefs: 372 if(!prefe) 373 connector.loadScript("preferences"); 372 connector.loadScript("preferences"); 374 373 prefe.save("outoffice", _this.out_officeF); 375 374 } … … 530 529 _this.out_officeF = (aux[4].replace("\n","") == "off") ? false : true; 531 530 //Save outoffice in prefs: 532 if(!prefe) 533 connector.loadScript("preferences"); 531 connector.loadScript("preferences"); 534 532 prefe.save("outoffice", _this.out_officeF); 535 533 } -
trunk/expressoMail1_2/js/main.js
r245 r271 1 1 // Tempo do auto refresh (em milisegundos) 2 2 var time_refresh = 300000; 3 var autosave_time = 60000; 4 3 5 function init(){ 4 6 if (!is_ie) … … 38 40 setTimeout('auto_refresh()', time_refresh); 39 41 } 42 43 var away = false; 44 var away_timer; 45 function setAway () 46 { 47 away_timer = setTimeout("setAway()", 5000); 48 away=true; 49 } 50 51 function auto_save_msg(border_id) 52 { 53 if (document.getElementById('border_id_'+border_id)) 54 { 55 var keypress_handler = function stop_counting () 56 { 57 clearTimeout(away_timer); 58 away=false; 59 away_timer = setTimeout('setAway()',5000); 60 }; 61 62 var obj = document.getElementById('body_'+border_id).contentWindow.document; 63 if ( obj.addEventListener ) 64 obj.addEventListener('keypress', keypress_handler, false); 65 else if ( obj.attachEvent ) 66 obj.attachEvent('onkeypress', keypress_handler); 67 68 if (away) 69 { 70 var save_link = Element("save_message_options"); 71 if (save_link.onclick != '') 72 save_msg(border_id); 73 else 74 setTimeout('auto_save_msg('+border_id+')',autosave_time); 75 } 76 else 77 setTimeout('auto_save_msg('+border_id+')',3000); 78 } 79 } 80 81 function watch_changes_in_msg(border_id) 82 { 83 if (document.getElementById('border_id_'+border_id)) 84 { 85 function keypress_handler () 86 { 87 away=false; 88 var save_link = Element("save_message_options"); 89 save_link.onclick = function onclick(event) { newMessageTab.toPreserve[border_id] = true; save_msg(border_id); } ; 90 save_link.style.color = '#0000ff'; 91 }; 92 93 var obj = document.getElementById('body_'+border_id).contentWindow.document; 94 if ( obj.addEventListener ) 95 obj.addEventListener('keypress', keypress_handler, false); 96 else if ( obj.attachEvent ) 97 obj.attachEvent('onkeypress', keypress_handler); 98 99 var subject_obj = document.getElementById('subject_'+border_id); 100 if ( subject_obj.addEventListener ) 101 subject_obj.addEventListener('keypress', keypress_handler, false); 102 else if ( subject_obj.attachEvent ) 103 subject_obj.attachEvent('onkeypress', keypress_handler); 104 105 var to_obj = document.getElementById('to_'+border_id); 106 if ( to_obj.addEventListener ) 107 to_obj.addEventListener('keypress', keypress_handler, false); 108 else if ( to_obj.attachEvent ) 109 to_obj.attachEvent('onkeypress', keypress_handler); 110 111 } 112 } 113 114 40 115 41 116 function show_msg(msg_info){ … … 105 180 var box = Element("tbody_box"); 106 181 table_element.appendChild(box); 107 var len = data.length; 108 for (var i=0; i<len; i++){ 182 for (var i=0; i<data.length; i++){ 109 183 var new_msg = this.make_tr_message(data[i], current_folder); 110 184 _dragArea.makeDragged(new_msg, data[i].msg_number, data[i].subject, true); 111 185 eval(data[i].command); 112 186 } 187 188 for (var i=0; i<data.msgs_to_delete.length; i++){ 189 var remove_msg = document.getElementById(data.msgs_to_delete[i]); 190 if (remove_msg) 191 remove_msg.parentNode.removeChild(remove_msg); 192 } 113 193 if(parseInt(alert_new_msg) && data.new_msgs > 0) 114 194 alert(get_lang("You have %1 new", data['new_msgs'])+" "+(data['new_msgs'] > 1 ? get_lang("messages") : get_lang("message")) +"!"); 115 195 if(data.new_msgs > 0){ 116 Element('tot_m').innerHTML = parseInt(Element('tot_m').innerHTML) + parseInt(data.new_msgs); 196 Element('tot_m').innerHTML = parseInt(Element('tot_m').innerHTML) + parseInt(data.new_msgs); //refresh tab title 117 197 update_quota(); 118 198 } … … 368 448 369 449 function new_message(type, border_ID){ 370 var new_border_ID = draw_new_message(); 450 451 var new_border_ID = draw_new_message(parseInt(border_ID)); 452 if (preferences.auto_save_draft == 1) 453 setTimeout('auto_save_msg('+new_border_ID+')', autosave_time); 454 371 455 // Salva a pasta da mensagem respondida ou encaminhada: 372 456 var folder_message = Element("input_folder_"+border_ID); … … 596 680 break; 597 681 case "edit": 682 newMessageTab.imapBox[new_border_ID] = folder_message.value 683 newMessageTab.imapUid[new_border_ID] = parseInt(border_ID.substr(0,border_ID.indexOf("_"))); 684 document.getElementById('font_border_id_'+new_border_ID).innerHTML = data.subject; 598 685 data.to = Element("to_values_" + border_ID).value; 599 686 data.to = data.to.replace(/</gi,"<"); … … 610 697 Element("subject_" + new_border_ID).value = data.subject; 611 698 699 var divFiles = Element("divFiles_"+new_border_ID); 700 if (Element("attachments_" + border_ID)){ 701 var attachments = document.getElementById("attachments_" + border_ID).childNodes; 702 for (var i = (attachments.length > 1 ? 1 : 0); i < attachments.length; i++){ 703 var link_attachment = document.createElement("A"); 704 link_attachment.setAttribute("href", attachments[i].href); 705 link_attachment.innerHTML = attachments[i].innerHTML; 706 var tmp = link_attachment.href.replace("javascript:download_attachments(", "").replace(")", ""); 707 var a_tmp = tmp.split(','); 708 tmp = link_attachment.innerHTML.substring(0,link_attachment.innerHTML.lastIndexOf("(")); 709 a_tmp[2] = "'"+tmp.substring(0,tmp.length-1)+"'"; 710 s_tmp = escape(connector.serialize(a_tmp)); 711 divFiles.innerHTML += "<input style='border:0' type='CHECKBOX' name='forwarding_attachments[]' checked value=\""+s_tmp+"\"/>"; 712 divFiles.appendChild(link_attachment); 713 } 714 } 612 715 var body = Element("body_" + new_border_ID); 613 716 body.contentWindow.document.open(); … … 682 785 set_message_flag(msg_number_forwarded.value, 'forwarded'); 683 786 } 684 685 787 delete_border(ID,'true'); 686 788 if(wfolders.alert){ … … 699 801 write_msg(data); 700 802 } 803 if ((! newMessageTab.toPreserve[ID]) && (newMessageTab.imapUid[ID] != 0)) 804 cExecute ("$this.imap_functions.delete_msgs&folder="+newMessageTab.imapBox[ID]+"&msgs_number="+newMessageTab.imapUid[ID],function(data){ return }); 701 805 } 702 806 703 807 function send_message(ID, folder, folder_name){ 808 var save_link = Element("save_message_options"); 809 save_link.onclick = ''; 810 save_link.style.color = '#999'; 811 704 812 ID_tmp = ID; 705 813 706 814 var handler_send_message = function(data){ 707 send_message_return(data, this.ID_tmp); 708 } 709 815 send_message_return(data, this.ID_tmp); // this is a hack to escape quotation form connector bug 816 }; 817 710 818 var textArea = document.createElement("TEXTAREA"); 711 819 textArea.style.display='none'; … … 719 827 input_folder.name = "folder"; 720 828 input_folder.value = folder; 829 var msg_id = document.createElement("INPUT"); 830 msg_id.style.display='none'; 831 msg_id.name = "msg_id"; 832 msg_id.value = newMessageTab.imapUid[ID]; 721 833 722 834 if (is_ie){ … … 730 842 form.appendChild(textArea); 731 843 form.appendChild(input_folder); 844 form.appendChild(msg_id); 732 845 733 846 var _subject = trim(Element("subject_"+ID).value); … … 736 849 return; 737 850 } 738 739 cExecuteForm ("$this.imap_functions.send_mail", form, handler_send_message); 740 } 741 742 function save_msg(border_id, folder_id, folder_name){ 743 var handler_save_msg = function(data){ 744 if(!verify_session(data)) 745 return; 746 if (data.append){ 747 write_msg(get_lang('Your message was save as draft in folder %1.', data.folder_name)); 748 delete_border(data.border_id,'true'); 749 } 750 else 751 write_msg('ERRO saving your message.'); 752 } 753 754 var msg_data = new Array(); 755 if (document.getElementById("to_" + border_id)) 756 msg_data.to = Element("to_" + border_id).value; 757 758 if (document.getElementById("cc_" + border_id)) 759 msg_data.cc = Element("cc_" + border_id).value; 760 761 if (document.getElementById("cco_" + border_id)) 762 msg_data.cco = Element("cco_" + border_id).value; 763 764 if (document.getElementById("subject_" + border_id)) 765 msg_data.subject = Element("subject_" + border_id).value; 766 767 if (document.getElementById("body_" + border_id)) 768 msg_data.body = Element("body_" + border_id).contentWindow.document.body.innerHTML; 769 770 var args = "$this.imap_functions.save_msg"; 771 var body = msg_data.body.replace(/ l/g, "%nbsp;"); 772 body = url_encode(msg_data.body); 773 msg_data.subject = url_encode(msg_data.subject); 774 var params = "folder_id="+folder_id+"&folder_name="+folder_name+"&border_id="+border_id+"&to="+msg_data.to+"&cc="+msg_data.cc+"&cco="+msg_data.cco+"&subject="+msg_data.subject+"&body="+body; 775 cExecute( args, handler_save_msg, params); 776 } 851 852 cExecuteForm ("$this.imap_functions.send_mail", form, handler_send_message, ID); 853 } 854 855 function return_save(data,border_id,folder_name,folder_id,message_id) 856 { 857 var handler_delete_msg = function(data){ refresh(preferences.alert_new_msg); }; 858 RichTextEditor.saveFlag = 1; 859 860 if (! data) 861 write_msg('ERROR saving your message.'); 862 else 863 { 864 newMessageTab.imapUid[border_id] = data.msg_no; 865 newMessageTab.imapBox[border_id] = data.folder_id; 866 867 var newTitle = document.getElementById('subject_'+border_id).value; 868 if (newTitle.length > 18) 869 newTitle = newTitle.substr(18) + '...'; 870 else if (newTitle == '') 871 newTitle = get_lang("No subject"); 872 document.getElementById('font_border_id_'+border_id).innerHTML = newTitle; 873 874 // Replace the embedded images for new uids 875 var mainField = document.getElementById('body_'+border_id).contentWindow; 876 var content_body = mainField.document.getElementsByTagName('body').item(0).innerHTML; 877 var body_images = content_body.match(/msg_num=\d*/g); 878 if (body_images) 879 { 880 for (var i=0; i<body_images.length; i++){ 881 content_body = content_body.replace(body_images[i],"msg_num="+newMessageTab.imapUid[border_id]); 882 } 883 mainField.document.getElementsByTagName('body').item(0).innerHTML = content_body; 884 // This is not just stupid, it refresh screen to avoid broken images 885 mainField.document.getElementsByTagName('body').item(0).innerHTML = mainField.document.getElementsByTagName('body').item(0).innerHTML; 886 } 887 888 //Replace all files to new files 889 var divFiles = Element("divFiles_"+border_id); 890 var divParent = divFiles.parentNode; 891 divParent.removeChild(divFiles); 892 divFiles = document.createElement('DIV'); 893 divFiles.id = "divFiles_"+border_id; 894 divParent.appendChild(divFiles); 895 896 var attach_files = connector.unserialize(data.files); 897 if (attach_files != null) { 898 newMessageTab.countFile[border_id] = attach_files.length; 899 for (att_index = 0; att_index < attach_files.length; att_index++){ 900 901 var link_attachment = document.createElement("A"); 902 var fileName = attach_files[att_index].substr(0,attach_files[att_index].indexOf('_SIZE_')); 903 var fileSize = parseInt(attach_files[att_index].substr(attach_files[att_index].indexOf('_SIZE_')+6))/1024 904 link_attachment.innerHTML = fileName + " ("+parseInt(fileSize)+" kb)"; 905 906 var href = "'"+folder_id+"','"+data.msg_no+"','"+(att_index)+"','"+(att_index+2)+"','base64'"; 907 908 link_attachment.setAttribute("href", "javascript:download_attachments("+href+")"); 909 910 var a_tmp = href.split(','); 911 a_tmp[2] = fileName; 912 s_tmp = escape(connector.serialize(a_tmp)); 913 914 var check_attachment = document.createElement("INPUT"); 915 check_attachment.type = 'CHECKBOX'; 916 check_attachment.name = 'forwarding_attachments[]'; 917 check_attachment.value = s_tmp; 918 919 divFiles.appendChild(check_attachment); 920 divFiles.appendChild(link_attachment); 921 divFiles.appendChild(document.createElement("BR")); 922 923 check_attachment.checked = true; 924 } 925 } 926 if (message_id) 927 cExecute ("$this.imap_functions.delete_msgs&folder="+newMessageTab.imapBox[border_id]+"&msgs_number="+message_id,handler_delete_msg); 928 929 if (preferences.auto_save_draft == 1) 930 setTimeout('auto_save_msg('+border_id+')', autosave_time); 931 932 var save_link = Element("save_message_options"); 933 save_link.onclick = ''; 934 save_link.style.color = '#999'; 935 watch_changes_in_msg(border_id); 936 937 write_msg(get_lang('Your message was save as draft in folder %1.', folder_name)); 938 } 939 } 940 941 function save_msg(border_id){ 942 if (newMessageTab.imapBox[border_id]) //Gets the imap folder 943 var folder_id = newMessageTab.imapBox[border_id]; 944 else 945 var folder_id = "INBOX/"+draftsfolder; 946 947 if (folder_id == 'INBOX') // and folder name from border 948 var folder_name = get_lang(folder_id); 949 else 950 var folder_name = folder_id.substr(6); 951 952 // hack to avoid form connector bug, escapes quotation. Please see #179 953 tmp_border_id=border_id; 954 tmp_folder_name=folder_name; 955 tmp_folder_id=folder_id; 956 message_id = newMessageTab.imapUid[border_id]; 957 var handler_save_msg = function(data){ return_save(data,this.tmp_border_id,this.tmp_folder_name,this.tmp_folder_id,this.message_id); } 958 959 var textArea = document.createElement("TEXTAREA"); 960 textArea.style.display='none'; 961 textArea.name = "body"; 962 body = document.getElementById("body_"+border_id); 963 textArea.value += '<body>\r\n'; 964 textArea.value += body.contentWindow.document.body.innerHTML; 965 textArea.value += '\r\n</body>'; 966 var input_folder = document.createElement("INPUT"); 967 input_folder.style.display='none'; 968 input_folder.name = "folder"; 969 input_folder.value = folder_id; 970 971 if (is_ie){ 972 var i = 0; 973 while (document.forms(i).name != "form_message_"+border_id){i++} 974 form = document.forms(i); 975 } 976 else 977 form = document.forms["form_message_"+border_id]; 978 form.appendChild(textArea); 979 form.appendChild(input_folder); 980 981 cExecuteForm ("$this.imap_functions.save_msg", form, handler_save_msg,border_id); 982 } 983 984 function return_saveas(data,border_id,folder_name) 985 { 986 if(!verify_session(data)) 987 return; 988 if (data.append) 989 { 990 delete_border(border_id,null); 991 write_msg(get_lang('Your message was save as draft in folder %1.', folder_name)); 992 } 993 else 994 write_msg('ERROR saving your message.'); 995 } 996 997 998 function save_as_msg(border_id, folder_id, folder_name){ 999 // hack to avoid form connector bug, escapes quotation. Please see #179 1000 tmp_border_id=border_id; 1001 tmp_folder_name=folder_name; 1002 var handler_save_msg = function(data){ return_saveas(data,this.tmp_border_id,this.tmp_folder_name); } 1003 var textArea = document.createElement("TEXTAREA"); 1004 textArea.style.display='none'; 1005 textArea.name = "body"; 1006 body = document.getElementById("body_"+border_id); 1007 textArea.value += '<body>\r\n'; 1008 textArea.value += body.contentWindow.document.body.innerHTML; 1009 textArea.value += '\r\n</body>'; 1010 1011 var input_folder = document.createElement("INPUT"); 1012 input_folder.style.display='none'; 1013 input_folder.name = "folder"; 1014 input_folder.value = folder_id; 1015 1016 if (is_ie){ 1017 var i = 0; 1018 while (document.forms(i).name != "form_message_"+border_id){i++} 1019 form = document.forms(i); 1020 } 1021 else 1022 form = document.forms["form_message_"+border_id]; 1023 form.appendChild(textArea); 1024 form.appendChild(input_folder); 1025 1026 cExecuteForm ("$this.imap_functions.save_msg", form, handler_save_msg,border_id); 1027 } 1028 777 1029 778 1030 // Get checked messages -
trunk/expressoMail1_2/js/preferences.js
r244 r271 73 73 "<option value='15'>"+get_lang("Big")+"</option>"+ 74 74 "</select></td></tr>"+ 75 "<tr><td> - " + get_lang("Auto save draft") + "?</td>"+ 76 "<td><input type='checkBox' id='auto_save_draft' name='auto_save_draft'></td></tr>"+ 75 77 "<tr><td> - " + get_lang("Use shortcuts?") + "</td>"+ 76 78 "<td><input type='checkBox' id='use_shortcuts' name='use_shortcuts'></td></tr>"+ … … 131 133 txt_signature.value = preferences.signature; 132 134 133 if( preferences.use_shortcuts == 1){Element("use_shortcuts").checked = true;} 135 if( preferences.use_shortcuts == 1) Element("use_shortcuts").checked = true; 136 if( preferences.auto_save_draft == 1) Element("auto_save_draft").checked = true; 134 137 } 135 138 … … 152 155 reload_page = true; 153 156 else if(preferences.use_shortcuts != Element("use_shortcuts").checked) 157 reload_page = true; 158 else if(preferences.auto_save_draft != Element("auto_save_draft").checked) 154 159 reload_page = true; 155 160 … … 166 171 preferences.signature = Element("txt_signature").value; 167 172 preferences.use_shortcuts = Element("use_shortcuts").checked ? 1 : 0; 173 preferences.auto_save_draft = Element("auto_save_draft").checked ? 1 : 0; 174 168 175 var _this = this; 169 176 … … 217 224 218 225 if(! this.prefeW[div.id]) { 219 div.style.height = is_ie ? "3 55px" : "365px";226 div.style.height = is_ie ? "385px" : "370px"; 220 227 div.style.width = "510px"; 221 228 div.style.visibility = "hidden"; -
trunk/expressoMail1_2/js/rich_text_editor.js
r163 r271 1 var newMessageTab = { 2 'imapUid' : [], // Stores the imap email number of current tab 3 'countFile' : [0,0,0,0,0,0,0,0,0,0], // Stores the number of files attached in current tab 4 'imapBox' : [], // Stores the folder name 5 'toPreserve' : [] // Check if the message should be removed from draft after send 6 }; 7 8 var defaultDraftFolder = ''; 9 1 10 function cRichTextEditor(){ 11 this.emwindow = new Array; 2 12 this.editor; 3 13 this.table; 4 14 this.id; 5 15 this.buildEditor(); 16 this.saveFlag = 0; 6 17 } 7 18 … … 151 162 152 163 var buttons = ['bold', 'italic', 'underline', 'forecolor', 'justifyleft', 'justifycenter', 'justifyright', 'justifyfull', 153 'undo', 'redo', 'insertorderedlist', 'insertunorderedlist', 'outdent', 'indent', 'link', 'signature' ];164 'undo', 'redo', 'insertorderedlist', 'insertunorderedlist', 'outdent', 'indent', 'link', 'signature', 'image', 'table']; 154 165 155 166 for (var i=0; i<buttons.length; i++){ … … 166 177 else if (buttons[i] == 'link') 167 178 img.onclick = function () {RichTextEditor.createLink();}; 179 else if (buttons[i] == 'image') 180 img.onclick = function () {RichTextEditor.createImage();}; 181 else if (buttons[i] == 'table') 182 img.onclick = function () {RichTextEditor.createTable();}; 168 183 else 169 184 img.onclick = function () {RichTextEditor.editorCommand(this.id,'');}; … … 181 196 182 197 cRichTextEditor.prototype.editorCommand = function(command, option) { 183 var mainField = document.getElementById(this.editor).contentWindow;184 198 try { 199 var mainField = document.getElementById(this.editor).contentWindow; 185 200 mainField.focus(); 186 201 if (command == 'signature'){ … … 198 213 } 199 214 } 200 else 201 mainField.document.execCommand(command, false, option); 215 else if (command == 'CreateLink') 216 mainField.document.execCommand('CreateLink', false, option); 217 else if (command == 'Table'){ 218 if (is_ie){ 219 var sel = document.selection; 220 if (sel!=null) 221 { 222 var rng = sel.createRange(); 223 if (rng!=null) 224 rng.pasteHTML(option); 225 } 226 } 227 else 228 mainField.document.execCommand('inserthtml', false, option); 229 } 230 else // command == Image 231 mainField.document.execCommand('InsertImage', false, option); 202 232 //mainField.focus(); 203 } catch (e) { }233 } catch (e) { alert(e.description); } 204 234 } 205 235 … … 222 252 this.editorCommand("CreateLink", szURL); 223 253 } 254 } 255 256 // It include the image file in emails body 257 // It saves and attach in drafts folder and open it 258 cRichTextEditor.prototype.addInputFile = function() 259 { 260 var id = this.editor.substr(5); // border_id 261 divFiles = document.getElementById("divFiles_"+id); 262 var countDivFiles = divFiles.childNodes.length + 1; 263 264 var inputFile = document.getElementById('inputFile_img'); 265 var divFiles = document.getElementById('divFiles_'+id); 266 inputFile.id = 'inputFile_'+id +"_"+countDivFiles; 267 inputFile.name = 'file_'+countDivFiles; 268 divFile = document.createElement('DIV'); 269 divFile.appendChild(inputFile); 270 divFiles.appendChild(divFile); 271 272 var form_upload = document.getElementById('form_upload'); 273 form_upload.parentNode.removeChild(form_upload); 274 win.close(); 275 276 if (! validateFileExtension(inputFile.value, inputFile.id , id)) 277 return false; 278 279 RichTextEditor.saveFlag = 0; // See if save function finished 280 save_msg(id); 281 setTimeout("RichTextEditor.insertImgHtml("+id+")",1000); 282 } 283 284 cRichTextEditor.prototype.insertImgHtml = function (id){ 285 if (RichTextEditor.saveFlag == 0) 286 setTimeout("RichTextEditor.insertImgHtml("+id+")",500); 287 else 288 this.editorCommand('Image', './inc/show_embedded_attach.php?msg_folder=INBOX/'+draftsfolder+'&msg_num='+newMessageTab.imapUid[id]+'&msg_part='+(newMessageTab.countFile[id]+1)); 289 // this.editorCommand('Image', '.inc/gotodownload.php?msg_folder="+msg_folder+"&msg_number="+msg_number+"&idx_file="+idx_file+"&msg_part="+msg_part+params')); 290 } 291 292 cRichTextEditor.prototype.insertTableHtml = function (){ 293 var id = this.editor.substr(5); // border_id 294 var rows = document.getElementById('rows').selectedIndex; 295 var cols = document.getElementById('cols').selectedIndex; 296 var insertTable = '<table border="1px"><tbody>'; 297 for (var i = 0; i <= rows; i++){ 298 insertTable += "<tr>"; 299 for (var j = 0; j <= cols; j++) 300 insertTable += "<td> </td>"; 301 insertTable += "</tr>"; 302 } 303 insertTable += "</tbody></table>"; 304 this.editorCommand('Table', insertTable); 305 } 306 307 cRichTextEditor.prototype.createTable = function(){ 308 var form = document.getElementById("table_window"); 309 if (form == null){ 310 form = document.createElement("DIV"); 311 form.id = "table_window"; 312 form.style.visibility = "hidden"; 313 form.style.position = "absolute"; 314 form.style.background = "#eeeeee"; 315 form.style.left = "0px"; 316 form.style.top = "0px"; 317 form.style.width = "0px"; 318 form.style.height = "0px"; 319 document.body.appendChild(form); 320 } 321 322 var form_table = document.createElement("DIV"); 323 form_table.id = "form_table"; 324 form_table.style.position = "absolute"; 325 form_table.style.top = "5px"; 326 form_table.style.left = "5px"; 327 form_table.style.width = "170px"; 328 form_table.style.height = "120px"; 329 form_table.name = get_lang("Insert Table"); 330 form_table.innerHTML = get_lang('Select the table size')+':<br><br>'+ 331 get_lang('Rows')+': '+ get_lang('Cols')+':<br>'+ 332 '<select name="rows" id="rows"><option value="1">1</option>'+ 333 '<option value="2">2</option>'+ 334 '<option value="3">3</option>'+ 335 '<option value="4">4</option>'+ 336 '<option value="5">5</option>'+ 337 '<option value="6">6</option>'+ 338 '<option value="7">7</option>'+ 339 '<option value="8">8</option>'+ 340 '<option value="9">9</option></select> '+ 341 '<select name="cols" id="cols"><option value="1">1</option>'+ 342 '<option value="2">2</option>'+ 343 '<option value="3">3</option>'+ 344 '<option value="4">4</option>'+ 345 '<option value="5">5</option>'+ 346 '<option value="6">6</option>'+ 347 '<option value="7">7</option>'+ 348 '<option value="8">8</option>'+ 349 '<option value="9">9</option></select><br><br>'+ 350 '<input title="Close" value="' + get_lang('Close') + '" type="button" onclick="win.close()"> '+ 351 '<input title="Include" value="' + get_lang('Include') + '" type="button" onclick="RichTextEditor.insertTableHtml();win.close();">'; 352 form.appendChild(form_table); 353 354 this.showWindow(form); 355 } 356 357 cRichTextEditor.prototype.createImage = function(){ 358 var form = document.getElementById("attachment_window"); 359 if (form == null){ 360 form = document.createElement("DIV"); 361 form.id = "attachment_window"; 362 form.style.visibility = "hidden"; 363 form.style.position = "absolute"; 364 form.style.background = "#eeeeee"; 365 form.style.left = "0px"; 366 form.style.top = "0px"; 367 form.style.width = "0px"; 368 form.style.height = "0px"; 369 document.body.appendChild(form); 370 } 371 372 var form_upload = document.createElement("DIV"); 373 form_upload.id = "form_upload"; 374 form_upload.style.position = "absolute"; 375 form_upload.style.top = "5px"; 376 form_upload.style.left = "5px"; 377 form_upload.name = get_lang("Upload File"); 378 form_upload.style.width = "450px"; 379 form_upload.style.height = "75px"; 380 form_upload.innerHTML = get_lang('Select the desired image file')+':<br>'+ 381 '<input name="image_at" maxlength="255" size="50" id="inputFile_img" type="file"><br>' + 382 '<input title="Include" value="' + get_lang('Include') + '"' + 'type="button" onclick="RichTextEditor.addInputFile();"> ' + 383 '<input title="Close" value="' + get_lang('Close') + '"' + 384 ' type="button" onclick="win.close()">'; 385 form.appendChild(form_upload); 386 387 this.showWindow(form); 388 } 389 cRichTextEditor.prototype.showWindow = function (div){ 390 391 if(! div) { 392 return; 393 } 394 395 if(! this.emwindow[div.id]) { 396 div.style.width = div.firstChild.style.width; 397 div.style.height = div.firstChild.style.height; 398 div.style.zIndex = "10000"; 399 var title = div.firstChild.name; 400 var wHeight = div.offsetHeight + "px"; 401 var wWidth = div.offsetWidth + "px"; 402 div.style.width = div.offsetWidth - 5; 403 404 win = new dJSWin({ 405 id: 'win_'+div.id, 406 content_id: div.id, 407 width: wWidth, 408 height: wHeight, 409 title_color: '#3978d6', 410 bg_color: '#eee', 411 title: title, 412 title_text_color: 'white', 413 button_x_img: '../phpgwapi/images/winclose.gif', 414 border: true }); 415 416 this.emwindow[div.id] = win; 417 win.draw(); 418 } 419 else 420 win = this.emwindow[div.id]; 421 win.open(); 224 422 } 225 423 -
trunk/expressoMail1_2/js/search.js
r163 r271 266 266 table.id = "table_resultsearch_" + search_tabs; 267 267 table.width = "100%"; 268 table.borderColorDark = "#bbbbbb"; 269 table.frame = "void"; 270 table.rules = "rows"; 271 table.cellPadding = "0"; 272 table.cellSpacing = "0"; 268 273 269 274 var tbody = document.createElement("TBODY"); … … 275 280 for( var i=0; i < nw_array.length; i++){ 276 281 var tr = document.createElement("TR"); 277 //var color = "#F0F0F0"; 278 //tr.style.background = color; 282 tr.style.height = "30px"; 279 283 tr.className = 'tr_msg_read'; 280 284 … … 326 330 if( j == 3){ 327 331 var subject_encode = url_encode(aux[2]); 332 if (! subject_encode) 333 aux[2] = get_lang("no subject") + "..."; 328 334 td.width = "30%"; 329 335 var td1 = '<div style="width:100%;overflow:hidden"><a href=javascript:void(0) onclick=EsearchE.open_msg(\"' + url_encode(mailbox) + '\",\"' + uid_msg + '\",\"' + subject_encode + '\")>' + aux[2] +'</a></div>'; … … 345 351 } 346 352 } 347 aux.splice(0,(aux.length)); 348 tbody.appendChild(tr); 353 aux.splice(0,(aux.length)); 354 355 subject = tr.firstChild; 356 subject = subject.nextSibling.nextSibling.nextSibling.firstChild.firstChild.innerHTML; 357 // _dragArea.makeDragged(tr, msg_number, subject, true); 358 _dragArea.makeDragged(tr, tr.firstChild.firstChild.id.substr(tr.firstChild.firstChild.id.indexOf(';')+1), subject, true); 359 tbody.appendChild(tr); 349 360 } 350 361 table.appendChild(tbody); … … 376 387 var table_element = document.createElement("TABLE"); 377 388 var tbody_element = document.createElement("TBODY"); 378 table_element.border = 1;379 389 table_element.setAttribute("id", "table_message_header_box"); 380 390 table_element.className = "table_message_header_box"; … … 447 457 content_search.appendChild(div_scroll_result); 448 458 if (span_options) 449 content_search.appendChild(span_options); 459 content_search.appendChild(span_options); 450 460 } 451 461 -
trunk/expressoMail1_2/js/wfolders.js
r197 r271 47 47 wfolders.arrayWin[el.id].close(); 48 48 if (type == 'save'){ 49 save_ msg(border_id, wfolders_tree._selected.id, wfolders_tree._selected.caption);49 save_as_msg(border_id, wfolders_tree._selected.id, wfolders_tree._selected.caption,true); 50 50 } 51 51 else if (type == 'send_and_file'){ -
trunk/expressoMail1_2/preferences.php
r197 r271 53 53 $GLOBALS['phpgw']->template->set_var('checked_shortcuts',''); 54 54 55 if ($GLOBALS['phpgw_info']['user']['preferences']['expressoMail']['auto_save_draft']) 56 $GLOBALS['phpgw']->template->set_var('checked_auto_save_draft','checked'); 57 else 58 $GLOBALS['phpgw']->template->set_var('checked_auto_save_draft',''); 59 55 60 if ($GLOBALS['phpgw_info']['user']['preferences']['expressoMail']['signature']) 56 61 $GLOBALS['phpgw']->template->set_var('text_signature',$GLOBALS['phpgw_info']['user']['preferences']['expressoMail']['signature']); … … 109 114 else 110 115 $GLOBALS['phpgw']->preferences->add('expressoMail','use_shortcuts',$_POST['use_shortcuts']); 116 117 if ($GLOBALS['phpgw_info']['user']['preferences']['expressoMail']['auto_save_draft']) 118 $GLOBALS['phpgw']->preferences->change('expressoMail','auto_save_draft',$_POST['auto_save_draft']); 119 else 120 $GLOBALS['phpgw']->preferences->add('expressoMail','auto_save_draft',$_POST['auto_save_draft']); 111 121 112 122 if ($GLOBALS['phpgw_info']['user']['preferences']['expressoMail']['signature']) … … 161 171 $GLOBALS['phpgw']->template->set_var('lang_font_size',lang('What the font size in the list of messages?')); 162 172 $GLOBALS['phpgw']->template->set_var('lang_use_shortcuts',lang('Use shortcuts?')); 173 $GLOBALS['phpgw']->template->set_var('lang_auto_save_draft',lang('Auto save draft')); 163 174 $GLOBALS['phpgw']->template->set_var('lang_signature',lang('Signature')); 164 175 $GLOBALS['phpgw']->template->set_var('lang_none',lang('None')); -
trunk/expressoMail1_2/setup/setup.inc.php
r197 r271 12 12 $setup_info['expressoMail1_2']['name'] = 'expressoMail1_2'; 13 13 $setup_info['expressoMail1_2']['title'] = 'ExpressoMail 1.2'; 14 $setup_info['expressoMail1_2']['version'] = '1.221 0';14 $setup_info['expressoMail1_2']['version'] = '1.2211'; 15 15 $setup_info['expressoMail1_2']['app_order'] = 2; 16 16 // $setup_info['expressoMail1_2']['tables'][] = 'phpgw_expressoMail1_2'; -
trunk/expressoMail1_2/templates/default/preferences.tpl
r197 r271 98 98 </td> 99 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 </td> 108 </tr> 100 109 101 110 <tr bgcolor="{tr_color2}">
Note: See TracChangeset
for help on using the changeset viewer.