Changeset 8232 for branches/2.5/expressoMail1_2
- Timestamp:
- 10/08/13 16:20:46 (11 years ago)
- Location:
- branches/2.5/expressoMail1_2
- Files:
-
- 25 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2.5/expressoMail1_2/assetic.php
r7919 r8232 47 47 new FileAsset('../prototype/plugins/watermark/jquery.watermarkinput.js'), 48 48 new FileAsset('../prototype/plugins/fileupload/jquery.iframe-transport.js'), 49 new FileAsset('../prototype/plugins/qtip/jquery.qtip-1.0.0-rc3.min.js'), 49 new FileAsset('../prototype/plugins/qtip/jquery.qtip-1.0.0-rc3.min.js'), 50 50 new FileAsset('../prototype/plugins/treeview/jquery.treeview.js'), 51 51 new FileAsset('../prototype/plugins/treeview/lib/jquery.cookie.js'), -
branches/2.5/expressoMail1_2/inc/class.db_functions.inc.php
r7673 r8232 147 147 return $stringDropDownContacts; 148 148 } 149 150 function getContactsByGroupAlias($alias)151 {149 function getContactsByGroupAlias($alias) 150 { 151 /* 152 152 list($alias,$uid) = explode("::",$alias); 153 153 154 $cc_related_ids = $_SESSION['phpgw_info']['expressomail']['user']['cc_related_ids']; 154 155 // Explode personal group, If exists related ids (the user has permission to send email). 156 155 157 if(is_array($cc_related_ids) && $uid){ 156 $owner = array_search($uid,$cc_related_ids); 157 } 158 158 $owner = array_search($uid,$cc_related_ids); 159 }*/ 160 $groups = $this->get_cc_groups(); 161 if ($groups){ 162 $groups = explode(",", $groups); 163 for($ii=0; $ii < count($groups); ++$ii) { 164 $tmp = preg_split("/;|\::/",$groups[$ii]); 165 $relatedGroups[$ii] = array("name" => $tmp[0],"alias" => $tmp[1],"owner" => $tmp[2]); 166 } 167 foreach ($relatedGroups as $key => $value) { 168 if ($value["alias"] == $alias) 169 $owner = $value["owner"]; 170 } 171 if ($owner){ 172 include_once("class.ldap_functions.inc.php"); 173 $ldap = new ldap_functions(); 174 $owner = $ldap->uid2uidnumber($owner); 175 } 176 } 177 159 178 $query = "select C.id_connection, A.names_ordered, C.connection_value from phpgw_cc_contact A, ". 160 179 "phpgw_cc_contact_conns B, phpgw_cc_connections C,phpgw_cc_contact_grps D,phpgw_cc_groups E where ". -
branches/2.5/expressoMail1_2/inc/class.exporteml.inc.php
r7673 r8232 150 150 } 151 151 152 function export_all_byLocalFolder($params){153 $error = false;154 155 if(empty($params['messages'])){156 $file["empty_folder"] = true;157 } else {158 foreach($params['messages'] as $eachMsg){159 $header = "";160 $body = "";161 $tempDir = $this->tempDir;162 163 $this->get_header_byLocalFolder($eachMsg, $header);164 $this->get_body_byLocalFolder($eachMsg, $body);165 $sEMLData = $this->parseEml($header, $body);166 $fileName = $this->createFileEml_by_localFolder($sEMLData, $tempDir,$eachMsg['msg_number']);167 168 if(!$fileName){169 $error = true;170 break;171 } else172 $fileNames .= "\"".$fileName."\" ";173 }174 175 $nameFileZip = 'False';176 if($fileNames && !$error) {177 $nameFileZip = $this->createFileZip($fileNames, $tempDir);178 ($nameFileZip) ? ($file = $tempDir.'/'.$nameFileZip) : ($file = false);179 } else180 $file = false;181 }182 183 return $file;184 185 }186 187 function get_header_byLocalFolder($eachMsg, &$header){188 $header = <<<header189 MIME-Version: 1.0190 Content-Type: text/html; charset=ISO-8859-1191 Content-Transfer-Encoding: quoted-printable192 From: "{$eachMsg['from']['name']}" <{$eachMsg['from']['email']}>193 To: {$eachMsg['to']['email']}194 Subject: {$eachMsg['subject']}195 Message-Id: {$eachMsg['msg_number']}196 Date: {$eachMsg['date']}197 header;198 }199 200 function get_body_byLocalFolder($eachMsg, &$body){201 $body = $eachMsg['msg_sample']['body'];202 }203 152 204 153 function export_all($params){ -
branches/2.5/expressoMail1_2/inc/class.imap_functions.inc.php
r8114 r8232 42 42 var $useCache = false; 43 43 var $expirationCache = false; 44 44 var $msgIds = array();// Usado para guardar o messagesIds 45 45 46 46 function imap_functions (){ … … 233 233 ++$i; 234 234 } 235 236 $filter = array('AND', array('=', 'folderName', $folder), array('IN','messageNumber', $sort_array_msg)); 237 $followupflagged = Controller::find( 238 array('concept' => 'followupflagged'), 239 false, 240 array('filter' => $filter, 'criteria' => array('deepness' => '2')) 241 ); 242 $labeleds = Controller::find( 243 array('concept' => 'labeled'), 244 false, 245 array('filter' => $filter, 'criteria' => array('deepness' => '2')) 246 ); 247 $sort_array_msg_count = count($sort_array_msg); 248 for($i=0; $i<$sort_array_msg_count; ++$i){ 249 if(!isset($return[$i]['msg_number'])) 250 continue; 251 252 $numFlags = count($followupflagged); 253 for($ii=0; $ii<$numFlags; ++$ii){ 254 if($return[$i]['msg_number'] == $followupflagged[$ii]['messageNumber']){ 255 $followupflag = Controller::read( array( 'concept' => 'followupflag', 'id' => $followupflagged[$ii]['followupflagId'] )); 256 $return[$i]['followupflagged'] = $followupflagged[$ii]; 257 $return[$i]['followupflagged']['followupflag'] = $followupflag; 258 break; 259 } 260 } 261 $numLabels = count($labeleds); 262 for($ii=0; $ii<$numLabels; ++$ii){ 263 if($return[$i]['msg_number'] == $labeleds[$ii]['messageNumber']){ 264 $labels = Controller::read( array( 'concept' => 'label', 'id' => $labeleds[$ii]['labelId'])); 265 $return[$i]['labels'][$labeleds[$ii]['labelId']] = $labels; 266 } 267 } 268 } 235 if($_SESSION['phpgw_info']['user']['preferences']['expressoMail']['use_followupflags_and_labels'] == "1") 236 { 237 $filter = array('AND', array('=', 'folderName', $folder), array('IN','messageNumber', $sort_array_msg)); 238 $followupflagged = Controller::find( 239 array('concept' => 'followupflagged'), 240 false, 241 array('filter' => $filter, 'criteria' => array('deepness' => '2')) 242 ); 243 $labeleds = Controller::find( 244 array('concept' => 'labeled'), 245 false, 246 array('filter' => $filter, 'criteria' => array('deepness' => '2')) 247 ); 248 $sort_array_msg_count = count($sort_array_msg); 249 for($i=0; $i<$sort_array_msg_count; ++$i){ 250 if(!isset($return[$i]['msg_number'])) 251 continue; 252 253 $numFlags = count($followupflagged); 254 for($ii=0; $ii<$numFlags; ++$ii){ 255 if($return[$i]['msg_number'] == $followupflagged[$ii]['messageNumber']){ 256 $followupflag = Controller::read( array( 'concept' => 'followupflag', 'id' => $followupflagged[$ii]['followupflagId'] )); 257 $return[$i]['followupflagged'] = $followupflagged[$ii]; 258 $return[$i]['followupflagged']['followupflag'] = $followupflag; 259 break; 260 } 261 } 262 $numLabels = count($labeleds); 263 for($ii=0; $ii<$numLabels; ++$ii){ 264 if($return[$i]['msg_number'] == $labeleds[$ii]['messageNumber']){ 265 $labels = Controller::read( array( 'concept' => 'label', 'id' => $labeleds[$ii]['labelId'])); 266 $return[$i]['labels'][$labeleds[$ii]['labelId']] = $labels; 267 } 268 } 269 } 270 } 269 271 } 270 272 $return['num_msgs'] = $num_msgs; 271 } else { 273 } 274 else 275 { 272 276 $num_msgs = imap_num_msg($this->mbox); 273 277 $sort_array_msg = $this-> get_msgs($folder, $sort_box_type, $search_box_type, $sort_box_reverse,$msg_range_begin,$num_msgs); 274 278 275 276 279 $return['tot_unseen'] = 0; 277 280 $i = 0; 278 281 279 if(is_array($sort_array_msg)){ 280 281 foreach($sort_array_msg as $msg_number => $value) 282 { 283 $temp = $this->get_info_head_msg($msg_number); 284 if(!$temp) 285 return false; 286 287 if($temp['Unseen'] == 'U' || $temp['Recent'] == 'N'){ 288 $return['tot_unseen']++; 289 } 290 291 if($i <= ($msg_range_end-$msg_range_begin)) 292 $return[$i] = $temp; 293 ++$i; 294 } 295 } 296 $return['num_msgs'] = count($sort_array_msg)+($msg_range_begin-1); 282 if(is_array($sort_array_msg)) 283 { 284 foreach($sort_array_msg as $msg_number => $value) 285 { 286 $temp = $this->get_info_head_msg($msg_number); 287 if(!$temp) 288 return false; 289 290 if($temp['Unseen'] == 'U' || $temp['Recent'] == 'N') 291 $return['tot_unseen']++; 292 293 if($i <= ($msg_range_end-$msg_range_begin)) 294 $return[$i] = $temp; 295 296 ++$i; 297 297 } 298 299 return $return; 298 } 299 300 $return['num_msgs'] = count($sort_array_msg)+($msg_range_begin-1); 301 } 302 303 $return['messagesIds'] = $this->msgIds; 304 return $return; 300 305 } 301 306 … … 458 463 $return['attachment'] = ( preg_match('/((Content-Disposition:(.)*([\r\n\s]*filename))|(Content-Type:(.)*([\r\n\s]*name)))/i', $mimeBody) ) ? '1' : '0'; //Verifica se a anexos na mensagem 459 464 $return['reply_toaddress'] = isset($header->reply_toaddress) ? self::decodeMimeString($header->reply_toaddress) : ''; 460 $return['flag'] = $header->Unseen.$header->Recent.$header->Flagged.$header->Draft.$header->Answered.$header->Deleted.( $return['attachment'] === '1' ? 'T': '' ); 461 462 if (!empty($header->to)){ 465 $return['flag'] = $header->Unseen. 466 $header->Recent. 467 ($header->Flagged == 'F' || !( preg_match('/importance *: *(.*)\r/i', $mimeHeader , $importance) === 0 )? 'F' : ''). 468 $header->Draft. 469 $header->Answered. 470 $header->Deleted. 471 ( $return['attachment'] === '1' ? 'T': '' ); 472 473 if (!empty($header->to)){ 463 474 foreach ($header->to as $i => $v){ 464 475 $return['to'][$i] = self::formatMailObject( $v ); … … 592 603 if (zip_entry_open($zip, $zip_entry, "r")) { 593 604 $email = zip_entry_read($zip_entry, zip_entry_filesize($zip_entry)); 594 595 /*Caso mensagens vierem com quebras de linha diferentes do esperado, como por exemplo, 596 mensagens exportadas pelo MailArchiver, é preciso corrigir.*/ 597 $email = str_replace("\r\n", "\n", $email); 598 $email = str_replace("\n", "\r\n", $email); 599 605 606 /*Caso mensagens vierem com quebras de linha diferentes do esperado, como por exemplo, 607 mensagens exportadas pelo MailArchiver, é preciso corrigir.*/ 608 $email = str_replace("\r\n", "\n", $email); 609 $email = str_replace("\n", "\r\n", $email); 610 600 611 $status = @imap_append($this->mbox, 601 612 "{".$this->imap_server.":".$this->imap_port.$this->imap_options."}".$params["folder"], … … 620 631 }else if(substr($filename,strlen($filename)-4)==".eml") { 621 632 $email = implode("",file($params['FILES'][0]['tmp_name'])); 622 623 /*Caso mensagens vierem com quebras de linha diferentes do esperado, como por exemplo, 624 mensagens exportadas pelo MailArchiver, é preciso corrigir.*/ 625 $email = str_replace("\r\n", "\n", $email); 626 $email = str_replace("\n", "\r\n", $email); 627 633 634 /*Caso mensagens vierem com quebras de linha diferentes do esperado, como por exemplo, 635 mensagens exportadas pelo MailArchiver, é preciso corrigir.*/ 636 $email = str_replace("\r\n", "\n", $email); 637 $email = str_replace("\n", "\r\n", $email); 638 628 639 $status = imap_append($this->mbox,"{".$this->imap_server.":".$this->imap_port.$this->imap_options."}".$params["folder"],$email); 629 640 … … 954 965 955 966 $content .= $this->decodeMailPart($part->body,$part->ctype_parameters['charset']); 967 $i = -1; 956 968 } 957 969 … … 962 974 963 975 $content .= '<pre>'. htmlentities($this->decodeMailPart($part->body,$part->ctype_parameters['charset'],false)).'</pre>'; 976 $i = -1; 964 977 } 965 if(strtolower($part->ctype_secondary) == 'calendar')966 $content.= $this->builderMsgCalendar($this->decodeMailPart($part->body, $part->ctype_parameters['charset']));967 978 // Comentado para tratamento de e-mail multipart alternative com html e ical. Parseava o ical e ignorava o html. 979 //if(strtolower($part->ctype_secondary) == 'calendar') 980 // $content.= $this->builderMsgCalendar($this->decodeMailPart($part->body, $part->ctype_parameters['charset'])); 968 981 } 969 982 970 $i = -1;971 983 break; 972 984 973 985 case 'multipart': 974 986 975 if(strtolower($part->ctype_secondary) == 'alternative' ) //Unico formato multipart suportado, escapa os outros976 {977 if($printHeader)978 $content .= $this->builderMsgHeader($part);979 980 $this->builderMsgBody($part,$content);981 982 $i = -1;983 }984 985 987 if(strtolower($part->ctype_secondary) == 'alternative' ) //Unico formato multipart suportado, escapa os outros 988 { 989 if($printHeader) 990 $content .= $this->builderMsgHeader($part); 991 992 $this->builderMsgBody($part,$content); 993 994 $i = -1; 995 } 996 997 break; 986 998 987 999 case 'message': … … 1211 1223 1212 1224 $return['msg_number'] = $msg_number.$plus_id; 1213 $return['msg_folder'] = mb_convert_encoding( $msg_folder, "ISO-8859-1", "UTF-8" ); 1214 //isset($params['decoded']) ? mb_convert_encoding( $msg_folder, "ISO-8859-1", "UTF-8" ) : $msg_folder; 1225 $return['msg_folder'] = mb_convert_encoding( $msg_folder, "ISO-8859-1", "UTF-8" ); 1226 //isset($params['decoded']) ? mb_convert_encoding( $msg_folder, "ISO-8859-1", "UTF-8" ) : $msg_folder; 1215 1227 1216 1228 … … 1460 1472 } 1461 1473 $return['alarm'] = $alarm; 1462 1474 1463 1475 return $return; 1464 1476 } … … 2186 2198 function delete_msgs($params) 2187 2199 { 2188 2189 2200 $folder = $params['folder']; 2190 2201 $folder = mb_convert_encoding($folder, "UTF7-IMAP","ISO-8859-1"); 2191 2202 $msgs_number = explode(",",$params['msgs_number']); 2203 2192 2204 if(array_key_exists('border_ID' ,$params)) 2193 2205 $border_ID = $params['border_ID']; … … 2205 2217 $mbox_stream = @imap_open("{".$this->imap_server.":".$this->imap_port.$this->imap_options."}".$folder, $this->username, $this->password) or die(serialize(array('imap_error' => $this->parse_error(imap_last_error())))); 2206 2218 2207 2219 foreach ($msgs_number as $msg_number) 2208 2220 { 2209 2221 if (imap_delete($mbox_stream, $msg_number, FT_UID)); … … 2650 2662 function ren_mailbox($arr) 2651 2663 { 2652 $namebox = $arr['current']; 2653 $path_delimiter = strrpos($namebox,$this->imap_delimiter)+1; 2654 $base_path = substr($namebox,0,$path_delimiter); 2655 $rename = preg_split("/\/|\./",substr($arr['rename'], $path_delimiter)); 2656 $new_box = array_shift($rename); 2657 $subfolders = $rename; 2664 $namebox = $arr['current']; 2665 $path_delimiter = strrpos($namebox,$this->imap_delimiter)+1; 2666 $base_path = substr($namebox,0,$path_delimiter); 2667 $rename = preg_split("/\/|\./",substr($arr['rename'], $path_delimiter)); 2668 $new_box = array_shift($rename); 2669 $subfolders = $rename; 2658 2670 $imap_server = $_SESSION['phpgw_info']['expressomail']['email_server']['imapServer']; 2659 2671 $mbox_stream = $this->open_mbox(); … … 2666 2678 $result = imap_last_error(); 2667 2679 } 2668 /*Cria as subpastas*/ 2669 if (is_array($subfolders)){ 2670 $child = $new_box.$this->imap_delimiter; 2671 $subfolders_count = count($subfolders); 2672 for($i =0; $i < $subfolders_count; ++$i){ 2673 $child .= ($subfolders[$i] ? $subfolders[$i] : $this->functions->getLang("New Folder")); 2674 $namebox = mb_convert_encoding($child, "UTF7-IMAP", "UTF-8"); 2675 $result = "Ok"; 2676 if(!imap_createmailbox($mbox_stream,"{".$imap_server."}$namebox")) 2677 { 2678 $result = imap_last_error(); 2679 } 2680 $child .=$this->imap_delimiter; 2681 } 2682 } 2683 2680 /*Cria as subpastas*/ 2681 if (is_array($subfolders)){ 2682 $child = $new_box.$this->imap_delimiter; 2683 $subfolders_count = count($subfolders); 2684 for($i =0; $i < $subfolders_count; ++$i){ 2685 $child .= ($subfolders[$i] ? $subfolders[$i] : $this->functions->getLang("New Folder")); 2686 $namebox = mb_convert_encoding($child, "UTF7-IMAP", "UTF-8"); 2687 $result = "Ok"; 2688 if(!imap_createmailbox($mbox_stream,"{".$imap_server."}$namebox")) 2689 { 2690 $result = imap_last_error(); 2691 } 2692 $child .=$this->imap_delimiter; 2693 } 2694 } 2695 2684 2696 if($mbox_stream) 2685 2697 imap_close($mbox_stream); … … 2711 2723 return $return; 2712 2724 } 2713 2725 2726 /*Método utilizado para retornar dados da mensagem local (desarquivada na pasta lixeira) 2727 para poder ser anexada à mensagem.*/ 2728 function get_info_msg_archiver($params){ 2729 $folder = "INBOX".$this->imap_delimiter.$this->folders['trash']; 2730 $mbox_stream = $this->open_mbox($folder); 2731 $id = $params['idMsgs']; 2732 2733 $name = imap_headerinfo($mbox_stream, imap_msgno($mbox_stream, $id)); 2734 $return[] = array( 2735 'uid' => $id, 2736 'folder' => "archiver", 2737 'type' => "imapMSG", 2738 'name' => base64_encode($name->subject.".eml") 2739 ); 2740 2741 return json_encode($return); 2742 } 2743 2714 2744 function send_mail($params) { 2715 2745 require_once dirname(__FILE__) . '/../../services/class.servicelocator.php'; … … 2934 2964 $arr_new_folder['base_path'] = $base_path; 2935 2965 2936 $this->create_mailbox($arr_new_folder); 2966 $this->create_mailbox($arr_new_folder); 2937 2967 $has_new_folder = true; 2938 2968 $folder = $newfolder; … … 2954 2984 2955 2985 $from = $fromaddress ? ('"' . $fromaddress[0] . '" <' . $fromaddress[1] . '>') : ('"' . $_SESSION['phpgw_info']['expressomail']['user']['firstname'] . ' ' . $_SESSION['phpgw_info']['expressomail']['user']['lastname'] . '" <' . $_SESSION['phpgw_info']['expressomail']['user']['email'] . '>'); 2956 $mailService->setFrom( $from);2986 $mailService->setFrom( mb_convert_encoding($from, "ISO-8859-1","UTF-8, ISO-8859-1")); 2957 2987 2958 2988 $mailService->addHeaderField('Reply-To', !!$replytoaddress ? $replytoaddress : $from); … … 3004 3034 $isHTML = ( isset($params['type']) && $params['type'] == 'html' )? true : false; 3005 3035 3006 3007 // TODO - tratar mensagem criptografada e remover o AND false abaixo 3036 // TODO - tratar mensagem criptografada e remover o AND false abaixo 3008 3037 if (($encrypt && $signed && $params['smime']) || ($encrypt && !$signed) AND false) { // a msg deve ser enviada cifrada... 3009 3038 $email = $this->add_recipients_cert($toaddress . ',' . $ccaddress . ',' . $ccoaddress); … … 3103 3132 { 3104 3133 $value = json_decode($value, true); 3134 if($value["folder"] == "archiver"){ 3135 $value['folder'] = "INBOX/Trash"; 3136 } 3105 3137 3106 3138 switch ($value['type']) { … … 3110 3142 if(strstr($body,'src="./inc/get_archive.php?msgFolder='.$value['folder'].'&msgNumber='.$value['uid'].'&indexPart='.$value['part'].'"') !== false)//Embeded IMG 3111 3143 { 3112 $body = str_ireplace('src="./inc/get_archive.php?msgFolder='.$value['folder']. '&msgNumber='.$value['uid'].'&indexPart='.$value['part'].'"' , 'src="'.$att['name'].'"', $body);3144 $body = str_ireplace('src="./inc/get_archive.php?msgFolder='.$value['folder']. '&msgNumber='.$value['uid'].'&indexPart='.$value['part'].'"' , 'src="'.$att['name'].'"', $body); 3113 3145 $mailService->addStringImage($att['source'], $att['type'],mb_convert_encoding($att['name'], 'ISO-8859-1' , 'UTF-8,ISO-8859-1') ); 3114 3146 } … … 3124 3156 3125 3157 $mailService->addStringAttachment($rawmsg, mb_convert_encoding(base64_decode($value['name']), 'ISO-8859-1' , 'UTF-8,ISO-8859-1'), 'message/rfc822', '7bit', 'attachment' ); 3158 /*envia o anexo para o email*/ 3126 3159 $message_size_total += mb_strlen($rawmsg); //Adiciona o tamanho do anexo a variavel que controlao tamanho da msg. 3127 3160 unset($rawmsg); … … 3419 3452 $sort = array(); 3420 3453 } 3454 3455 $this->msgIds = $sort; 3456 3421 3457 if ($slice_array) 3422 3458 $sort = array_slice($sort,$offsetBegin-1,$offsetEnd-($offsetBegin-1),true); … … 3556 3592 } 3557 3593 3594 function verifyShareFolder($params){ 3595 $folder = $params['folder']; 3596 3597 if (substr($folder,0,4) == 'user'){ 3598 $acl = $this->getacltouser($folder, isset($params['decoded'])); 3599 3600 $acl_share_delete = (stripos($acl,'t') !== false && stripos($acl,'e') !== false); 3601 3602 if (!$acl_share_delete) { 3603 $return['status'] = false; 3604 return $return; 3605 } 3606 } 3607 } 3558 3608 function move_messages($params) 3559 3609 { … … 3676 3726 } 3677 3727 3678 function set_messages_flag_from_search($params){ 3728 function set_messages_flag_from_search($params){ 3679 3729 $error = False; 3680 3730 $fileNames = ""; … … 4404 4454 $elem['uid'] = $new_search; 4405 4455 /* compare dates in ordering */ 4406 $elem['udatecomp'] = substr ($elem['udate'], -4) ."-". substr ($elem['udate'], 3, 2) ."-". substr ($elem['udate'], 0, 2); 4407 4408 $filter = array('AND', array('=', 'folderName', $name_box), array('=','messageNumber', $new_search)); 4409 $followupflagged = Controller::find( 4410 array('concept' => 'followupflagged'), 4411 false, 4412 array('filter' => $filter, 'criteria' => array('deepness' => '2')) 4413 ); 4414 4415 if(isset($followupflagged[0]['followupflagId'])) 4416 { 4417 $followupflag = Controller::read( array( 'concept' => 'followupflag', 'id' => $followupflagged[0]['followupflagId'] )); 4418 $followupflagged[0]['followupflag'] = $followupflag; 4419 $elem['followupflagged'] = $followupflagged[0]; 4420 4421 } 4422 $labeleds = Controller::find( 4423 array('concept' => 'labeled'), 4424 false, 4425 array('filter' => $filter, 'criteria' => array('deepness' => '2')) 4426 ); 4427 foreach ($labeleds as $e){ 4428 $labels = Controller::read( array( 'concept' => 'label', 'id' => $e['labelId'])); 4429 $elem['labels'][$e['labelId']] = $labels; 4430 } 4456 $elem['udatecomp'] = substr ($elem['udate'], -4) ."-". substr ($elem['udate'], 3, 2) ."-". substr ($elem['udate'], 0, 2); 4457 if($_SESSION['phpgw_info']['user']['preferences']['expressoMail']['use_followupflags_and_labels'] == "1") 4458 { 4459 $filter = array('AND', array('=', 'folderName', $name_box), array('=','messageNumber', $new_search)); 4460 $followupflagged = Controller::find( 4461 array('concept' => 'followupflagged'), 4462 false, 4463 array('filter' => $filter, 'criteria' => array('deepness' => '2')) 4464 ); 4465 4466 if(isset($followupflagged[0]['followupflagId'])) 4467 { 4468 $followupflag = Controller::read( array( 'concept' => 'followupflag', 'id' => $followupflagged[0]['followupflagId'] )); 4469 $followupflagged[0]['followupflag'] = $followupflag; 4470 $elem['followupflagged'] = $followupflagged[0]; 4471 4472 } 4473 $labeleds = Controller::find( 4474 array('concept' => 'labeled'), 4475 false, 4476 array('filter' => $filter, 'criteria' => array('deepness' => '2')) 4477 ); 4478 foreach ($labeleds as $e){ 4479 $labels = Controller::read( array( 'concept' => 'label', 'id' => $e['labelId'])); 4480 $elem['labels'][$e['labelId']] = $labels; 4481 } 4482 } 4431 4483 $retorno[] = $elem; 4432 4484 } … … 4460 4512 $arrayRetorno['data'] = $pageret; 4461 4513 $arrayRetorno['currentTab'] = $params['current_tab']; 4462 4514 return ($pageret) ? $arrayRetorno : 'none'; 4463 4515 } 4464 4516 … … 4546 4598 { 4547 4599 $folder = str_replace($serverString, "", imap_utf7_decode($val->name)); 4548 //$folder = str_replace("&-", "&", $folder); 4549 $trashFolder = explode($this->imap_delimiter,$folder); 4550 $acls = ($trashFolder[count($trashFolder) - 1] == "Trash") ? $value['acls']."i" : $value['acls']; 4551 $folder = imap_utf7_encode($folder);4552 imap_setacl ($mbox_stream, $folder, "$user", $acls); 4600 //$folder = str_replace("&-", "&", $folder); 4601 $trashFolder = explode($this->imap_delimiter,$folder); 4602 $acls = ($trashFolder[count($trashFolder) - 1] == "Trash") ? $value['acls']."i" : $value['acls']; 4603 $folder = imap_utf7_encode($folder); 4604 imap_setacl ($mbox_stream, $folder, "$user", $acls); 4553 4605 } 4554 4606 } … … 4909 4961 $insert = $this->insert_email($source,$dest_folder,$timestamps[$index],$flags[$index]); 4910 4962 4963 $return['idsMsg'] = $insert['msg_no']; 4911 4964 if($insert['error']) 4912 4965 { … … 5070 5123 foreach ($subject as $tmp) 5071 5124 $return['msgs'][$i]['subject'] .= mb_convert_encoding($tmp->text, 'UTF-8', 'UTF-8 , ISO-8859-1'); 5072 5073 $filter = array('AND', array('=', 'folderName', $folder), array('=','messageNumber', $v)); 5074 $followupflagged = Controller::find( 5075 array('concept' => 'followupflagged' , 'folder' => $folder ), 5076 false, 5077 array('filter' => $filter, 'criteria' => array('deepness' => '2')) 5078 ); 5079 5080 if(isset($followupflagged[0]['followupflagId'])) 5081 { 5082 $followupflag = Controller::read( array( 'concept' => 'followupflag', 'id' => $followupflagged[0]['followupflagId'] )); 5083 $followupflagged[0]['followupflag'] = $followupflag; 5084 $return['msgs'][$i]['followupflagged'] = $followupflagged[0]; 5085 5086 } 5087 $labeleds = Controller::find( 5088 array('concept' => 'labeled'), 5089 false, 5090 array('filter' => $filter, 'criteria' => array('deepness' => '2')) 5091 ); 5092 if(is_array($labeleds)) 5093 foreach ($labeleds as $e){ 5094 $labels = Controller::read( array( 'concept' => 'label', 'id' => $e['labelId'])); 5095 $return['msgs'][$i]['labels'][$e['labelId']] = $labels; 5096 } 5125 5126 5127 if($_SESSION['phpgw_info']['user']['preferences']['expressoMail']['use_followupflags_and_labels'] == "1") 5128 { 5129 5130 $filter = array('AND', array('=', 'folderName', $folder), array('=','messageNumber', $v)); 5131 $followupflagged = Controller::find( 5132 array('concept' => 'followupflagged' , 'folder' => $folder ), 5133 false, 5134 array('filter' => $filter, 'criteria' => array('deepness' => '2')) 5135 ); 5136 5137 if(isset($followupflagged[0]['followupflagId'])) 5138 { 5139 $followupflag = Controller::read( array( 'concept' => 'followupflag', 'id' => $followupflagged[0]['followupflagId'] )); 5140 $followupflagged[0]['followupflag'] = $followupflag; 5141 $return['msgs'][$i]['followupflagged'] = $followupflagged[0]; 5142 5143 } 5144 $labeleds = Controller::find( 5145 array('concept' => 'labeled'), 5146 false, 5147 array('filter' => $filter, 'criteria' => array('deepness' => '2')) 5148 ); 5149 if(is_array($labeleds)) 5150 foreach ($labeleds as $e){ 5151 $labels = Controller::read( array( 'concept' => 'label', 'id' => $e['labelId'])); 5152 $return['msgs'][$i]['labels'][$e['labelId']] = $labels; 5153 } 5154 } 5155 5097 5156 $mimeBody = imap_body( $this->mbox, $v , FT_UID|FT_PEEK ); 5098 5157 $return['msgs'][$i]['flag'] = ' '; 5099 5158 $return['msgs'][$i]['flag'] .= $msg->Unseen ? $msg->Unseen : ''; 5100 $return['msgs'][$i]['flag'] .= $msg->Recent ? $msg->Recent : ''; 5159 $return['msgs'][$i]['flag'] .= $msg->Recent ? $msg->Recent : ''; 5101 5160 $return['msgs'][$i]['flag'] .= $msg->Draft ? $msg->Draft : ''; 5102 5161 $return['msgs'][$i]['flag'] .= $msg->Answered ? $msg->Answered : ''; … … 5159 5218 $nMsgs[] = $v; 5160 5219 } 5161 $return['msgs'] = $nMsgs; 5162 5163 $return = json_encode($return); 5220 $return['msgs'] = $nMsgs; 5221 5222 $return = json_encode($return); 5164 5223 $return = base64_encode($return); 5165 5224 5166 5225 return $return; 5167 5226 } … … 5227 5286 function searchSieveRule( $params ) 5228 5287 { 5229 5230 $imap = $this->open_mbox( 'INBOX' ); 5288 $imap = $this->open_mbox( $params['folder']['criteria'] ? $params['folder']['criteria'] : 'INBOX' ); 5231 5289 $msgs = imap_sort( $imap , SORTDATE , 0 , SE_UID); 5232 5290 5233 5291 $rr = array(); 5234 5292 5235 5293 if(isset($params['from'])) $rr['from'] = array(); 5236 5294 if(isset($params['to'])) $rr['to'] = array(); 5237 5295 if(isset($params['subject'])) $rr['subject'] = array(); 5238 if(isset($params['body'])) $rr['body'] = array(); 5239 if(isset($params['size'])) $rr['size'] = array(); 5240 5296 if(isset($params['body'])) $rr['body'] = array(); 5297 if(isset($params['size'])) $rr['size'] = array(); 5298 5299 //$params['search'] = mb_convert_encoding($params['search'], 'UTF-8',mb_detect_encoding($params['search'].'x', 'UTF-8, ISO-8859-1')); 5300 5241 5301 foreach ($msgs as $i => $v) 5242 5302 { … … 5264 5324 5265 5325 if(isset($params['to'])) 5266 { 5326 { 5267 5327 $tos = $msg->to; 5268 5328 $val = ''; … … 5284 5344 5285 5345 } 5286 5346 5287 5347 if($this->filterCheck( $val , $params['to']['criteria'] , $params['to']['filter'] )) 5288 5348 $rr['to'][] = $v; … … 5294 5354 $subject = imap_mime_header_decode($msg->subject); 5295 5355 foreach ($subject as $tmp) 5296 $ss .= $tmp->text;5356 $ss .= ($tmp->charset == "default") ? $tmp->text : utf8_encode($tmp->text); 5297 5357 5298 5358 if($this->filterCheck($ss , $params['subject']['criteria'] , $params['subject']['filter'] )) … … 5302 5362 if(isset($params['body'])) 5303 5363 { 5304 $this->mbox = $this->open_mbox( 'INBOX' );5305 $b = $this->get_body_msg( $v , 'INBOX' );5306 5307 if( $this->filterCheck( $b['body'], $params['body']['criteria'] , $params['body']['filter'] ))5364 $this->mbox = $this->open_mbox( $params['folder']['criteria'] ? $params['folder']['criteria'] : 'INBOX' ); 5365 $b = $this->get_body_msg( $v , $params['folder']['criteria'] ? $params['folder']['criteria'] : 'INBOX' ); 5366 5367 if( $this->filterCheck( mb_convert_encoding(html_entity_decode($b['body']), 'UTF-8',mb_detect_encoding(html_entity_decode($b['body']).'x', 'UTF-8, ISO-8859-1')) , $params['body']['criteria'] , $params['body']['filter'] )) 5308 5368 $rr['body'][] = $v; 5309 5369 5310 5370 unset($b); 5311 5371 } … … 5320 5380 $rrr = array(); 5321 5381 $init = true; 5322 5323 5324 5382 foreach ($rr as $i => $v) 5325 { 5383 { 5326 5384 if(count($rrr) == 0 && $init === true) 5327 5385 $rrr = $v; 5328 5386 else if($params['isExact'] == 'yes') 5329 5387 $rrr = array_intersect($rrr , $v); 5330 5388 else 5331 5389 $rrr = array_unique(array_merge($rrr , $v)); 5332 5333 } 5334 5390 } 5335 5391 5336 5392 // if($params['page'] && $params['rows']) … … 5403 5459 $ret[$msg][] = imap_mail_copy($imap,$msg,$proc['value'], CP_UID); 5404 5460 else 5461 { 5405 5462 /* Está sempre copiando a mensagem para a pasta destino */ 5406 5463 //$ret[$msg][] = imap_mail_move($imap,$msg,$proc['parameter'], CP_UID); 5407 5464 $ret[$msg][] = imap_mail_move($imap,$msg,$proc['parameter'], CP_UID); 5465 imap_expunge($imap); 5466 } 5408 5467 break; 5409 5468 case 'redirect': -
branches/2.5/expressoMail1_2/inc/class.ldap_functions.inc.php
r8172 r8232 499 499 500 500 foreach($info_return as &$value){ 501 $value['type_contact'] = "G";502 501 if (is_array($value)) 502 $value['type_contact'] = "G"; 503 503 //Converte a descrição dos filtros para ISO8859 corrigindo inconsitências com caractéres especiais 504 504 if(isset($value['vacationinfo']) && isset($value['vacationinfo'][0]) && $value['vacationinfo'][0] != '') -
branches/2.5/expressoMail1_2/inc/hook_settings.inc.php
r8166 r8232 150 150 signatures[default_signature].replace( /\\n/g, "<br>" ); 151 151 } 152 if (document.getElementById( "signature" ).value != "") 153 document.getElementById( "signature" ).value = encode64(document.getElementById( "signature" ).value);152 if (document.getElementById( "signature" ).value != "") 153 document.getElementById( "signature" ).value = encode64(document.getElementById( "signature" ).value); 154 154 document.getElementById( "signatures" ).value = toJSON( signatures ); 155 155 document.getElementById( "signature_types" ).value = toJSON( types ); … … 270 270 return output.toString(); 271 271 } 272 function normalizerSignature(values){ 273 var value = {}; 274 for( key in values ){ 275 value[isEncoded64(key) ? decode64(key) : key] = values[key]; 276 } 277 return value; 278 } 279 /*Verifica se a string input esta em Base 64*/ 280 function isEncoded64(input){ 281 var baseStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; 282 var encoded = true; 283 if ( (input.length % 4) != 0) 284 return false; 285 for(var i=0; i<input.length; i++){ 286 if ( baseStr.indexOf(input[i]) < 0 ){ 287 encoded = false; 288 break; 289 } 290 } 291 return encoded; 272 function normalizerSignature(values){ 273 274 var value = {}; 275 276 for( key in values ){ 277 278 value[isEncoded64(key) ? decode64(key) : key] = values[key]; 279 280 } 281 282 return value; 283 } 284 /*Verifica se a string input esta em Base 64*/ 285 function isEncoded64(input){ 286 var baseStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; 287 var encoded = true; 288 if ( (input.length % 4) != 0) 289 return false; 290 for(var i=0; i<input.length; i++){ 291 if ( baseStr.indexOf(input[i]) < 0 ){ 292 encoded = false; 293 break; 294 } 295 } 296 return encoded; 292 297 } 293 298 function loadSignature() 294 299 { 295 300 var types = fromJSON( document.getElementById( "signature_types" ).value ); 296 var signatures; 297 if (document.getElementById( "signatures" ).value) 298 { 299 signatures = fromJSON(document.getElementById("signatures").value); 300 } else if (document.getElementById( "signature" ).value) // Caso a assinatura esteja no formato da versão 2.2.10: 301 { 302 // TODO: Internazionalizar a string 303 signatures = {}; 304 signatures["Assinatura padrão"] = document.getElementById( "signature" ).value; 305 if (!document.getElementById("signature_default").value) 306 { 307 document.getElementById("signature_default").value = "Assinatura padrão"; 308 } 309 } 310 311 var old_signature = document.getElementById( "signature" ).value; 312 var def = document.getElementById( "signature_default" ).value; 313 def = isEncoded64(def) ? decode64(def) : def; 301 var signatures; 302 if (document.getElementById( "signatures" ).value) 303 { 304 signatures = fromJSON(document.getElementById("signatures").value); 305 } else if (document.getElementById( "signature" ).value) // Caso a assinatura esteja no formato da versão 2.2.10: 306 { 307 // TODO: Internazionalizar a string 308 signatures = {}; 309 signatures["Assinatura padrão"] = document.getElementById( "signature" ).value; 310 if (!document.getElementById("signature_default").value) 311 { 312 document.getElementById("signature_default").value = "Assinatura padrão"; 313 } 314 } 315 316 signatures = normalizerSignature(signatures); 317 types = normalizerSignature(types); 318 319 var old_signature = document.getElementById( "signature" ).value; 320 var def = document.getElementById( "signature_default" ).value; 321 def = isEncoded64(def) ? decode64(def) : def; 314 322 315 323 var counter = 0, ids = [], def_signature = "", noSig = true; 316 317 signatures = normalizerSignature(signatures);318 types = normalizerSignature(types);319 324 320 325 for( key in signatures ) … … 336 341 337 342 if( def_signature !== "" ) 338 343 document.getElementById( "default_signature" + def_signature ).checked = true; 339 344 else if( noSig && old_signature ) 340 345 { 341 var type_signature = document.getElementById("type_signature"); 342 if (type_signature) 343 { 344 addSignature( type_signature.value !== "html" ); 345 document.getElementById( "user_signature" + counter ).value = old_signature; 346 } 347 346 var type_signature = document.getElementById("type_signature"); 347 if (type_signature) 348 { 349 addSignature( type_signature.value !== "html" ); 350 document.getElementById( "user_signature" + counter ).value = old_signature; 351 } 352 } 348 353 } 349 354 '); … … 364 369 365 370 create_check_box('View the user name in the header of the messages printed?', 'show_name_print_messages', 'Displays the user name in the header print email'); 371 372 create_check_box('Habilitar funcionalidade de notificar ao receber mensagens filtradas por remetente ?', 'use_alert_filter_criteria', ''); 373 create_check_box('Habilitar sinalizadores e marcadores em mensagens', 'use_followupflags_and_labels', ''); 366 374 367 375 //$default = 0; -
branches/2.5/expressoMail1_2/index.php
r7919 r8232 16 16 'enable_nextmatchs_class' => True 17 17 ); 18 18 19 19 require_once('../header.inc.php'); 20 20 include_once dirname(__FILE__) . '/../header.inc.php'; … … 25 25 $AlternateEmailExpresso = $alternativeMailService->getMailAlternateByUidNumber($_SESSION['phpgw_info']['expressomail']['user']['account_id']); 26 26 $template->set_var("user_email_alternative", implode(",", $AlternateEmailExpresso)); 27 28 if (execmethod('emailadmin.ui.countProfiles') == 0){ 29 execmethod('emailadmin.ui.addDefaultProfile'); 30 } 27 31 28 32 $update_version = $GLOBALS['phpgw_info']['apps']['expressoMail1_2']['version']; 29 33 $_SESSION['phpgw_info']['expressomail']['user'] = $GLOBALS['phpgw_info']['user']; 30 34 echo "<script type='text/javascript'>var template = '".$_SESSION['phpgw_info']['expressoMail1_2']['user']['preferences']['common']['template_set']."';</script>"; 35 31 36 32 37 //jquery and Editor … … 74 79 <script type="text/javascript" src="js/DropDownContacts.js"></script> 75 80 '; 76 81 82 // 83 // include_once(__DIR__.'/inc/class.imap_functions.inc.php'); 84 // 85 // $param = array(); 86 // $param['folder'] = 'INBOX'; 87 // $param['msg_range_begin'] = '1'; 88 // $param['msg_range_end'] = '50'; 89 // $param['sort_box_type'] = 'SORTARRIVAL'; 90 // $param['search_box_type'] = 'ALL'; 91 // $param['sort_box_reverse'] = '1'; 92 // 93 // $imapf = new imap_functions(); 94 // $initialMessages = $imapf->get_range_msgs2($param); 95 // 96 // echo '<script type="text/javascript"> var initialMessages = '.json_encode($initialMessages).'</script>'; 97 77 98 /* 78 99 * TODO: implementar o controle como preferência do usuário … … 251 272 } 252 273 253 echo '<script type="text/javascript"> var preferences = '.json_encode($_SESSION['phpgw_info']['user']['preferences']['expressoMail']).'</script>'; 254 274 echo '<script type="text/javascript"> var preferences = '.json_encode($_SESSION['phpgw_info']['user']['preferences']['expressoMail']).'</script>'; 275 255 276 echo ' 256 277 <script> var special_folders = new Array(4); … … 334 355 //echo $obj -> getFilesJs("js/common_functions.js",$update_version); 335 356 include("inc/load_lang.php"); 336 357 337 358 // INCLUDE these JS Files: 338 359 if ($_SESSION['phpgw_info']['user']['preferences']['expressoMail']['use_local_messages']) … … 349 370 echo "<script> use_local_messages = ".$_SESSION['phpgw_info']['user']['preferences']['expressoMail']['use_local_messages']."</script>"; 350 371 if($_SESSION['phpgw_info']['user']['preferences']['expressoMail']['use_local_messages']) 351 $scripts .= "js/local_messages.js"; 352 372 $scripts .= "js/local_messages.js"; 373 353 374 echo ' 354 375 <!--<script type="text/javascript" src="../prototype/modules/mail/js/followupflag.js"></script>--> … … 360 381 '; 361 382 362 echo 383 //////////////////////////////////////////// Carregar Timezones para o javascript ///////////////////////////////////////// 384 385 $zones = timezone_identifiers_list(); 386 $Time = new DateTime('now', new DateTimeZone('UTC')); 387 $timezone = array(); 388 389 foreach ($zones as $zone) 390 { 391 $timezone['timezones'][$zone] = $Time->setTimezone(new DateTimeZone($zone))->format('O'); 392 } 393 394 $localtime = localtime(time(), true); 395 $timezone['isDaylightSaving'] = !!$localtime['tm_isdst'] ? 1 : 0; 396 397 echo '<script type="text/javascript"> var Timezone = '.json_encode($timezone).'</script>'; 398 399 //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 400 401 echo 363 402 '<script src="../prototype/plugins/datejs/date-pt-BR.js" language="javascript" ></script> 364 <script src="../prototype/modules/calendar/js/timezone.js" language="javascript" ></script> 365 <script src="../prototype/plugins/dateFormat/dateFormat.js" language="javascript" ></script> 366 <script src="../prototype/modules/calendar/js/calendar.date.js" language="javascript" ></script> 403 <script src="../prototype/plugins/dateFormat/dateFormat.js" language="javascript" ></script> 404 <script src="../prototype/modules/calendar/js/calendar.date.js" language="javascript" ></script> 367 405 <script src="../prototype/modules/calendar/js/calendar.codecs.js" language="javascript" ></script> 368 406 <script src="../prototype/modules/calendar/js/calendar.alarms.js" language="javascript" ></script> … … 371 409 echo $obj -> getFilesJs($scripts, $update_version); 372 410 echo '<script type="text/javascript">connector.updateVersion = "'.$update_version.'";</script>'; 373 374 411 echo '<script type="text/javascript" src="assetic.php"></script>'; 375 412 413 ///////// Verifica se o usuario esta fora do escritorio imprime a variavel javascript "outOfficeFlag" ///////////////////////////// 414 415 include_once(__DIR__ .'/../library/Net/Sieve.php'); 416 $sieveConf = parse_ini_file( __DIR__."/../prototype/config/Sieve.srv", true ); 417 $sieveConf = $sieveConf['config']; 418 $sieve = new Net_Sieve(); 419 $inVacation = false; 420 @$sieve->connect( $sieveConf['host'] , $sieveConf['port'] , $sieveConf['options'] , $sieveConf['useTLS'] ); 421 @$sieve->login( $_SESSION['wallet']['Sieve']['user'], $_SESSION['wallet']['Sieve']['password'] , $sieveConf['loginType']); 422 $script = $sieve->getScript($sieve->getActive()); 423 $pos = strripos($script, "#PseudoScript#"); 424 $pseudo_script = substr( $script, $pos+17 ); 425 $sieveRules = json_decode( $pseudo_script, true ); 426 foreach( $sieveRules as $i => $v) 427 if($v['id'] == 'vacation' && $v['enabled'] == 'true') 428 $inVacation = true; 429 430 if($inVacation) 431 echo '<script language="javascript"> write_msg(get_lang("Attention, you are in out of office mode."), true); </script>'; 432 433 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 434 435 436 437 376 438 377 439 // Get Preferences or redirect to preferences page. -
branches/2.5/expressoMail1_2/js/InfoContact.js
r8147 r8232 7 7 this.td; 8 8 this.createCard(); 9 this.folder = get_current_folder(); 9 10 } 10 11 … … 69 70 70 71 emInfoContact.prototype.show = function (data){ 72 if (this.folder != get_current_folder()){ 73 this.folder = get_current_folder(); 74 return false; 75 } 71 76 var _this = this; 72 77 var card = Element("card_cc"); 73 78 card.style.left = (findPosX(this.td) + 20)+"px"; 74 var divScroll = Element("divScrollMain_"+numBox); 75 var y = findPosY(this.td) + 20 - (divScroll ? divScroll.scrollTop : 0); 79 var divScroll = Element("divScrollMain_"+numBox); 80 var y = findPosY(this.td) + 20 - (divScroll ? divScroll.scrollTop : 0); 76 81 var w_height = is_ie ? document.body.clientHeight + document.body.scrollTop : window.innerHeight + window.pageYOffset; 77 82 if(y + 160 > w_height) -
branches/2.5/expressoMail1_2/js/abas.js
r8125 r8232 10 10 function setBorderAttributes(ID) 11 11 { 12 13 12 this.border_id = "border_id_"+ID; 13 this.sequence = ID; 14 14 } 15 15 … … 17 17 function alternate_border(ID) 18 18 { 19 msg_selected = false;//Controle da seleção de mensagens 20 if(isNaN(ID)) 21 if(preferences.use_shortcuts == "1") 22 select_msg((ID.split("_"))[0]); 23 if( document.getElementById("div_menu_c3") != null ) 24 { 25 //div que contém divs de paginação de todas abas de listagem possíveis (listagem de pasta e listagem de pesquisa) 26 var node = document.getElementById("div_menu_c3").firstChild; 27 //Se for diferente da aba de listagem, remove a paginação 28 if(currentTab != 0){ 29 //Enquanto node for true (retorna false se não houver mais elementos) 30 while ( node ) { 31 node.style.display = "none"; 32 node = node.nextSibling; 33 } 34 } 35 36 if( document.getElementById("span_paging"+ID) != null ) 37 document.getElementById("span_paging"+ID).style.display = "block"; 38 } 39 40 if ( typeof win == 'object' && win.close && win.close.constructor == Function ){ 19 20 21 msg_selected = false;//Controle da seleção de mensagens 22 if(isNaN(ID)) 23 if(preferences.use_shortcuts == "1") 24 select_msg((ID.split("_"))[0]); 25 if( document.getElementById("div_menu_c3") != null ) 26 { 27 //div que contém divs de paginação de todas abas de listagem possíveis (listagem de pasta e listagem de pesquisa) 28 var node = document.getElementById("div_menu_c3").firstChild; 29 //Se for diferente da aba de listagem, remove a paginação 30 if(currentTab != 0){ 31 //Enquanto node for true (retorna false se não houver mais elementos) 32 while ( node ) { 33 node.style.display = "none"; 34 node = node.nextSibling; 35 } 36 } 37 38 if( document.getElementById("span_paging"+ID) != null ) 39 document.getElementById("span_paging"+ID).style.display = "block"; 40 } 41 42 if ( typeof win == 'object' && win.close && win.close.constructor == Function ){ 41 43 var search_win = document.getElementById( 'window_QuickCatalogSearch' ); 42 44 if(search_win){ … … 45 47 win.close( ); 46 48 } 47 48 49 50 51 52 53 54 55 var footer_menu = Element("footer_menu"); 56 57 58 59 60 61 62 63 if((openTab.imapBox[ID].indexOf("local_") >= 0)){ 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 alternate_menu.setAttribute("onclick", 'archive_msgs(\''+openTab.imapBox[ID]+'\', null)'); 80 81 82 83 } 84 85 86 87 88 89 90 91 92 93 footer_menu.style.display = 'none'; 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 Element("font_border_id_"+BordersArray[i].sequence).className = 'font-menu'; 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 49 50 if (! Element('border_id_'+ID)) 51 return false; // Not possible to alternate 52 show_hide_span_paging(ID); 53 spanD = Element("span_D"); 54 if (spanD) 55 spanD.style.display = (openTab.type[ID] == 0 ? '' : 'none'); 56 57 var footer_menu = Element("footer_menu"); 58 var aba = Element('border_id_'+ID); 59 if (footer_menu != null) { 60 footer_menu.style.display = (openTab.type[ID] != 4 ? '' : 'none'); 61 var alternate_menu = document.getElementById('localOption'); 62 63 if(alternate_menu != null && alternate_menu != 'undefined'){ //Quando Carregado o expresso mail 64 if(openTab.imapBox[ID]!= null && openTab.imapBox[ID]!= 'undefined' ){ //Quando abrir uma Nova Mensagem 65 if((openTab.imapBox[ID].indexOf("local_") >= 0)){ 66 alternate_menu.title = get_lang("Unarchive"); 67 alternate_menu.removeAttribute("onclick"); 68 if(!is_ie) 69 alternate_menu.setAttribute("onclick", 'expresso_local_messages.unarchive_msgs(\''+openTab.imapBox[ID]+'\', null)'); 70 else{ 71 alternate_menu.onclick = function(){ 72 expresso_local_messages.unarchive_msgs(openTab.imapBox[ID], null); 73 } 74 } 75 alternate_menu.innerHTML = get_lang("Unarchive"); 76 77 }else{ 78 alternate_menu.title = get_lang("Archive"); 79 alternate_menu.removeAttribute("onclick"); 80 if(!is_ie) 81 alternate_menu.setAttribute("onclick", 'archive_msgs(\''+openTab.imapBox[ID]+'\', null)'); 82 else{ 83 alternate_menu.onclick = function(){ 84 archive_msgs(openTab.imapBox[ID], null); 85 } 86 } 87 alternate_menu.innerHTML = get_lang("Archive"); 88 } 89 90 } 91 } 92 93 if((aba.id.indexOf("_r") < 0) && (aba.id.indexOf("_0") < 0) && (aba.id.indexOf("id_search_") < 0) && (aba.id.indexOf("_s") < 0)){ 94 spanD.style.display = 'none'; 95 footer_menu.style.display = 'none'; 96 } 97 } 98 99 100 var len = BordersArray.length; 101 for (var i=0; i < len; i++) 102 { 103 m = document.getElementById(BordersArray[i].border_id); 104 if ((m)&&(m.className == 'menu-sel')) 105 { 106 m.className = 'menu'; 107 c = document.getElementById("content_id_"+BordersArray[i].sequence); 108 c.style.display = 'none'; 109 if(Element("font_border_id_"+BordersArray[i].sequence)) 110 Element("font_border_id_"+BordersArray[i].sequence).className = 'font-menu'; 111 112 } 113 } 114 115 m = Element("border_id_"+ID); 116 if (m) 117 m.className = 'menu-sel'; 118 if(Element("font_border_id_" + ID)) 119 Element("font_border_id_" + ID).className = 'font-menu-sel'; 120 var c = Element("content_id_"+ID) 121 if (c) 122 c.style.display = ''; 123 124 125 // hide the DropDrowContact, if necessary 126 window_DropDownContacts = Element('tipDiv'); 127 if ((window_DropDownContacts)&&(window_DropDownContacts.style.visibility != 'hidden')){ 128 window_DropDownContacts.style.visibility = 'hidden'; 129 } 130 131 numBox = getNumBoxFromTabId(ID); 132 if (typeof(ID)=='number') { 131 133 numBox = ID; 132 134 } … … 145 147 } 146 148 } 147 currentTab=ID; 148 if( document.getElementById('to_'+ID) && document.getElementById('to_'+ID).type == "textarea"){ 149 document.getElementById('to_'+ID).focus(); 150 } 151 if (ID == 0){ 152 updateSelectedMsgs(); 153 } 154 RichTextEditor.setEditable(ID); 155 resizeWindow(); 156 return ID; 149 currentTab=ID; 150 if( document.getElementById('to_'+ID) && document.getElementById('to_'+ID).type == "textarea"){ 151 document.getElementById('to_'+ID).focus(); 152 } 153 if (ID == 0){ 154 updateSelectedMsgs(); 155 } 156 RichTextEditor.setEditable(ID); 157 resizeWindow(); 158 159 return ID; 157 160 } 158 161 159 162 function create_border(borderTitle, id_value, search) 160 163 { 161 164 borderTitle = ( ( borderTitle && borderTitle.constructor == String && borderTitle.length > 0 ) ? borderTitle : ' ' ); 162 165 borderTitle = html_entities(borderTitle); 163 166 var resize = false; 164 167 resize = resize_borders(); 165 168 if (!resize){ 166 169 var str_continue = ''; 167 170 var bolContinue = true; 168 171 str_continue = '\n' + get_lang('You must manually close one of your tabs before opening a new one'); 169 172 if (preferences.auto_close_first_tab == 1){ 170 173 var children = Element('border_tr').childNodes; … … 180 183 } 181 184 if (bolDelete || bolContinue){ 182 183 185 str_fechar = '\n' + get_lang('Reached maximum tab limit. Want to close this tab'); 186 var confirmacao = confirm(str_fechar); 184 187 if(confirmacao){ 185 188 bolContinue = false; 186 189 delete_border(num_child, 'false'); 187 190 break; 188 189 191 }else{ 192 return 'maximo'; 190 193 } 191 194 } 192 195 } 193 196 } 194 }else{ 197 }else{ 195 198 alert(get_lang('Reached maximum tab limit') + str_continue ); 196 199 return 'maximo'; 197 200 } 198 201 } 199 200 201 202 203 204 205 202 203 if (! id_value){ // Is new message? 204 var ID = parseInt(BordersArray[(BordersArray.length-1)].sequence) + 1; 205 if(isNaN(ID)){ 206 var aux = BordersArray[(BordersArray.length-1)].sequence.split("_"); 207 ID = parseInt(aux[1]) + 1; 208 } 206 209 }else 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 borderTitle = borderTitle ? borderTitle : id_value ? get_lang("No Subject") : " ";246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 210 { 211 if (Element("border_id_"+id_value)) // It's opened already! 212 return alternate_border(id_value); 213 214 var ID = id_value; 215 if(isNaN(ID) && ID.indexOf("search_local") >= 0){ 216 if(current_folder.indexOf("local") >= 0) 217 openTab.imapBox[ID] = current_folder; 218 else 219 openTab.imapBox[ID] = 'local_search'; 220 }else if(isNaN(ID) && ID.indexOf("search_") >= 0){ 221 if(current_folder.indexOf("local") < 0) 222 openTab.imapBox[ID] = current_folder; 223 else 224 openTab.imapBox[ID] = 'search'; 225 }else if( (currentTab != 0) && isNaN(currentTab) && (currentTab.indexOf("search") >= 0) && (ID.indexOf("msg") < 0) ) { 226 var id_border = currentTab.replace(/[a-zA-Z_]+/, ""); 227 ID_TR = ID.toString().substr(0,ID.toString().indexOf("_r")); 228 var tr = Element(ID_TR) ? Element(ID_TR) : Element(ID_TR+"_s"+id_border); 229 openTab.imapBox[ID] = (tr.getAttribute('name') == null?get_current_folder():tr.getAttribute('name')); 230 }else 231 openTab.imapBox[ID] = current_folder; 232 } 233 td = document.createElement("TD"); 234 td.id="border_id_" + ID; 235 if(resize) 236 { 237 td.setAttribute("width", parseInt(resize)+"px"); 238 td.style.width = parseInt(resize)+"px"; 239 } 240 else 241 td.setAttribute("width", "200px"); 242 243 td.setAttribute("align", "right"); 244 td.onclick = function(){alternate_border(ID);resizeWindow()}; 245 td.setAttribute("noWrap","true"); 246 td.setAttribute("role",get_current_folder()); 247 td.title = borderTitle; 248 borderTitle = borderTitle ? borderTitle : id_value ? get_lang("No Subject") : " " ; 249 td.value = borderTitle; 250 if (borderTitle.length > 21) 251 borderTitle = borderTitle.substring(0,21) + "..."; 252 253 if ( resize ) 254 borderTitle = borderTitle.substring(0, resize*0.08); 255 256 var cc = search; 257 if(!cc){ 258 if(isNaN(ID)){ 259 var is_local = ID.match('.*_local_.*'); 260 if(!is_local) 261 cc = document.getElementById("em_message_search").value; 262 else{ 263 if (currentTab == 0) 264 cc = ""; 265 else 266 cc = document.getElementsByName(currentTab)[0].value; 267 } 268 }else{ 269 cc =""; 270 } 271 } 272 td.innerHTML = "<div><div id='font_border_id_" + ID+"' class='font-menu'>" + 270 273 borderTitle + 271 274 "</div>\n\ … … 273 276 <img onmousedown='javascript:return false' style='cursor:pointer' onclick=delete_border('" + ID + "','false') src='templates/"+template+"/images/close_button.gif'/>\n\ " + 274 277 "</div>\n\ " + 275 "<input type=\"hidden\" name=\""+ ID+"\" value=\""+cc+"\"></div>"; 276 bb = document.getElementById("border_blank"); 277 parent_bb = bb.parentNode; //Pego o tbody 278 parent_bb.insertBefore(td, bb); 279 280 if((typeof(id_value) == 'string') && id_value.match(/_r/)){ 281 $(td).draggable({ 282 start : function(){ 283 $('.upper, .lower').show(); 284 $(".lower").css("top", ($("#content_folders").height()-18) + $("#content_folders").offset().top); 285 if($(".shared-folders").length){ 286 $(".shared-folders").parent().find('.folder:not(".shared-folders")').droppable({ 287 over : function(a, b){ 288 //SETA BORDA EM VOLTA DA PASTA 289 over = $(this); 290 $(this).addClass("folder-over"); 291 if(($(this)[0] != $(this).parent().find(".head_folder")[0])) 292 if($(this).prev()[0]) 293 if($(this).parent().find(".expandable-hitarea")[0] == $(this).prev()[0]){ 294 setTimeout(function(){ 295 if(over.hasClass("folder-over")) 296 over.prev().trigger("click"); 297 }, 500); 298 299 } 300 //$("#content_folders").stop().scrollTo($(this), {axis:'y', margin:true, offset:-50, duration:400}); 301 }, 302 out : function(){ 303 //RETIRA BORDA EM VOLTA DA PASTA 304 $(this).removeClass("folder-over"); 305 }, 306 //accept: ".draggin_mail", 307 drop : function(event, ui){ 308 $(this).css("border", "0"); 309 if($(this).parent().attr('id') == undefined){ 310 var folder_to = 'INBOX'; 311 var to_folder_title = get_lang("Inbox"); 312 }else{ 313 var folder_to = $(this).parent().attr('id'); 314 var to_folder_title = $(this).attr('title'); 315 } 316 var folder_to_move = ui.draggable.parent().attr('id'); 317 var border_id = ui.draggable.find("input[type=hidden]").attr("name"); 318 if(folder_to_move == "border_tr"){ 319 var id_msg = border_id.split("_")[0]; 320 folder = $("#input_folder_"+border_id+"_r")[0] ? $("#input_folder_"+border_id+"_r").val() : (openTab.imapBox[border_id] ? openTab.imapBox[border_id]:get_current_folder()); 321 move_msgs2(folder, id_msg, border_id, folder_to, to_folder_title,true); 322 return refresh(); 323 } 324 } 325 }); 326 } 327 }, 328 stop :function(){ 329 $('.upper, .lower').hide(); 330 $(".shared-folders").parent().find(".folder").droppable("destroy"); 331 }, 332 helper: function(event){ 333 if( borderTitle.length > 18 ) 334 return $("<td>"+DataLayer.render('../prototype/modules/mail/templates/draggin_box.ejs', {texto : borderTitle.substring(0,18) + "...", type: "messages"})+"</td>"); 335 else 336 return $("<td>"+DataLayer.render('../prototype/modules/mail/templates/draggin_box.ejs', {texto : borderTitle, type: "messages"})+"</td>"); 337 }, 338 delay: 150, 339 cursorAt: {top: 5, left: 56}, 340 refreshPositions: true , 341 containment: "#divAppbox" 342 }); 343 } 344 //_dragArea.makeDragged(td, id_value,td.value); 345 346 BordersArray[BordersArray.length] = new setBorderAttributes(ID); 347 348 var div = document.createElement("DIV"); 349 div.id = "content_id_" + ID; 350 div.className = "conteudo"; 351 div.style.display=''; 352 353 div.style.overflow = "hidden"; 354 355 Element("exmail_main_body").insertBefore(div,Element("footer_menu")); 356 if (!is_ie) 357 resizeWindow(); 358 alternate_border(ID); 278 "<input type=\"hidden\" name=\""+ ID+"\" value=\""+cc+"\"></div>"; 279 bb = document.getElementById("border_blank"); 280 parent_bb = bb.parentNode; //Pego o tbody 281 parent_bb.insertBefore(td, bb); 282 283 if((typeof(id_value) == 'string') && id_value.match(/_r/)){ 284 $(td).draggable({ 285 start : function(){ 286 $('.upper, .lower').show(); 287 $(".lower").css("top", ($("#content_folders").height()-18) + $("#content_folders").offset().top); 288 /* Habilitar anexar mensagem por drag-and-drop, se a aba atual for editável, 289 ou seja, nem de leitura (2), nem de lista de mensagens (0):*/ 290 var current_tab_type = openTab.type[currentTab]; 291 if (current_tab_type != 0 && current_tab_type != 2){ 292 var dropzone = $("#fileupload_msg" + currentTab + "_droopzone"); 293 dropzone.show(); 294 dropzone.prev().hide(); 295 dropzone.droppable({ 296 over: function (event, ui){ 297 dropzone.addClass('hover in'); 298 $(ui.helper).find(".draggin-folder,.draggin-mail").css("color", "green"); 299 }, 300 out: function (event, ui) { 301 dropzone.removeClass('hover in'); 302 $(ui.helper).find(".draggin-folder,.draggin-mail").css("color", ""); 303 }, 304 drop: function (event, ui) { 305 var border_id = ui.draggable.find("input[type=hidden]").attr("name"); 306 var id_msg = border_id.split("_")[0]; 307 var folder = $("#input_folder_"+border_id+"_r")[0] ? $("#input_folder_"+border_id+"_r").val() : (openTab.imapBox[border_id] ? openTab.imapBox[border_id]:get_current_folder()); 308 attach_message(folder, id_msg); /* Anexa a mensagem especificada (por folder e id_msg) 309 na mensagem sendo criada.*/ 310 } 311 }); 312 } 313 if($(".shared-folders").length){ 314 $(".shared-folders").parent().find('.folder:not(".shared-folders")').droppable({ 315 over : function(a, b){ 316 //SETA BORDA EM VOLTA DA PASTA 317 $(b.helper).find(".draggin-folder,.draggin-mail").css("color", "green"); 318 over = $(this); 319 $(this).addClass("folder-over"); 320 if(($(this)[0] != $(this).parent().find(".head_folder")[0])) 321 if($(this).prev()[0]) 322 if($(this).parent().find(".expandable-hitarea")[0] == $(this).prev()[0]){ 323 setTimeout(function(){ 324 if(over.hasClass("folder-over")) 325 over.prev().trigger("click"); 326 }, 500); 327 328 } 329 //$("#content_folders").stop().scrollTo($(this), {axis:'y', margin:true, offset:-50, duration:400}); 330 }, 331 out : function(a,b){ 332 //RETIRA BORDA EM VOLTA DA PASTA 333 $(b.helper).find(".draggin-folder,.draggin-mail").css("color", ""); 334 $(this).removeClass("folder-over"); 335 }, 336 //accept: ".draggin_mail", 337 drop : function(event, ui){ 338 $(this).css("border", "0"); 339 if($(this).parent().attr('id') == undefined){ 340 var folder_to = 'INBOX'; 341 var to_folder_title = get_lang("Inbox"); 342 }else{ 343 var folder_to = $(this).parent().attr('id'); 344 var to_folder_title = $(this).attr('title'); 345 } 346 var folder_to_move = ui.draggable.parent().attr('id'); 347 var border_id = ui.draggable.find("input[type=hidden]").attr("name"); 348 if(folder_to_move == "border_tr"){ 349 var id_msg = border_id.split("_")[0]; 350 folder = $("#input_folder_"+border_id+"_r")[0] ? $("#input_folder_"+border_id+"_r").val() : (openTab.imapBox[border_id] ? openTab.imapBox[border_id]:get_current_folder()); 351 move_msgs2(folder, id_msg, border_id, folder_to, to_folder_title,true); 352 return refresh(); 353 } 354 } 355 }); 356 } 357 }, 358 stop :function(){ 359 $('.upper, .lower').hide(); 360 $(".shared-folders").parent().find(".folder").droppable("destroy"); 361 /* Habilitar anexar mensagem por drag-and-drop, se a aba atual for editável, 362 ou seja, nem de leitura (2), nem de lista de mensagens (0):*/ 363 var current_tab_type = openTab.type[currentTab]; 364 if (current_tab_type != 0 && current_tab_type != 2){ 365 var dropzone = $("#fileupload_msg" + currentTab + "_droopzone"); 366 dropzone.hide(); 367 dropzone.prev().show(); 368 } 369 }, 370 helper: function(event){ 371 if( borderTitle.length > 18 ) 372 return $("<td>"+DataLayer.render('../prototype/modules/mail/templates/draggin_box.ejs', {texto : borderTitle.substring(0,18) + "...", type: "messages"})+"</td>"); 373 else 374 return $("<td>"+DataLayer.render('../prototype/modules/mail/templates/draggin_box.ejs', {texto : borderTitle, type: "messages"})+"</td>"); 375 }, 376 delay: 150, 377 cursorAt: {top: 5, left: 56}, 378 refreshPositions: true , 379 containment: "#divAppbox" 380 }); 381 } 382 //_dragArea.makeDragged(td, id_value,td.value); 383 384 BordersArray[BordersArray.length] = new setBorderAttributes(ID); 385 386 var div = document.createElement("DIV"); 387 div.id = "content_id_" + ID; 388 div.className = "conteudo"; 389 div.style.display=''; 390 391 div.style.overflow = "hidden"; 392 393 Element("exmail_main_body").insertBefore(div,Element("footer_menu")); 394 if (!is_ie) 395 resizeWindow(); 396 alternate_border(ID); 359 397 uidsSave[ID] = []; 360 398 saveBorderError[ID] = false; 361 399 return ID; 362 400 } 363 401 364 402 function resize_borders() 365 403 { 366 367 368 369 370 371 404 var numBorders = count_borders(); 405 406 if (numBorders > 8) 407 return false; 408 409 return redim_borders(numBorders+1); 372 410 } 373 411 374 412 function count_borders() 375 413 { 376 377 378 379 380 381 382 383 414 var numBorders = 0; 415 var children = Element('border_tr').childNodes; 416 for (var i=0; i<children.length; i++) { 417 if ((children[i].nodeName === 'TD') && (children[i].id!=='border_id_0') && (children[i].id!=='border_blank')) 418 numBorders++; 419 } 420 421 return numBorders; 384 422 } 385 423 386 424 function redim_borders(numBorders) 387 425 { 388 389 390 391 392 393 394 395 396 397 398 399 400 426 var children = Element('border_tr').childNodes; 427 var clientWidth = (window.document.body.clientWidth - findPosX(Element("exmail_main_body"))) - Element("border_id_0").clientWidth - 30; 428 var newWidthTD = (clientWidth/numBorders)-6; 429 newWidthTD = newWidthTD > 200 ? 200 : (newWidthTD < 50 ? 50 : newWidthTD); 430 children = Element('border_tr').childNodes; 431 for (var i=0; i<children.length; i++) { 432 if ((children[i].nodeName === 'TD') && (children[i].id!=='border_id_0') && (children[i].id!=='border_blank')){ 433 $(children[i]).css("width", newWidthTD); 434 $(children[i]).find('div:first').css("width", newWidthTD); 435 set_border_caption(children[i].id, children[i].title, newWidthTD); 436 } 437 } 438 return newWidthTD; 401 439 } 402 440 … … 411 449 border_width = border.clientWidth; 412 450 } 413 451 var caption = ""; 414 452 if (border != null){ 415 416 417 418 453 Element("font_"+border.id).style.width = (border_width - 35)+'px'; 454 Element("font_"+border.id).innerHTML = title; 455 } 456 return(title); 419 457 } 420 458 … … 442 480 'type': 'question', 443 481 'overlay_opacity': '0.5', 444 482 'custom_class': 'custom-zebra-filter', 445 483 'buttons': buttons, 446 484 'width' : width, 447 485 'onClose': function(clicked) { 448 449 450 451 452 453 486 if(clicked == 'Cancelar'){ 487 if (RichTextEditor.plain[id] != true) 488 setTimeout("RichTextEditor.focus("+ID+")",100); 489 else 490 $('#body_'+ID).focus(); 491 } 454 492 if(clicked == 'Descartar alterações' || clicked == 'Descartar alterações e anexos' ) { 455 493 if (openTab.imapBox[ID] && !openTab.toPreserve[ID]) … … 477 515 $("#cc_"+ID).focus(); 478 516 else if ($("#tr_cco_"+ID).css('display') != 'none' && $.trim($("#cco_"+ID).val()) == "") 479 $("#cco_"+ID).focus(); 517 $("#cco_"+ID).focus(); 480 518 else if ($.trim($("#subject_"+ID).val()) == "") 481 519 $("#subject_"+ID).focus(); … … 494 532 }})}, 300); 495 533 } 496 534 497 535 } 498 536 499 537 function editTest(ID){ 500 538 var body = document.getElementById('body_'+ ID); 501 539 var content = $('#content_id_'+ ID); 502 540 if (body) 503 541 { … … 522 560 } 523 561 524 if($("#content_id_"+ currentTab+" textarea[name=input_to]").length ){525 if($("#content_id_"+ currentTab+" .save").is(':disabled') ) {562 if($("#content_id_"+ID+" textarea[name=input_to]").length ){ 563 if($("#content_id_"+ID+" .save").is(':disabled') ) { 526 564 close_delete(ID, msg_sent); 527 } else if( $("#content_id_"+ currentTab+" .save").is(':enabled') ) {565 } else if( $("#content_id_"+ID+" .save").is(':enabled') ) { 528 566 return(draftTests(ID, msg_sent)); 529 567 } … … 537 575 538 576 /*var bolExecuteClose = true; 539 540 577 var borderElem = Element("border_id_" + ID); 578 if (borderElem){ 541 579 borderElem.onclick = null; // It's avoid a FF3 bug 542 580 }else{ 543 581 return false; 544 582 } 545 546 583 if (msg_sent == 'false') 584 { 547 585 if (editTest(ID)){ 548 586 bolExecuteClose = false; … … 550 588 return(draftTests(ID, msg_sent)); 551 589 } 552 590 } 553 591 554 592 … … 556 594 { 557 595 close_delete(ID, msg_sent); 558 559 596 } 597 delete(openTab.type[ID]); 560 598 return true;*/ 561 599 … … 564 602 function close_delete(ID, msg_sent) 565 603 { 566 604 openTab.toPreserve[ID] = false; 567 605 // Limpa o autosave 568 606 if (preferences.auto_save_draft == 1 && autoSaveControl.timer[ID] !== null ) … … 573 611 //////////////////////////////// 574 612 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 613 hold_session = false; 614 if (exist_className(Element('border_id_'+ID),'menu-sel')) 615 { 616 if (BordersArray[BordersArray.length-2].sequence == ID) 617 this.alternate_border(0); 618 else 619 this.alternate_border(BordersArray[BordersArray.length-2].sequence); 620 } 621 622 // Remove TD, title 623 border = Element('border_id_' + ID); 624 border.parentNode.removeChild(border); 625 var j=0; 626 var new_BordersArray = new Array(); 627 for (i=0;i<BordersArray.length;i++) 628 if (document.getElementById(BordersArray[i].border_id) != null){ 629 new_BordersArray[j] = BordersArray[i]; 630 j++; 631 } 632 if(j == 1) 633 Element("footer_menu").style.display = ''; 634 BordersArray = new_BordersArray; 635 636 // Remove Div Content 637 content = Element('content_id_' + ID); 638 content.parentNode.removeChild(content); 639 if(is_webkit) 640 resizeWindow(); 641 RichTextEditor.destroy( 'body_'+ID ); 604 642 delete msgAttachments[ID]; 605 643 //Caso for uma mensagem anexada tem que deletar ela da lixeira apos fechar a aba 606 644 var isPartMsg = false; 607 608 645 if(!parseInt(id2)) 646 return; 609 647 var id2 = ID.replace('_r',''); 610 648 for(var ii = 0; ii < partMsgs.length; ii++) … … 620 658 /////////////////////////////////////////////////////////////////////////////////// 621 659 622 660 return true; 623 661 } 624 662 625 663 function getTabPrefix() { // define o prefixo para os checkboxes das mensagens 626 627 628 629 664 if (typeof(currentTab)!='number') 665 return currentTab+"_"; 666 else 667 return ""; 630 668 } 631 669 632 670 function getMessageIdFromRowId(row_id) { // extrai o id da mensagem do id da linha 633 634 635 636 637 671 var p = row_id.search("_s"); 672 if (p>0) 673 return row_id.substr(0,p); 674 else 675 return row_id; 638 676 } 639 677 640 678 function getNumBoxFromTabId(tab_id) { // extrai o numBox do id da tab 641 642 643 644 645 646 647 679 if (typeof(tab_id)=='number') { 680 return tab_id; 681 } 682 else { 683 var p = tab_id.search(/[0-9]/); 684 return tab_id.substr(p); 685 } 648 686 } 649 687 … … 673 711 function listAttachment(ID) 674 712 { 675 return (typeof(msgAttachments[ID]) == 'undefined') ? '' : JSON.stringify(msgAttachments[ID]); 676 } 677 713 return (typeof(msgAttachments[ID]) == 'undefined') ? '' : JSON.stringify(msgAttachments[ID]); 714 } -
branches/2.5/expressoMail1_2/js/common_functions.js
r8080 r8232 694 694 } 695 695 696 /* 697 Abre o diálogo de edição de filtro na tela de criação de filtro, 698 com os dados da mensagem (remetente e assunto) pré-carregados. 699 */ 700 function filter_from_msg (msg) { 701 var html = DataLayer.render( BASE_PATH + 'modules/filters/init.ejs', {}); 702 initialize_container(html); 703 list_container = create_filter_dialog(); 704 render_new_rule(msg.from.email, html_entities(msg.subject)); 705 $('.expresso-window-container').dialog('open'); 706 } 696 707 697 708 function sharebox(){ … … 771 782 var number = id.replace(/_[a-zA-Z0-9]+/,""); 772 783 } 773 messages.push(onceOpenedHeadersMessages[folder_name][number] );784 messages.push(onceOpenedHeadersMessages[folder_name][number] || number); 774 785 } 775 786 … … 997 1008 abas_unseen = abas_unseen.match(/(<font.*?>){0,1} *([0-9]+) *(<\/font>){0,1}/)[2]; 998 1009 999 if (folder_unseen){ 1000 //folder_unseen.innerHTML = (parseInt(folder_unseen.innerHTML) + 1); 1001 1002 1003 1004 1005 }); 1006 } 1010 if (folder_unseen){ 1011 //folder_unseen.innerHTML = (parseInt(folder_unseen.innerHTML) + 1); 1012 /*Incrementa recursivamente o contador de mensagens*/ 1013 $('.selected').parents().find('> span.folder').not('.inbox').each(function(index,ui){ 1014 var unseen = $(ui).find('.folder_unseen:last'); 1015 unseen.html(parseInt(unseen.html(),10) + 1); 1016 }); 1017 } 1007 1018 else 1008 1019 { … … 1046 1057 if ((folder_unseen) && (parseInt(folder_unseen.innerHTML) > 1)) 1047 1058 { 1048 //folder_unseen.innerHTML = (parseInt(folder_unseen.innerHTML) - 1); 1049 /*Decrementa recursivamente o contador de mensagens*/ 1050 $('.selected').parents().find('> span.folder').not('.inbox').each(function(index,ui){ 1051 var unseen = $(ui).find('.folder_unseen:last'); 1052 unseen.html(parseInt(unseen.html(),10) - 1); 1053 }); 1059 //folder_unseen.innerHTML = (parseInt(folder_unseen.innerHTML) - 1); 1060 /*Decrementa recursivamente o contador de mensagens*/ 1061 $('.selected').parents().find('> span.folder').not('.inbox').each(function(index,ui){ 1062 var unseen = $(ui).find('.folder_unseen:last'); 1063 unseen.html(parseInt(unseen.html(),10) - 1); 1064 }); 1054 1065 } 1055 1066 else if (parseInt(folder_unseen.innerHTML) <= 1) -
branches/2.5/expressoMail1_2/js/connector.js
r8103 r8232 171 171 } 172 172 173 cConnector.prototype.unserializeArchiver = function(str) 174 { 175 _thisObject = this; 176 var matchB = function (str, iniPos) 177 { 178 var nOpen, nClose = iniPos; 179 do 180 { 181 nOpen = str.substr(nClose+1).search(/[0-9]\:\{/ ); 182 183 if (nOpen > 0) 184 nOpen = nOpen + nClose+3; 185 186 nClose = str.indexOf('}', nClose+1); 187 188 if (nOpen < 0) 189 { 190 return nClose; 191 } 192 if (nOpen < nClose ) 193 { 194 nClose = matchB(str, nOpen); 195 } 196 } while (nOpen < nClose); 197 198 return nClose; 199 } 200 201 var f = function (str) 202 { 203 switch (str.charAt(0)) 204 { 205 case 'a': 206 207 var data = new Array(); 208 var n = parseInt( str.substring( str.indexOf(':')+1, str.indexOf(':',2) ) ); 209 var arrayContent = str.substring(str.indexOf('{')+1, str.lastIndexOf('}')); 210 211 for (var i = 0; i < n; i++) 212 { 213 var pos = 0; 214 215 /* Process Index */ 216 var indexStr = arrayContent.substr(pos, arrayContent.indexOf(';')+1); 217 var index = f(indexStr); 218 pos = arrayContent.indexOf(';', pos)+1; 219 220 /* Process Content */ 221 var part = null; 222 switch (arrayContent.charAt(pos)) 223 { 224 case 'a': 225 var pos_ = matchB(arrayContent, arrayContent.indexOf('{', pos))+1; 226 part = arrayContent.substring(pos, pos_); 227 pos = pos_; 228 data[index] = f(part); 229 break; 230 231 case 's': 232 var pval = arrayContent.indexOf(':', pos+2); 233 var val = parseInt(arrayContent.substring(pos+2, pval)); 234 pos = pval + val + 4; 235 data[index] = arrayContent.substr(pval+2, val); 236 break; 237 238 default: 239 part = arrayContent.substring(pos, arrayContent.indexOf(';', pos)+1); 240 pos = arrayContent.indexOf(';', pos)+1; 241 data[index] = f(part); 242 break; 243 } 244 arrayContent = arrayContent.substr(pos); 245 } 246 break; 247 248 case 's': 249 var pos = str.indexOf(':', 2); 250 var val = parseInt(str.substring(2,pos)); 251 var data = str.substr(pos+2, val); 252 str = str.substr(pos + 4 + val); 253 break; 254 255 case 'i': 256 case 'd': 257 var pos = str.indexOf(';'); 258 var data = parseInt(str.substring(2,pos)); 259 str = str.substr(pos + 1); 260 break; 261 262 case 'N': 263 var data = null; 264 str = str.substr(str.indexOf(';') + 1); 265 break; 266 267 case 'b': 268 var data = str.charAt(2) == '1' ? true : false; 269 break; 270 } 271 return data; 272 } 273 274 return f(str); 275 } 276 173 cConnector.prototype.unserializeArchiver = function(str) 174 { 175 _thisObject = this; 176 var matchB = function (str, iniPos) 177 { 178 var nOpen, nClose = iniPos; 179 do 180 { 181 nOpen = str.substr(nClose+1).search(/[0-9]\:\{/ ); 182 183 if (nOpen > 0) 184 nOpen = nOpen + nClose+3; 185 186 nClose = str.indexOf('}', nClose+1); 187 188 if (nOpen < 0) 189 { 190 return nClose; 191 } 192 if (nOpen < nClose ) 193 { 194 nClose = matchB(str, nOpen); 195 } 196 } while (nOpen < nClose); 197 198 return nClose; 199 } 200 201 var f = function (str) 202 { 203 switch (str.charAt(0)) 204 { 205 case 'a': 206 207 var data = new Array(); 208 var n = parseInt( str.substring( str.indexOf(':')+1, str.indexOf(':',2) ) ); 209 var arrayContent = str.substring(str.indexOf('{')+1, str.lastIndexOf('}')); 210 211 for (var i = 0; i < n; i++) 212 { 213 var pos = 0; 214 215 /* Process Index */ 216 var indexStr = arrayContent.substr(pos, arrayContent.indexOf(';')+1); 217 var index = f(indexStr); 218 pos = arrayContent.indexOf(';', pos)+1; 219 220 /* Process Content */ 221 var part = null; 222 switch (arrayContent.charAt(pos)) 223 { 224 case 'a': 225 var pos_ = matchB(arrayContent, arrayContent.indexOf('{', pos))+1; 226 part = arrayContent.substring(pos, pos_); 227 pos = pos_; 228 data[index] = f(part); 229 break; 230 231 case 's': 232 var pval = arrayContent.indexOf(':', pos+2); 233 var val = parseInt(arrayContent.substring(pos+2, pval)); 234 pos = pval + val + 4; 235 data[index] = arrayContent.substr(pval+2, val); 236 break; 237 238 default: 239 part = arrayContent.substring(pos, arrayContent.indexOf(';', pos)+1); 240 pos = arrayContent.indexOf(';', pos)+1; 241 data[index] = f(part); 242 break; 243 } 244 arrayContent = arrayContent.substr(pos); 245 } 246 break; 247 248 case 's': 249 var pos = str.indexOf(':', 2); 250 var val = parseInt(str.substring(2,pos)); 251 var data = str.substr(pos+2, val); 252 str = str.substr(pos + 4 + val); 253 break; 254 255 case 'i': 256 case 'd': 257 var pos = str.indexOf(';'); 258 var data = parseInt(str.substring(2,pos)); 259 str = str.substr(pos + 1); 260 break; 261 262 case 'N': 263 var data = null; 264 str = str.substr(str.indexOf(';') + 1); 265 break; 266 267 case 'b': 268 var data = str.charAt(2) == '1' ? true : false; 269 break; 270 } 271 return data; 272 } 273 274 return f(str); 275 } 276 277 277 //Unserialize Data Method 278 278 cConnector.prototype.unserialize = function(str) … … 290 290 291 291 nClose = (str.substr(nClose+1) == '}' || str.substr(nClose+1,1) == '}') ? nClose +1 : str.substr(nClose+1).search(/[0-9\"]\;\}/ ) + nClose + 3; 292 292 293 293 if (nOpen < 0) 294 294 { … … 554 554 { 555 555 var div = document.getElementById('divProgressBar'); 556 557 if(div) 558 { 559 div.style.visibility = 'hidden'; 560 this.isVisibleBar = false; 561 } 556 557 if(div) 558 { 559 div.style.visibility = 'hidden'; 560 this.isVisibleBar = false; 561 } 562 562 } 563 563 564 564 cConnector.prototype.showProgressBar = function(){ 565 565 566 566 var div = document.getElementById('divProgressBar'); 567 if(div) 568 { 569 div.style.visibility = 'visible'; 570 this.isVisibleBar = true; 571 } 567 if(div) 568 { 569 div.style.visibility = 'visible'; 570 this.isVisibleBar = true; 571 } 572 572 } 573 573 -
branches/2.5/expressoMail1_2/js/doiMenuData.js
r8127 r8232 142 142 function loadMenu(){ 143 143 var archive = ""; 144 if(use_local_messages != 0){ 145 archive = {"name": get_lang("Archive"), "icon": "archive", callback: function(key, opt){ proxy_mensagens.archive_message('inbox', 'get_selected_messages'); }} 146 }else{ 147 archive = ""; 144 145 if( preferences['use_followupflags_and_labels'] == "1" ) 146 var labelItems = getLabels(); 147 148 var revertSortBox = function(){ 149 if (search_box_type == "UNSEEN") sort_box_reverse = sort_box_reverse ? 0 : 1; 148 150 } 149 var labelItems = getLabels();150 151 151 152 $.contextMenu({ … … 156 157 return true; 157 158 } 158 if( current.indexOf("local") == -1){ 159 archive = {"name": get_lang("Archive"), "icon": "archive", callback: function(key, opt){ proxy_mensagens.archive_message(get_current_folder(), 'get_selected_messages'); }} 160 161 } else { 162 archive = {"name": get_lang("Unarchive"), "icon": "archive", callback: function(key, opt){ proxy_mensagens.unarchive_message(get_current_folder(), 'get_selected_messages'); }} 163 } 164 var itensNotLocal = { 165 "label": { "name": get_lang("Labels"), "items": labelItems}, 166 "follouwpflag":{"name": get_lang("Follow up"), callback: function(key, opt){ configureFollowupflag(); } }, 167 "sep2": "---------" 168 } 159 if(use_local_messages != 0){ 160 if( current.indexOf("local") != -1){ 161 archive = {"name": get_lang("Unarchive"), "icon": "archive", callback: function(key, opt){ proxy_mensagens.unarchive_message('inbox', 'get_selected_messages'); }} 162 } else { 163 archive = {"name": get_lang("Archive"), "icon": "archive", callback: function(key, opt){ proxy_mensagens.unarchive_message('inbox', 'get_selected_messages'); }} 164 } 165 } 166 167 if( preferences['use_followupflags_and_labels'] == "1" ) 168 var itensNotLocal = { 169 "label": { "name": get_lang("Labels"), "items": labelItems}, 170 "follouwpflag":{"name": get_lang("Follow up"), callback: function(key, opt){ configureFollowupflag(); } }, 171 "sep2": "---------" 172 } 169 173 170 174 var items= { 171 "flagSeen": {"name": get_lang("Mark as") + " " + get_lang('seen'), "icon": "seen", callback: function(key, opt){ proxy_mensagens.proxy_set_messages_flag('seen','get_selected_messages'); }},172 "flagUnseen": {"name": get_lang("Mark as") + " " + get_lang('unseen'), "icon": "unseen", callback: function(key, opt){ proxy_mensagens.proxy_set_messages_flag('unseen','get_selected_messages'); }},173 "flagFlagged": {"name": get_lang("Mark as") + " " + get_lang('important'), "icon": "important", callback: function(key, opt){ proxy_mensagens.proxy_set_messages_flag('flagged','get_selected_messages'); }},174 "flagUnflagged": {"name": get_lang("Mark as") + " " + get_lang('normal'), callback: function(key, opt){ proxy_mensagens.proxy_set_messages_flag('unflagged','get_selected_messages'); }},175 "flagSeen": {"name": get_lang("Mark as") + " " + get_lang('seen'), "icon": "seen", callback: function(key, opt){ revertSortBox(); proxy_mensagens.proxy_set_messages_flag('seen','get_selected_messages'); }}, 176 "flagUnseen": {"name": get_lang("Mark as") + " " + get_lang('unseen'), "icon": "unseen", callback: function(key, opt){ revertSortBox(); proxy_mensagens.proxy_set_messages_flag('unseen','get_selected_messages'); }}, 177 "flagFlagged": {"name": get_lang("Mark as") + " " + get_lang('important'), "icon": "important", callback: function(key, opt){ revertSortBox(); proxy_mensagens.proxy_set_messages_flag('flagged','get_selected_messages'); }}, 178 "flagUnflagged": {"name": get_lang("Mark as") + " " + get_lang('normal'), callback: function(key, opt){ revertSortBox(); proxy_mensagens.proxy_set_messages_flag('unflagged','get_selected_messages'); }}, 175 179 "sep1": "---------" 176 180 } 177 181 182 // Desabilita a opção de criar filtro a partir da mensagem, caso mais de uma mensagem esteja selecionada: 183 var is_filterFromMsg_disabled = function () { 184 var base_selector = ".table_box tbody tr.selected_msg"; 185 return ($(base_selector).length > 1) || ($(base_selector + " td span").text().indexOf(get_lang("Draft")) > -1); 186 } 187 178 188 var lastItens = { 179 189 "move": {"name": get_lang("Move to")+"...", "icon": "move", callback: function(key, opt){ wfolders.makeWindow('', 'move_to'); }}, 180 190 "remove": {"name": get_lang("Delete"), "icon": "delete", callback: function(key, opt){ proxy_mensagens.delete_msgs('null','selected','null'); }}, 181 191 "export": {"name": get_lang("Export"), "icon": "export", callback: function(key, opt){ proxy_mensagens.export_all_messages(); }}, 192 /*Abre o diálogo de criação de filtro a partir da mensagem:*/ 193 "filterFromMsg": { 194 "name": get_lang("Create filter from message"), 195 "icon": "filter", 196 callback: function (key, opt) { 197 var msg_number = get_selected_messages(); 198 var msg = onceOpenedHeadersMessages[current_folder][msg_number]; 199 if (msg !== undefined) 200 { 201 filter_from_msg(msg); 202 } 203 }, 204 disabled: is_filterFromMsg_disabled() 205 }, 182 206 "archive": archive 183 207 } … … 318 342 } else { 319 343 var labeleds = (messageInfo.forceIcon ? messageInfo.labels : DataLayer.get('labeled', { 320 criteria: {deepness: '2'},321 344 criteria: {deepness: 2}, 345 filter: [ 322 346 'AND', 323 347 ['=', 'folderName', msg_folder], … … 337 361 338 362 for (var i=0; i < labeleds.length; i++){ 339 menuItems[ labeleds[i].id ? labeleds[i].id : labeleds[i].label.id] = labeleds[i].id ? labeleds[i] : labeleds[i].label;363 menuItems[ (labeleds[i].id ? labeleds[i].id : labeleds[i].label.id) ] = labeleds[i].label ? labeleds[i].label : labeleds[i]; 340 364 } 341 365 } else { … … 351 375 menuItensLabel[index] = {type: "label", customName: menuItems[index].name, id: msg_folder+"/"+msg_number+"#"+index}; 352 376 } 377 378 353 379 $.contextMenu.types.label = function(item, opt, root) { 354 380 $('<span>'+item.customName+'</span><span class="removeLabeled" title="'+get_lang("Remove Label")+'">x</span>') -
branches/2.5/expressoMail1_2/js/draw_api.js
r8188 r8232 106 106 } 107 107 cExecute ("$this.imap_functions.get_folders_list&folder="+current_folder, update_tree_folders); 108 108 109 } 109 110 … … 239 240 var nn = new dNode({id:folders[i].folder_id, caption:lang_folder(folders[i].folder_name) + '<font style=color:red> (</font><span id="dftree_'+folders[i].folder_id+'_unseen" style=color:red>'+folders[i].folder_unseen+'</span><font style=color:red>)</font>', onClick:"change_folder('"+folders[i].folder_id+"','"+folders[i].folder_name+"')", plusSign:folders[i].folder_hasChildren}); 240 241 241 if( folders[i].folder_name.toLowerCase() == 'inbox' ) 242 Element('new_m').innerHTML = '<font style="color:red">' + folders[i].folder_unseen + '</font>'; 242 243 // if( folders[i].folder_name.toLowerCase() == 'inbox' ) 244 // Element('new_m').innerHTML = '<font style="color:black">' + folders[i].folder_unseen + '</font>'; 243 245 } 244 246 else … … 471 473 } 472 474 } 473 474 outOfficeVerify();475 475 } 476 476 … … 646 646 } 647 647 draw_new_tree_folder(false, forceLoadFolders); 648 draw_tree_labels(); 648 649 if( preferences['use_followupflags_and_labels'] == "1" ) 650 draw_tree_labels(); 651 649 652 if(Element("table_quota")) 650 653 connector.loadScript("InfoQuota"); … … 655 658 656 659 var handler_draw_box = function(data){ 660 populateSelectedMsgs(data.messagesIds); 657 661 draw_box(data, 'INBOX', true); 658 662 //alternate_border(0); … … 661 665 // Action on change folders. 662 666 function change_folder(folder, folder_name){ 663 if (openTab.imapBox[0] != folder) 667 if (parseInt(preferences.use_dynamic_contacts) && $(".to").length && $(".to").data( "autocomplete" ).menu.active){ 668 $(".to").data( "autocomplete" ).close(); 669 } 670 if (openTab.imapBox[0] != folder) 664 671 { 665 672 selectAllFolderMsgs(false); … … 667 674 var handler_draw_box = function(data) 668 675 { 669 676 populateSelectedMsgs(data.messagesIds); 670 677 if(!verify_session(data)) 671 678 return; … … 683 690 return true; 684 691 } 692 685 693 //MAILARCHIVE 686 694 //se for pasta local 687 695 if (/^local_messages/.test(current_folder)) { 688 696 $(".folders-loading").removeClass("folders-loading"); //remove o icone de loading ao clicar nas pastas locais 689 }690 else { //se não, processamento normal da pasta691 $.ajax({692 async: false,693 url: "controller.php?" + $.param( {action: "$this.imap_functions.getMessagesIds",694 folder: folder,695 msg_range_begin: "0",696 msg_range_end: "0",697 sort_box_type: "SORTARRIVAL",698 search_box_type: search_box_type,699 sort_box_reverse: "1"700 }),701 success: function(data){702 data = connector.unserialize(data);703 if(data){704 var _data = {};705 $.each(data,function(index,value){706 if (data[index]){707 _data[data[index]] = data[index];708 }709 });710 populateSelectedMsgs(_data);711 }712 },713 beforeSend: function( jqXHR, settings ){714 connector.showProgressBar();715 },716 complete: function( jqXHR, settings ){717 connector.hideProgressBar();718 }719 });720 697 } 721 698 proxy_mensagens.messages_list(current_folder,1,preferences.max_email_per_page,sort_box_type,search_box_type,sort_box_reverse,preferences.preview_msg_subject,preferences.preview_msg_tip,handler_draw_box); … … 917 894 if (document.getElementById("table_message_header_box_"+numBox).emptyBody) 918 895 return; 919 objCell.style.cursor = "col-resize"; 920 $(objCell).next().css('cursor','col-resize'); 921 896 objCell.style.cursor = "col-resize"; 897 $(objCell).next().css('cursor','col-resize'); 898 922 899 if (objCell.style.cursor == "col-resize" && detectLeftButton(ev)) { 923 900 var cellIndex = objCell.cellIndex; … … 942 919 943 920 document.getElementById("table_message_ruler").style.left = cellOffset+cellWidth; 944 syncColumns(); 921 syncColumns(); 945 922 } 946 923 ev.returnValue = false; … … 1649 1626 $(".lower").css("top", ($("#content_folders").height()-18) + $("#content_folders").offset().top); 1650 1627 if($(".shared-folders").length){ 1651 $(".shared-folders ").parent().find('.folder:not(".shared-folders")').droppable({1628 $(".shared-folders,.head_folder").parent().find('.folder:not(".shared-folders")').droppable({ 1652 1629 over : function(a, b){ 1653 1630 //SETA BORDA EM VOLTA DA PASTA 1631 $(b.helper).find(".draggin-folder,.draggin-mail").css("color", "green"); 1654 1632 over = $(this); 1655 1633 $(this).addClass("folder-over"); … … 1664 1642 } 1665 1643 }, 1666 out : function( ){1644 out : function(a,b){ 1667 1645 //RETIRA BORDA EM VOLTA DA PASTA 1646 $(b.helper).find(".draggin-folder,.draggin-mail").css("color", ""); 1668 1647 $(this).removeClass("folder-over"); 1669 1648 }, … … 1723 1702 1724 1703 $(this).addClass("selected_msg"); 1725 } 1726 updateSelectedMsgs($(this).find("input:checkbox").is(':checked'),$(this).attr("id")); 1727 } 1704 } 1705 updateSelectedMsgs($(this).find("input:checkbox").is(':checked'),$(this).attr("id")); 1706 } else if ( typeof $(event.target).attr("style") == "undefined" || $(event.target).attr("style").match(/background/g) == null ) { 1707 if($(this).find("input:checkbox").attr("checked") != "checked"){ 1708 1709 $(this).find("input:checkbox").trigger('click'); 1710 1711 $(this).addClass("selected_msg"); 1712 } 1713 updateSelectedMsgs($(this).find("input:checkbox").is(':checked'),$(this).attr("id")); 1714 } 1715 1728 1716 }); 1729 1717 } … … 1739 1727 draw_footer_box(headers_msgs.num_msgs); 1740 1728 Element('main_table').style.display = ''; 1741 if(is_ie6) // Stupid Fixing on IE6. 1742 setTimeout("resizeWindow()",1); 1743 else 1744 resizeWindow(); 1729 resizeWindow(); 1745 1730 if(debug) { 1746 1731 var _eTime = new Date(); … … 1752 1737 var msg_number = Element('msg_number').value; 1753 1738 if(!msg_folder && msg_number) { 1754 if ((msg_number.toString().indexOf('@') != -1) || !msg_number.toString().match(/[0-9]/)){ 1755 new_message_to(msg_number); 1756 } 1757 else 1758 new_message('new','null'); 1739 if ((msg_number.toString().indexOf('@') != -1) || !msg_number.toString().match(/[0-9]/)){ 1740 new_message_to(msg_number); 1741 } 1742 else 1743 new_message('new','null'); 1759 1744 } 1760 1745 else if(msg_folder && msg_number){ … … 1871 1856 //if (headers_msgs.msg_sample.body.length > 0) 1872 1857 tr_element.msg_sample = Base64.decode(headers_msgs.msg_sample.body).substr(0,180) + "..."; //trecho do body que sera exibido com o assunto; //blabla 1873 } else { 1858 tr_element.msg_sample = html_entities(tr_element.msg_sample); 1859 } else { 1874 1860 //if (headers_msgs.msg_sample.body.length > 0) 1875 1861 tr_element.msg_sample = Base64.decode(headers_msgs.msg_sample.body).substr(0,120) + "..."; //trecho do body que sera exibido com o assunto; 1876 } 1877 1878 // preferencia dos tooltips 1879 if(headers_msgs.msg_sample && preferences.preview_msg_tip == "1" && headers_msgs.msg_sample.body !== "") { 1880 tr_element.tip = Base64.decode(headers_msgs.msg_sample.body).substr(3,300) + "..."; //trecho do body que sera exibido no tool-tip; 1881 } 1862 tr_element.msg_sample = html_entities(tr_element.msg_sample); 1863 } 1882 1864 } 1883 1865 } 1884 1866 // preferencia dos tooltips 1867 if(headers_msgs.msg_sample && preferences.preview_msg_tip == "1" && headers_msgs.msg_sample.body !== "") { 1868 tr_element.tip = Base64.decode(headers_msgs.msg_sample.body).substr(3,300) + "..."; //trecho do body que sera exibido no tool-tip; 1869 } 1885 1870 1886 1871 if ((headers_msgs.Unseen == 'U') || (headers_msgs.Recent == 'N')){ … … 1925 1910 1926 1911 if ((headers_msgs.Forwarded == 'F') || (headers_msgs.Draft == 'X' && headers_msgs.Answered == 'A')){ 1927 td_element21.onclick=function(){search_emails(headers_msgs.subject.replace(/^(re: ?|fw: ?|enc: ?|res: ?|fwd: ?)*/gi,''),true);};1912 $(td_element21).on('click',function(){search_emails(headers_msgs.subject.replace(/^(re: ?|fw: ?|enc: ?|res: ?|fwd: ?)*/gi,''),true);}); 1928 1913 td_element21.innerHTML = "<img src ='templates/"+template+"/images/forwarded.png' title='"+get_lang('Forwarded')+"'>"; 1929 1914 headers_msgs.Draft = '' … … 1934 1919 td_element21.innerHTML = "<img src ='templates/"+template+"/images/draft.png' title='"+get_lang('Draft')+"'>"; 1935 1920 else if (headers_msgs.Answered == 'A'){ 1936 td_element21.onclick=function(){search_emails(headers_msgs.subject.replace(/^(re: ?|fw: ?|enc: ?|res: ?|fwd: ?)*/gi,''),true);};1921 $(td_element21).on('click',function(){search_emails(headers_msgs.subject.replace(/^(re: ?|fw: ?|enc: ?|res: ?|fwd: ?)*/gi,''),true);}); 1937 1922 td_element21.innerHTML = "<img src ='templates/"+template+"/images/answered.png' title='"+get_lang('Answered')+"'>"; 1938 1923 }else … … 2048 2033 this.title = title_to; 2049 2034 }; 2050 if (headers_msgs.to && headers_msgs.to[0] ) {2035 if (headers_msgs.to && headers_msgs.to[0] != null) { 2051 2036 if (headers_msgs.to[0].name != null){ 2052 2037 spanSender.innerHTML += headers_msgs.to[0].name; 2053 2038 }else if(headers_msgs.to[0].email != null) { 2054 2039 spanSender.innerHTML += headers_msgs.to[0].email; 2055 } 2040 }else { 2041 spanSender.innerHTML += get_lang("without destination"); 2042 } 2056 2043 } 2057 2044 }else if(headers_msgs.from !== undefined){ … … 2139 2126 $(td_element26).click(function() { 2140 2127 var messageClickedId = $(this).attr('id').match(/td_message_followup_([\d]+)/)[1]; 2141 2128 2129 var loading = $('#td_message_followup_' + messageClickedId + ', ' + 2130 'tr[role="'+messageClickedId+'_'+msg_folder+'"] #td_message_followup_search_' + messageClickedId).find(".flag-edited") 2131 .find('img[alt=Carregando]'); 2132 2133 2134 //Verificar se está carregando a bandeira. 2135 //Caso esteja ele sai da função até que seja carregado. 2136 if( loading.length ) { 2137 return false; 2138 } 2139 2142 2140 var followupColor = $('#td_message_followup_' + messageClickedId).find(".flag-edited").css('backgroundColor'); 2143 2141 … … 2192 2190 2193 2191 if(fail != 'success'){ 2194 $('#td_message_followup_' + messageClickedId + ', ' + 2195 'tr[role="'+messageClickedId+'_'+msg_folder+'"] #td_message_followup_search_' + messageClickedId).find(".flag-edited").css("background", "#CCCCCC") 2196 .find('img').remove(); 2197 MsgsCallbackFollowupflag[fail](); 2192 var msgFlag = $('#td_message_followup_' + messageClickedId + ', ' + 2193 'tr[role="'+messageClickedId+'_'+msg_folder+'"] #td_message_followup_search_' + messageClickedId).find(".flag-edited").css("background", "#CCCCCC"); 2194 2195 msgFlag.find('img').remove(); 2196 2197 //Insere a imagem da flag quando ocorre erro ao marcar a msg 2198 msgFlag.append("<img src='../prototype/modules/mail/img/flagEditor.png'/>"); 2199 2200 MsgsCallbackFollowupflag[fail](); 2198 2201 }else{ 2199 2202 $('#td_message_followup_' + messageClickedId + ', ' + 2200 2203 'tr[role="'+messageClickedId+'_'+msg_folder+'"] #td_message_followup_search_' + messageClickedId).attr('title', get_lang('Follow up')).find(".flag-edited").css("background", headers_msgs.followupflagged.backgroundColor) 2201 . find('img').remove();2204 .append("<img src='../prototype/modules/mail/img/flagEditor.png'/>"); 2202 2205 updateCacheFollowupflag(messageClickedId, msg_folder, true); 2203 2206 } … … 2215 2218 $('#td_message_followup_' + messageClickedId + ', ' + 2216 2219 'tr[role="'+messageClickedId+'_'+msg_folder+'"] #td_message_followup_search_' + messageClickedId).find(".flag-edited") 2217 .css({"background-image":"url(../prototype/modules/mail/img/flagEditor.png)"})2218 2220 .find('img').remove(); 2219 2221 … … 2222 2224 2223 2225 $('#td_message_followup_' + messageClickedId + ', ' + 2224 'tr[role="'+messageClickedId+'_'+msg_folder+'"] #td_message_followup_search_' + messageClickedId).find(".flag-edited") 2225 .css({" background-image":"url(../prototype/modules/mail/img/flagEditor.png)"});2226 'tr[role="'+messageClickedId+'_'+msg_folder+'"] #td_message_followup_search_' + messageClickedId).find(".flag-edited").html('<img src="../prototype/modules/mail/img/flagEditor.png">') 2227 .css({"width":"8px","height":"6px"/*"background-image":"url(../prototype/modules/mail/img/flagEditor.png)"*/}); 2226 2228 }); 2227 2229 … … 2229 2231 $('#td_message_followup_' + messageClickedId + ', ' + 2230 2232 'tr[role="'+messageClickedId+'_'+msg_folder+'"] #td_message_followup_search_' + messageClickedId).find(".flag-edited") 2231 .css({"background-image":"url(../prototype/modules/mail/img/flagEditor.png)"}).css("background", followupColor); 2233 .css("backgroundColor", followupColor) 2234 .find('img').remove(); //remove imagem carregando da bandeira 2235 2236 $('#td_message_followup_' + messageClickedId).find('.flag-edited').append("<img src='../prototype/modules/mail/img/flagEditor.png'/>"); 2237 2232 2238 2233 $(tr_element).addClass('selected_msg').find(':checkbox').trigger('click'); 2239 //Pega id do checkbox 2240 var id = $(tr_element).addClass('selected_msg').find(':checkbox').attr('id'); 2241 2242 //Verifica se o checkbox está selecionado 2243 if($('#' + id).attr('checked') != 'checked') 2244 $(tr_element).addClass('selected_msg').find(':checkbox').trigger('click'); 2234 2245 2235 2246 /** … … 2320 2331 var message_header = Element("message_header_"+search); 2321 2332 var handler_draw_box = function(data){ 2322 draw_box(data, current_folder,true); 2333 2334 if (typeof(clean_selected) == "undefined") 2335 populateSelectedMsgs(data.messagesIds); 2336 2337 draw_box(data, current_folder,true); 2323 2338 //Mostrar as msgs nao lidas de acordo com o filtro de relevancia 2324 2339 var msgs_unseen = 0; … … 2341 2356 sort_box_type = sort; 2342 2357 search_box_type = search; 2343 2344 if (typeof(clean_selected) == "undefined"){2345 $.ajax({2346 url: "controller.php?" + $.param( {action: "$this.imap_functions.getMessagesIds",2347 folder: get_current_folder(),2348 sort_box_type: "SORTARRIVAL",2349 search_box_type: search_box_type,2350 sort_box_reverse: "1"2351 }),2352 success: function(data){2353 data = connector.unserialize(data);2354 if(data){2355 var _data = {};2356 $.each(data,function(index,value){2357 if (value){2358 _data[index] = value;2359 }2360 });2361 populateSelectedMsgs(_data);2362 }2363 }2364 });2365 }2366 2358 2367 2359 proxy_mensagens.messages_list(current_folder,1,preferences.max_email_per_page,sort,search,sort_box_reverse,preferences.preview_msg_subject,preferences.preview_msg_tip,handler_draw_box); … … 2432 2424 function draw_message(info_msg, ID){ 2433 2425 // remove a flag $FilteredMessage da mensagem ao ser lida 2434 if(info_msg.Unseen == "U" ){2426 if(info_msg.Unseen == "U" && preferences['use_alert_filter_criteria'] == "1"){ 2435 2427 $.each(fromRules, function(index, value) { 2436 2428 if(value == info_msg.msg_folder){ … … 2479 2471 { 2480 2472 if(info_msg.msg_number.match("s[0-9]+")){ 2481 var new_info = info_msg.msg_number;2482 new_info = new_info.split("_")[1];2483 info_msg.next _message = info_msg.next_message+"_"+new_info;2484 info_msg.nextMsgBox = info_msg.nextMsgBox+"_"+new_info;2473 var msg_next = $('#'+info_msg.msg_number).next(); 2474 info_msg.next_message = msg_next.attr("id"); 2475 info_msg.nextMsgBox = msg_next.attr("name"); 2476 nextMsgBox = msg_next.attr("name"); 2485 2477 } 2486 2478 currentTab = ID; … … 2489 2481 //select_msg('null', 'down', true); 2490 2482 if (!msg_selected){ 2491 select_msg('null', 'down', true); 2483 if(!!parseInt(preferences.use_shortcuts)) 2484 select_msg('null', 'down', true); 2492 2485 msg_selected = true; 2493 2486 } … … 2495 2488 } 2496 2489 /*Ultima mensagem de cada página, exceto a ultima*/ 2497 else if( (current_page < total_pages) ){2490 else if( (current_page < total_pages) && !info_msg.msg_number.match("s[0-9]+") ){ 2498 2491 2499 2492 img_next_msg.onclick = function() … … 2559 2552 { 2560 2553 if(info_msg.msg_number.match("s[0-9]+")){ 2561 var new_info = info_msg.msg_number;2562 new_info = new_info.split("_")[1];2563 info_msg.prev _message = info_msg.prev_message+"_"+new_info;2564 info_msg.previousMsgBox = info_msg.previousMsgBox+"_"+new_info;2554 var msg_prev = $('#'+info_msg.msg_number).prev(); 2555 info_msg.prev_message = msg_prev.attr("id"); 2556 info_msg.previousMsgBox = msg_prev.attr("name"); 2557 previousMsgBox = msg_prev.attr("name"); 2565 2558 } 2566 2559 currentTab = ID; … … 2569 2562 //select_msg('null', 'up', false); 2570 2563 if (!msg_selected){ 2571 select_msg('null', 'up', true); 2564 if(!!parseInt(preferences.use_shortcuts)) 2565 select_msg('null', 'up', true); 2572 2566 msg_selected = true; 2573 2567 } … … 3010 3004 var option_export = '<span onclick="proxy_mensagens.export_all_messages()" onmouseover="this.className=\'reply_options_active\'" onmouseout="this.className=\'reply_options\'" class="reply_options">'+get_lang("Export")+'</span> | '; 3011 3005 var report_error = '<span onmouseover="this.className=\'reply_options_active\'" onmouseout="this.className=\'reply_options\'" class="reply_options" onclick=reports_window("'+currentTab+'");>'+get_lang("Report error")+'</span> | '; 3012 div_other_more_options.innerHTML += option_move + option_print + option_export + block_user + report_error; 3006 // Opção do menu 'Mais Ações' para criar filtro a partir da mensagem aberta: 3007 var option_create_filter = '<span onmouseover="this.className=\'reply_options_active\'" onmouseout="this.className=\'reply_options\'" class="reply_options" onclick=filter_from_msg(onceOpenedHeadersMessages[\'' + html_entities(info_msg.msg_folder) + '\'][' + info_msg.msg_number + ']);>' + get_lang("Create filter from message") + '</span> | '; 3008 div_other_more_options.innerHTML += option_create_filter + option_move + option_print + option_export + block_user + report_error; 3013 3009 3014 3010 … … 3509 3505 subject.innerHTML = html_entities(info_msg.subject); 3510 3506 subject.className = "header_message_field"; 3511 if( defaultCalendar == "expressoCalendar" &&$("#expressoCalendarid")[0]){3507 if($("#expressoCalendarid")[0]){ 3512 3508 var new_task_logo = document.createElement("IMG"); 3513 3509 new_task_logo.title = "Criar uma nova tarefa a partir deste email."; … … 4644 4640 delay : 300, 4645 4641 minLength: 0 4646 }).bind(' catcompleteopen', function(event, ui) {4642 }).bind('autocompleteopen', function(event, ui) { 4647 4643 4648 4644 $(this).data('is_open',true); 4649 4645 4650 }).bind(' catcompleteclose', function(event, ui) {4646 }).bind('autocompleteclose', function(event, ui) { 4651 4647 4652 4648 canMakeBox = true; 4653 4649 $(this).data('is_open',false); 4654 4650 $(this).blur().focus(); 4655 4651 }).data( "autocomplete" )._renderItem = function( ul, item ) { 4656 4652 var autocomplete = $(this)[0].element; 4657 4653 4658 //cálculo dinâmico da largura da lista 4659 var minwidth = 450; 4660 var width = (item.label ? item.label.length : (item.value ? item.value.length : (item.mail ? item.mail.length : 30 ))); 4661 width = (is_ie ? width*2 : (is_webkit && !is_mozilla ? width*4 : width*5)) + 30; 4662 if (width < minwidth) 4663 width = minwidth; 4664 4665 ul.css({"min-width":width, "max-height" : "180px", "overflow-y" : "auto", "min-height": "30px"}); 4654 ul.css({"width":'50%',"min-width":'600px', "max-height" : "180px", "overflow-y" : "auto", "min-height": "30px"}); 4666 4655 4667 4656 item.raty = ((item.number_of_messages*10)/topContact) > 1 ? ((item.number_of_messages*10)/topContact) : 1; … … 4753 4742 emQuickSearch(($(this).parents("tr:first").find("textarea").val() ? $(this).parents("tr:first").find("textarea").val() : input_search), "."+$(this).parents("tr:first").attr('class').split("-")[0], ID, undefined, true); 4754 4743 }); 4744 } 4745 4746 /* 4747 Anexa uma mensagem a mensagem sendo enviada. 4748 Parâmetros: 4749 folder_name: nome da pasta na qual a mensagem sendo anexada se encontra. 4750 message_number: id da mensagem sendo anexada. 4751 */ 4752 function attach_message (folder_name, message_number) { 4753 var ID = currentTab; 4754 var fileUploadMSG = $('#fileupload_msg'+ID); 4755 fileUploadMSG.find(' .attachments-list').show(); 4756 var att = new Object(); 4757 4758 4759 4760 var attach = {}; 4761 attach.fileName = onceOpenedHeadersMessages[folder_name][message_number].subject + '.eml'; 4762 attach.fullFileName = onceOpenedHeadersMessages[folder_name][message_number].subject + '.eml'; 4763 if(attach.fileName.length > 20){ 4764 attach.fileName = attach.fileName.substr(0, 17) + "... " + attach.fileName.substr(attach.fileName.length - 9, attach.fileName.length); 4765 } 4766 attach.error = false; 4767 attach.OK = true; 4768 if (folder_name.indexOf('local_messages_') == 0){ 4769 attach.fileSize = formatBytes(onceOpenedHeadersMessages[folder_name][message_number].size); 4770 } else { 4771 attach.fileSize = formatBytes(onceOpenedHeadersMessages[folder_name][message_number].Size); 4772 } 4773 var upload = $(DataLayer.render("../prototype/modules/mail/templates/attachment_add_itemlist.ejs", { 4774 file: attach 4775 })); 4776 $("#content_id_" + currentTab + " .save").button("enable"); 4777 upload.find('.att-box-loading').remove(); 4778 upload.append('<input type="hidden" name="fileId[]" value=\'' + idATT + '\'/>'); 4779 4780 upload.find('.att-box-delete').click(function() 4781 { 4782 $("#content_id_" + currentTab + " .save").button("enable"); 4783 var idAttach = $(this).parent().find('input[name="fileId[]"]').val(); 4784 fileUploadMSG.find(' .attachments-list').find('input[value="' + idAttach + '"]').remove(); 4785 delAttachment(ID, idAttach); 4786 $(this).parent().qtip("destroy"); 4787 $(this).parent().remove(); 4788 if(!fileUploadMSG.find(' .attachments-list').find(".att-box").length) 4789 { 4790 fileUploadMSG.find(' .attachments-list').hide(); 4791 } 4792 }); 4793 4794 var addtip = function(attach){ 4795 fileUploadMSG.find('.attachments-list .att-box:last').qtip( 4796 { 4797 content: DataLayer.render("../prototype/modules/mail/templates/attachment_add_itemlist_tooltip.ejs", { 4798 attach: attach 4799 }), 4800 position: { 4801 corner: { 4802 tooltip: 'bottomMiddle', 4803 target: 'topMiddle' 4804 }, 4805 adjust: { 4806 resize: true, 4807 scroll: true 4808 } 4809 }, 4810 show: { 4811 when: 'mouseover', 4812 // Don't specify a show event 4813 ready: false // Show the tooltip when ready 4814 }, 4815 hide: 'mouseout', 4816 // Don't specify a hide event 4817 style: { 4818 border: { 4819 width: 1, 4820 radius: 5 4821 }, 4822 width: { 4823 min: 75, 4824 max: 1000 4825 }, 4826 padding: 5, 4827 textAlign: 'center', 4828 tip: true, 4829 // Give it a speech bubble tip with automatic corner detection 4830 name: 'blue' // Style it according to the preset 'cream' style 4831 } 4832 }); 4833 } 4834 4835 if(folder_name.indexOf("local_messages_") != 0) 4836 { 4837 att.folder = folder_name; 4838 att.uid = message_number; 4839 att.type = 'imapMSG'; 4840 att.name = Base64.encode(onceOpenedHeadersMessages[folder_name][message_number].subject + '.eml'); 4841 var idATT = JSON.stringify(att); 4842 addAttachment(ID, idATT); 4843 4844 fileUploadMSG.find('.attachments-list').append(upload); 4845 addtip(attach); 4846 } 4847 else 4848 { 4849 var folder_trash = "INBOX"+cyrus_delimiter+special_folders["Trash"]; 4850 expresso_mail_archive.unarchieveToAttach(folder_name, folder_trash, message_number, function(data){ 4851 $.ajax({ 4852 url: "controller.php?action=$this.imap_functions.get_info_msg_archiver", 4853 data: {"idMsgs":data.idsMsg}, 4854 type: 'POST', 4855 async: false, 4856 success: function(data){ 4857 data = JSON.parse(connector.unserialize(data)); 4858 data = data[0]; 4859 att.folder = folder_trash; 4860 att.uid = data.uid; 4861 att.type = 'imapMSG'; 4862 att.name = Base64.encode(onceOpenedHeadersMessages[folder_name][message_number].subject + '.eml'); 4863 var idATT = JSON.stringify(att); 4864 addAttachment(ID, idATT); 4865 fileUploadMSG.find('.attachments-list').append(upload); 4866 addtip(attach); 4867 }, 4868 }); 4869 }); 4870 } 4871 upload.find('.att-box-loading').remove(); 4755 4872 } 4756 4873 … … 4933 5050 $(this).prev().show(); 4934 5051 }); 4935 fileUploadMSG.find(".fileUploadButton, .message-attach-link").button().filter(".fileUploadButton").click(function(){ 4936 fileUploadMSG.find("input:file").trigger("click"); 4937 }); 4938 4939 fileUploadMSG.find("input:file").fileupload({ 5052 5053 5054 fileUploadMSG.find(".button").button().filter(".fileinput-button").find(".ui-button-text").css("margin-top","2px").find("input:file").fileupload({ 4940 5055 //singleFileUploads : true,fileUploadMSG 4941 5056 sequentialUploads: true, … … 5113 5228 }); 5114 5229 }*/ 5115 });/*.css({ 5116 "height" : "20px", 5117 "width": (is_webkit ? "205px" : "100px"), 5118 "border-width": "0 0 0px 0px", 5119 "-moz-transform" : "rotate(-180deg) translate(5px, -0.5px) scale(1.1)", 5120 "-webkit-transform" : "rotate(-180deg) translate(0px, 0px)" 5121 }).end().end().end().*/ 5230 }).css({ 5231 "height" : ($.browser.mozilla ? "15px" : "20px"), 5232 // "width": (is_webkit ? "205px" : "100px"), 5233 "width" : "205px", 5234 "margin-top" : ($.browser.mozilla ? "10px" : "0"), 5235 "margin-right" : (is_mozilla ? "30px" : "0"), 5236 "border-width": "0 0 0px 0px", 5237 "transform" : "rotate(-360deg) translate(5px, -0.5px) scale(1.1)", 5238 "-webkit-transform" : "rotate(-360deg) translate(0px, 0px)" 5239 });/*.end().end().end().*/ 5240 5122 5241 fileUploadMSG.find(".message-attach-link").click(function(){ 5123 5242 jQuery('#message-attach-dialog').html(DataLayer.render("../prototype/modules/attach_message/attach_message.ejs", {})); … … 5149 5268 jQuery.each(selectedMessages[folder_name], function(message_number, message) { 5150 5269 if (message) { 5151 fileUploadMSG.find(' .attachments-list').show(); 5152 var att = new Object(); 5153 att.folder = folder_name; 5154 att.uid = message_number; 5155 att.type = 'imapMSG'; 5156 att.name = Base64.encode(onceOpenedMessages[folder_name][message_number].subject + '.eml'); 5157 var idATT = JSON.stringify(att); 5158 addAttachment( ID , idATT); 5159 var attach = {}; 5160 attach.fileName = onceOpenedMessages[folder_name][message_number].subject + '.eml'; 5161 attach.fullFileName = onceOpenedMessages[folder_name][message_number].subject + '.eml'; 5162 if(attach.fileName.length > 20) 5163 attach.fileName = attach.fileName.substr(0, 17) + "... " + attach.fileName.substr(attach.fileName.length-9, attach.fileName.length); 5164 5165 attach.error = false; 5166 attach.OK = true; 5167 attach.fileSize = formatBytes(onceOpenedMessages[folder_name][message_number].size); 5168 var upload = $(DataLayer.render("../prototype/modules/mail/templates/attachment_add_itemlist.ejs", {file : attach})); 5169 $("#content_id_"+currentTab+" .save").button("enable"); 5170 upload.find('.att-box-loading').remove(); 5171 upload.append('<input type="hidden" name="fileId[]" value=\''+idATT+'\'/>'); 5172 5173 upload.find('.att-box-delete').click(function(){ 5174 $("#content_id_"+currentTab+" .save").button("enable"); 5175 var idAttach = $(this).parent().find('input[name="fileId[]"]').val(); 5176 fileUploadMSG.find(' .attachments-list').find('input[value="'+idAttach+'"]').remove(); 5177 delAttachment(ID,idAttach); 5178 $(this).parent().qtip("destroy"); 5179 $(this).parent().remove(); 5180 if(!fileUploadMSG.find(' .attachments-list').find(".att-box").length){ 5181 fileUploadMSG.find(' .attachments-list').hide(); 5182 } 5183 }); 5184 5185 fileUploadMSG.find('.attachments-list').append(upload); 5186 5187 upload.find('.att-box-loading').remove(); 5188 5189 fileUploadMSG.find('.attachments-list .att-box:last').qtip({ 5190 content: DataLayer.render("../prototype/modules/mail/templates/attachment_add_itemlist_tooltip.ejs", {attach : attach}), 5191 position: { 5192 corner: { 5193 tooltip: 'bottomMiddle', 5194 target: 'topMiddle' 5195 }, 5196 adjust: { 5197 resize: true, 5198 scroll: true 5199 } 5200 }, 5201 show: { 5202 when: 'mouseover', // Don't specify a show event 5203 ready: false // Show the tooltip when ready 5204 }, 5205 hide: 'mouseout', // Don't specify a hide event 5206 style: { 5207 border: { 5208 width: 1, 5209 radius: 5 5210 }, 5211 width: { 5212 min: 75, 5213 max : 1000 5214 }, 5215 padding: 5, 5216 textAlign: 'center', 5217 tip: true, // Give it a speech bubble tip with automatic corner detection 5218 name: 'blue' // Style it according to the preset 'cream' style 5219 } 5220 }); 5270 /* Anexa a mensagem especificada (por folder e id_msg) 5271 na mensagem sendo criada.*/ 5272 attach_message(folder_name, message_number); 5221 5273 } 5222 5274 }); … … 5781 5833 } 5782 5834 5783 function verifyContext(type) { 5784 var folderN = $(".menu-sel").attr("role") ? $(".menu-sel").attr("role") : get_current_folder(); 5785 if(type == "unarchive"){ 5786 expresso_mail_archive.unarchieve(folderN, null, null); 5787 } else { 5788 archive_msgs(folderN,null,null) 5789 } 5790 } 5791 5835 function verifyContext(type) { 5836 var folderN = $(".menu-sel").attr("role") ? $(".menu-sel").attr("role") : get_current_folder(); 5837 if(type == "unarchive"){ 5838 expresso_mail_archive.unarchieve(folderN, null, null); 5839 } else { 5840 archive_msgs(folderN,null,null) 5841 } 5842 } 5843 5792 5844 function draw_footer_box(num_msgs){ 5793 5845 folder = get_current_folder(); … … 5815 5867 ((expresso_offline)?" ":'<span class="message_options_import"><span ' + change_font_color + ' title="'+get_lang("Import")+'" class="message_options" onclick="import_window()">'+get_lang("Import")+'</span></span>'); 5816 5868 5817 5869 5818 5870 //Link arquivar e desarquivar com ação 5819 5871 //MAILARCHIVER -
branches/2.5/expressoMail1_2/js/mail_archiver.js
r8126 r8232 427 427 428 428 var fcaption = ""; 429 430 if(destination_folder.substr(0,5) == 'local'){ 431 expresso_mail_archive.folder_destination = destination_folder.replace("local_messages_",""); 432 } 433 else{ 434 expresso_mail_archive.folder_destination = destination_folder; 435 } 429 430 if(destination_folder.substr(0,5) == 'local'){ 431 expresso_mail_archive.folder_destination = destination_folder.replace("local_messages_",""); 432 } 433 else{ 434 expresso_mail_archive.folder_destination = destination_folder; 435 } 436 436 437 437 438 if(!expresso_mail_archive.archivefolder){ 438 expresso_mail_archive.getFolderInfo(expresso_mail_archive.folder_destination); 439 expresso_mail_archive.getFolderInfo(expresso_mail_archive.folder_destination); 439 440 if(typeof(expresso_mail_archive.folder) != "undefined"){ 440 441 //window.alert('folder.path -> ' + expresso_mail_archive.folder.path); … … 575 576 } 576 577 577 578 579 580 /** 581 *Unarchieve Message 582 * 583 *@author Cassiano Dal Pizzol [cassiano.dalpizzol@serpro.gov.br] 584 * 585 *@param folder Original Folder of the message 586 *@param new_folder The new folder of the message 587 *@param msgs_number id of the messages 588 */ 589 MailArchiver.prototype.unarchieve = function (folder, new_folder, msgs_number){ 590 try{ 591 write_msg(get_lang("Starting to unarchive messages")); 578 MailArchiver.prototype.unarchieveToAttach = function (folder, new_folder, msgs_number, callback){ 579 try{ 580 581 if(typeof callback !== 'function') callback = function(){}; 582 583 if(typeof(expresso_mail_archive.idMsgsToAttach) == "undefined"){ 584 expresso_mail_archive.idMsgsToAttach = new Array(); 585 } 586 //write_msg(get_lang("Starting to unarchive messages")); 592 587 expresso_mail_archive.isArchiveOperation = true; 593 588 if(currentTab.toString().indexOf("_r") != -1){ … … 599 594 600 595 if (parseInt(msgs_number) > 0 || msgs_number.length > 0){ 601 expresso_mail_archive.message_list = new Array(); 602 expresso_mail_archive.CreateMessageList(msgs_number); 603 if((expresso_mail_archive.message_list.length > 0) && (expresso_mail_archive.message_list[0] != '')) { 596 597 expresso_mail_archive.messageToAttach = msgs_number; 598 if(expresso_mail_archive.messageToAttach) { 599 604 600 expresso_mail_archive.unarchivecounter = 0; 605 601 expresso_mail_archive.unarchive_error_counter=0; 606 expresso_mail_archive.getFolderInfo(folder.replace("local_messages_","")); 602 expresso_mail_archive.getFolderInfo(folder.replace("local_messages_","")); 607 603 expresso_mail_archive.unarchievefolder = expresso_mail_archive.folder.name; 608 604 (new_folder != null)?expresso_mail_archive.unarchievenewfolder = new_folder:expresso_mail_archive.unarchievenewfolder='INBOX'; 609 605 610 expresso_mail_archive.unarchieve Handler();606 expresso_mail_archive.unarchieveToAttachHandler(callback); 611 607 612 608 if(currentTab.toString().indexOf("_r") != -1){ … … 628 624 } 629 625 630 /** 631 * 632 *Unarchieve Message Handler 633 * 634 *@author Cassiano Dal Pizzol [cassiano.dalpizzol@serpro.gov.br] 635 * 636 **/ 637 MailArchiver.prototype.unarchieveHandler = function(){ 638 try{ 639 var email = mail_archive_protocol+'://'+mail_archive_host+':'+mail_archive_port+'/mail/' + expresso_mail_archive.session.id +'/'+ expresso_mail_archive.folder.path + '/'+ expresso_mail_archive.message_list[expresso_mail_archive.unarchivecounter] + '.eml'; 626 MailArchiver.prototype.unarchieveToAttachHandler = function(uCallback){ 627 try{ 628 var email = mail_archive_protocol+'://'+mail_archive_host+':'+mail_archive_port+'/mail/' + expresso_mail_archive.session.id +'/'+ expresso_mail_archive.folder.path + '/'+ expresso_mail_archive.messageToAttach + '.eml'; 640 629 641 630 //Creates a new object to unarchive messages. It's a CXF Add-on CORS component … … 647 636 for (var w=0; w < expresso_mail_archive.allcompletemessagesbyfolder.length; w++){ 648 637 649 if(expresso_mail_archive.allcompletemessagesbyfolder[w]["msg_number"] == expresso_mail_archive.message _list[expresso_mail_archive.unarchivecounter]){638 if(expresso_mail_archive.allcompletemessagesbyfolder[w]["msg_number"] == expresso_mail_archive.messageToAttach){ 650 639 var timestamp = expresso_mail_archive.allcompletemessagesbyfolder[w]["timestamp"]; 651 640 … … 702 691 } 703 692 } 693 var id = expresso_mail_archive.messageToAttach; 694 var source = encodeURIComponent(UnarchiveReqHandler.handler.responseText) + "#@#@#@"; 695 var params = 696 "&folder=" + escape(expresso_mail_archive.unarchievenewfolder) + 697 "&source=" + source + 698 "×tamp=" + timestamp + 699 "&madata=true" + 700 "&flags=" + flags + 701 "&id=" + id; 702 703 704 var handler_unarchive = function(data){ 705 expresso_mail_archive.unarchieveToAttachController(data); 706 } 707 write_msg(get_lang("Please, Wait the messages from archieve be ready.")); 708 709 $.ajax({ 710 url: "controller.php?action=$this.imap_functions.unarchive_mail", 711 success: function(data){ 712 data = connector.unserialize(data); 713 expresso_mail_archive.idMsgsToAttach.push(data.idsMsg); 714 handler_unarchive(data); 715 uCallback(data); 716 }, 717 async: false, 718 data: params, 719 type: 'POST', 720 721 }); 722 723 } 724 725 726 UnarchiveReqHandler.handler.open("GET", email, true); 727 if(UnarchiveReqHandler.handler.overrideMimeType){ 728 UnarchiveReqHandler.handler.overrideMimeType("message/rfc822; charset=windows-1252"); 729 } 730 UnarchiveReqHandler.handler.send(); 731 } 732 catch(e){ 733 write_msg(get_lang('Unarchive error: ' + e)); 734 } 735 } 736 737 MailArchiver.prototype.unarchieveToAttachController = function(data){ 738 739 if (data){ 740 if (data.error != "") { 741 expresso_mail_archive.unarchive_error_counter++; 742 } 743 744 } 745 } 746 747 748 /** 749 *Unarchieve Message 750 * 751 *@author Cassiano Dal Pizzol [cassiano.dalpizzol@serpro.gov.br] 752 * 753 *@param folder Original Folder of the message 754 *@param new_folder The new folder of the message 755 *@param msgs_number id of the messages 756 */ 757 MailArchiver.prototype.unarchieve = function (folder, new_folder, msgs_number){ 758 try{ 759 760 var aclShare = false; 761 $.ajax({ 762 url: 'controller.php?' + $.param( { action: '$this.imap_functions.verifyShareFolder', folder: new_folder } ), 763 success: function( data ){ 764 data = connector.unserialize( data ); 765 if(data != null){ 766 if(!data.status){ 767 aclShare = true; 768 } 769 } 770 771 }, 772 async: false 773 }); 774 775 if(aclShare){ 776 write_msg(get_lang("You don't have permission for this operation in this shared folder!")); 777 return false; 778 } 779 780 write_msg(get_lang("Starting to unarchive messages")); 781 expresso_mail_archive.isArchiveOperation = true; 782 if(currentTab.toString().indexOf("_r") != -1){ 783 msgs_number = currentTab.toString().substr(0,currentTab.toString().indexOf("_r")); 784 } 785 786 if(!msgs_number) 787 msgs_number = get_selected_messages(); 788 789 if (parseInt(msgs_number) > 0 || msgs_number.length > 0){ 790 expresso_mail_archive.message_list = new Array(); 791 expresso_mail_archive.CreateMessageList(msgs_number); 792 if((expresso_mail_archive.message_list.length > 0) && (expresso_mail_archive.message_list[0] != '')) { 793 expresso_mail_archive.unarchivecounter = 0; 794 expresso_mail_archive.unarchive_error_counter=0; 795 expresso_mail_archive.getFolderInfo(folder.replace("local_messages_","")); 796 expresso_mail_archive.unarchievefolder = expresso_mail_archive.folder.name; 797 (new_folder != null)?expresso_mail_archive.unarchievenewfolder = new_folder:expresso_mail_archive.unarchievenewfolder='INBOX'; 798 799 expresso_mail_archive.unarchieveHandler(); 800 801 if(currentTab.toString().indexOf("_r") != -1){ 802 delete_border(currentTab,'false'); 803 } 804 } 805 else{ 806 write_msg(get_lang('No selected message.')); 807 } 808 } 809 else 810 write_msg(get_lang('No selected message.')); 811 812 clear_selected_messages(); 813 } 814 catch (e){ 815 write_msg(get_lang('Unarchive error: ' + e)); 816 } 817 } 818 819 /** 820 * 821 *Unarchieve Message Handler 822 * 823 *@author Cassiano Dal Pizzol [cassiano.dalpizzol@serpro.gov.br] 824 * 825 **/ 826 MailArchiver.prototype.unarchieveHandler = function(){ 827 try{ 828 var email = mail_archive_protocol+'://'+mail_archive_host+':'+mail_archive_port+'/mail/' + expresso_mail_archive.session.id +'/'+ expresso_mail_archive.folder.path + '/'+ expresso_mail_archive.message_list[expresso_mail_archive.unarchivecounter] + '.eml'; 829 830 //Creates a new object to unarchive messages. It's a CXF Add-on CORS component 831 var UnarchiveReqHandler = new cxf_cors_request_object(); 832 UnarchiveReqHandler.init(); 833 834 //Both XDomainRequest and XMLHttpRequest L2 supports onload event 835 UnarchiveReqHandler.handler.onload = function(){ 836 for (var w=0; w < expresso_mail_archive.allcompletemessagesbyfolder.length; w++){ 837 838 if(expresso_mail_archive.allcompletemessagesbyfolder[w]["msg_number"] == expresso_mail_archive.message_list[expresso_mail_archive.unarchivecounter]){ 839 var timestamp = expresso_mail_archive.allcompletemessagesbyfolder[w]["timestamp"]; 840 841 //Get local tagged message data 842 var flags = new String(""); 843 844 //Forwarded is special one: marks as "answered" and "draft" 845 if(expresso_mail_archive.allcompletemessagesbyfolder[w]["Forwarded"]){ 846 if(expresso_mail_archive.allcompletemessagesbyfolder[w]["Forwarded"] == 'F') 847 flags += 'A:X'+':'; 848 } 849 else{ 850 //Answered tag 851 if(expresso_mail_archive.allcompletemessagesbyfolder[w]["Answered"]) 852 if(expresso_mail_archive.allcompletemessagesbyfolder[w]["Answered"] == 'A') 853 flags += 'A'+':'; 854 else 855 flags += ':'; 856 else 857 flags += ':'; 858 859 //Draft tag 860 if(expresso_mail_archive.allcompletemessagesbyfolder[w]["Draft"]) 861 if(expresso_mail_archive.allcompletemessagesbyfolder[w]["Draft"] == 'X') 862 flags += 'D'+':'; 863 else 864 flags += ':'; 865 else 866 flags += ':'; 867 } 868 869 //Flagged tag 870 if(expresso_mail_archive.allcompletemessagesbyfolder[w]["Flagged"]) 871 if(expresso_mail_archive.allcompletemessagesbyfolder[w]["Flagged"] == 'F') 872 flags += 'F'+':'; 873 else 874 flags += ':'; 875 else 876 flags += ':'; 877 878 //Unseen tag 879 if(expresso_mail_archive.allcompletemessagesbyfolder[w]["Unseen"]) 880 if(expresso_mail_archive.allcompletemessagesbyfolder[w]["Unseen"] == 'U') 881 flags += 'U'; 882 else 883 flags += ''; 884 else 885 flags += ''; 886 887 //Imap tag hash id 888 flags += "#@#@#@"; 889 890 break; 891 } 892 } 704 893 var id = expresso_mail_archive.message_list[expresso_mail_archive.unarchivecounter]; 705 894 var source = encodeURIComponent(UnarchiveReqHandler.handler.responseText) + "#@#@#@"; … … 717 906 write_msg(get_lang('Unarchiving message %1 of %2', (expresso_mail_archive.unarchivecounter + 1), expresso_mail_archive.message_list.length)); 718 907 719 cExecute ("$this.imap_functions.unarchive_mail&", handler_unarchive, params); 908 //cExecute ("$this.imap_functions.unarchive_mail&", handler_unarchive, params); 909 910 $.ajax({ 911 url: "controller.php?action=$this.imap_functions.unarchive_mail", 912 data: params, 913 type: 'POST', 914 async: false, 915 success: function(data){ 916 handler_unarchive(connector.unserialize(data)); 917 }, 918 }); 919 920 921 720 922 } 721 923 … … 846 1048 expresso_mail_archive.message_list = new Array(); 847 1049 848 expresso_mail_archive.currentfolder = folder.replace("local_messages_",""); 849 850 expresso_mail_archive.listMessages(expresso_mail_archive.currentfolder); 1050 expresso_mail_archive.currentfolder = folder.replace("local_messages_",""); 1051 1052 expresso_mail_archive.listMessages(expresso_mail_archive.currentfolder); 851 1053 852 1054 // This is necessary 'couse we can get a delete operation while an unarchive operation … … 956 1158 expresso_mail_archive.message_list = new Array(); 957 1159 958 expresso_mail_archive.getFolderInfo(expresso_mail_archive.currentfolder); 959 expresso_mail_archive.getFolderInfo(expresso_mail_archive.folder_destination); 960 expresso_mail_archive.listMessages(expresso_mail_archive.currentfolder); 1160 expresso_mail_archive.getFolderInfo(expresso_mail_archive.currentfolder); 1161 expresso_mail_archive.getFolderInfo(expresso_mail_archive.folder_destination); 1162 expresso_mail_archive.listMessages(expresso_mail_archive.currentfolder); 961 1163 962 1164 expresso_mail_archive.resetObject(); … … 1258 1460 if(folderId == 'local_root') 1259 1461 folderId = ""; 1260 var exp_verifyId = RegExp("^messages\_[0-9|a-z]+\-[0-9|a-z|\-]+$"); 1261 if(exp_verifyId.test(folderId)) 1262 folderId = folderId.replace("messages_", ""); 1462 var exp_verifyId = RegExp("^messages\_[0-9|a-z]+\-[0-9|a-z|\-]+$"); 1463 if(exp_verifyId.test(folderId)) 1464 folderId = folderId.replace("messages_", ""); 1263 1465 ArchiveServices.getFolderInfo(expresso_mail_archive.getFolderInfoOperationOK, expresso_mail_archive.getFolderInfoOperationFailure, expresso_mail_archive.session.id, folderId); 1264 1466 } … … 1296 1498 1297 1499 MailArchiver.prototype.deleteAllMessages = function(folderId){ 1298 try{ 1500 try{ 1299 1501 var objfolder = new Object(); 1300 objfolder.folder = folderId; 1502 objfolder.folder = folderId; 1301 1503 1302 1504 var query_data = expresso_mail_archive.queryconfig.query(objfolder); … … 1337 1539 } 1338 1540 var objfolder = new Object(); 1339 var exp_verifyId = RegExp("^messages\_[0-9|a-z]+\-[0-9|a-z|\-]+$"); 1340 if(exp_verifyId.test(folderid)) 1341 folderid = folderid.replace("messages_", ""); 1342 objfolder.folder = folderid; 1541 var exp_verifyId = RegExp("^messages\_[0-9|a-z]+\-[0-9|a-z|\-]+$"); 1542 if(exp_verifyId.test(folderid)) 1543 folderid = folderid.replace("messages_", ""); 1544 objfolder.folder = folderid; 1343 1545 //var testing_data_xml = '<?xml version="1.0" encoding="UTF-8"?><query lowerIndex="0" upperIndex="50"><folder id="'+folderid+'"/><order asc="date"/><order desc="subject"/></query>'; 1344 1546 //var testing_data_json_mapped = '{"query":{"@lowerIndex":"0", "@upperIndex":"50", "folder":[{"@id":"'+folderid+'"}], "order":[{"@asc":"date", "@desc":"subject"}]}}'; 1345 1547 var query_data = expresso_mail_archive.queryconfig.query(objfolder); 1346 expresso_mail_archive.getFolderInfo(folderid); 1548 1549 expresso_mail_archive.getFolderInfo(folderid); 1347 1550 expresso_mail_archive.currentfolder = folderid; 1348 1551 … … 1404 1607 } 1405 1608 1609 1610 MailArchiver.prototype.getMessagesByFolder = function(folderid, searchType){ 1611 try{ 1612 if(searchType == "ALL") 1613 var query_messages = '{"query":{"folder":[{"@id":"'+folderid+'"}], "order":[{"@asc":"date"}]}}'; 1614 else 1615 var query_messages = '{"query":{"folder":[{"@id":"'+folderid+'"}], "tags":[{"@contains":"'+searchType+'"}], "order":[{"@asc":"date"}]}}'; 1616 ArchiveServices.listMessages(expresso_mail_archive.getMessagesByFolderOperationOK, expresso_mail_archive.getMessagesByFolderOperationFailure, expresso_mail_archive.session.id, query_messages); 1617 } 1618 catch (e){ 1619 expresso_mail_archive.getFaultInfo(); 1620 } 1621 } 1622 1623 MailArchiver.prototype.getMessagesByFolderOperationOK = function(returnService){ 1624 var msglist = new Array(); 1625 var msglistcomplete = new Array(); 1626 var msgAll = new Array(); 1627 for(var i=0; i< returnService.getReturn().length; i++){ 1628 //Array montado apenas com ids para tratamento de seleção de mensagens independente de paginação 1629 msglist.push(returnService.getReturn()[i]._id); 1630 1631 msgAll.push(returnService.getReturn()[i]); 1632 1633 //Incremento de contadores para atualização da aba de listagem 1634 if(returnService.getReturn()[i]._tags.indexOf("unseen") != -1){ 1635 expresso_mail_archive.tot_unseen_msgs_tab++; 1636 } 1637 expresso_mail_archive.tot_msgs_tab++; 1638 //Array montado para operação de desarquivamento 1639 var ExpSerialized = expresso_mail_archive.pattern.toExpressoHeader(returnService.getReturn()[i]); 1640 msglistcomplete.push(connector.unserialize(ExpSerialized)); 1641 } 1642 expresso_mail_archive.allmessagesbyfolder = msglist; 1643 expresso_mail_archive.allcompletemessagesbyfolder = msglistcomplete; 1644 expresso_mail_archive.msgAll = msgAll; 1645 } 1646 1647 MailArchiver.prototype.getMessagesByFolderOperationFailure = function(ServiceFault){ 1648 window.alert('listAllmessagesByFolder FALHOU!\n' + ServiceFault.getReturn()); 1649 } 1650 1651 1406 1652 //List all messages by folder given and set a array with all messages ids 1407 1653 MailArchiver.prototype.listAllMessagesByFolder = function(folderid, searchType){ … … 1521 1767 if(msgfound){ 1522 1768 expresso_mail_archive.currentheaders = headerMsg; 1769 expresso_mail_archive.subjectPreview = headerMsg.subject; 1523 1770 return(headerMsg); 1524 1771 } … … 1543 1790 bodies.push(temp); 1544 1791 } 1792 expresso_mail_archive.bodyPreview = temp.getReturn(); 1545 1793 return bodies; 1546 1794 } … … 1548 1796 expresso_mail_archive.getFaultInfo(); 1549 1797 } 1798 } 1799 1800 1801 MailArchiver.prototype.getPreviewToAttach = function(id){ 1802 expresso_mail_archive.getMessageInfo(id); 1803 expresso_mail_archive.getMessageBodies([id]); 1550 1804 } 1551 1805 … … 1624 1878 return; 1625 1879 } 1880 expresso_mail_archive.te = returnService.getReturn(); 1626 1881 var msgBody = returnService.getReturn(); 1627 1882 //var msgHeaders = expresso_mail_archive.getMessageHeaders(expresso_mail_archive.currentmessage); … … 1918 2173 var filters = eval('(' + expresso_mail_archive.queryconfig.pharseSearchFields(fields) + ')'); 1919 2174 2175 2176 1920 2177 if(folderlist.indexOf("#") != -1) 1921 2178 filters.folder = folderlist.substr(0, folderlist.indexOf("#")); … … 1928 2185 1929 2186 expresso_mail_archive.querydata = expresso_mail_archive.search_queryconfig.query(filters); 1930 2187 2188 2189 1931 2190 //var query_data = '<?xml version="1.0" encoding="UTF-8"?><query subject="teste"><folder id="inbox"/><order asc="date"/></query>'; 1932 2191 ArchiveServices.listMessages(expresso_mail_archive.searchOperationOK, expresso_mail_archive.searchOperationFailure, expresso_mail_archive.session.id, expresso_mail_archive.querydata); … … 1962 2221 1963 2222 //expresso_mail_archive.queryresult = msglist; 1964 expresso_mail_archive.search_queryresult = msglist; 2223 expresso_mail_archive.search_queryresult = msglist; 1965 2224 //expresso_mail_archive.messageslisted = msglist2; 1966 2225 expresso_mail_archive.search_message_list = msglist2; … … 2096 2355 var ExpSerialized2 = expresso_mail_archive.pattern.toExpressoHeader(serviceReturn.getReturn()); 2097 2356 var msgitem2 = connector.unserialize(ExpSerialized2); 2357 if(!expresso_mail_archive.messageslisted){ 2358 expresso_mail_archive.messageslisted = []; 2359 } 2098 2360 expresso_mail_archive.messageslisted.push(msgitem2); 2099 2361 expresso_mail_archive.getMessageHeaders(serviceReturn.getReturn().getId()); 2362 2100 2363 } 2101 2364 else{ -
branches/2.5/expressoMail1_2/js/main.js
r8188 r8232 1 // Tempo do auto refresh (em milisegundos)2 1 var time_refresh = 150000; 3 2 … … 152 151 153 152 154 if(preferences.show_name_print_messages == "1") { 155 var getUserName = document.getElementById("user_info"); 156 var userName = getUserName.innerHTML; 157 var position = userName.indexOf("-"); 158 var userName = userName.substring(3, position); 159 cabecalho = '<h4>' + userName; 160 } 161 162 current_folder="INBOX"; 163 164 //MAILARCHIVER-02 165 //Try to get ArchiveServices object directly 166 if(ArchiveServices) 167 expresso_mail_archive.Startup(); 168 //ArchiveServices not runnnig: catch the user preferences to set up message at header 169 else{ 170 if(preferences.use_local_messages=="1") 171 write_msg(get_lang('Sorry, but Mail Archiver does not seems to be running or installed at this workstation. By now, we are turning off local messages!')); 172 } 173 174 //cExecute ("$this.db_functions.get_dropdown_contacts", save_contacts); //Save contacts needs preferences. 175 $.ajax({ 176 async: false, 177 url: "controller.php?" + $.param( {action: "$this.imap_functions.getMessagesIds", 178 folder: get_current_folder(), 179 msg_range_begin: "0", 180 msg_range_end: "0", 181 sort_box_type: "SORTARRIVAL", 182 search_box_type: search_box_type, 183 sort_box_reverse: "1" 184 }), 185 success: function(data){ 186 data = connector.unserialize(data); 187 if(data){ 188 var _data = {}; 189 $.each(data,function(index,value){ 190 if (data[index]){ 191 _data[data[index]] = data[index]; 192 } 193 }); 194 populateSelectedMsgs(_data); 195 } 196 }, 197 beforeSend: function( jqXHR, settings ){ 198 connector.showProgressBar(); 199 }, 200 complete: function( jqXHR, settings ){ 201 connector.hideProgressBar(); 153 if(preferences.show_name_print_messages == "1") { 154 var getUserName = document.getElementById("user_info"); 155 var userName = getUserName.innerHTML; 156 var position = userName.indexOf("-"); 157 var userName = userName.substring(3, position); 158 cabecalho = '<h4>' + userName; 159 } 160 161 current_folder="INBOX"; 162 163 //MAILARCHIVER-02 164 //Try to get ArchiveServices object directly 165 if(ArchiveServices) 166 expresso_mail_archive.Startup(); 167 //ArchiveServices not runnnig: catch the user preferences to set up message at header 168 else{ 169 if(preferences.use_local_messages=="1") 170 write_msg(get_lang('Sorry, but Mail Archiver does not seems to be running or installed at this workstation. By now, we are turning off local messages!')); 171 } 172 173 // cExecute ("$this.db_functions.get_dropdown_contacts", save_contacts); //Save contacts needs preferences. 174 175 cExecute ("$this.imap_functions.get_range_msgs2&folder=INBOX&msg_range_begin=1&msg_range_end="+preferences.max_email_per_page+"&sort_box_type=SORTARRIVAL&search_box_type=ALL&sort_box_reverse=1", handler_draw_box); 176 177 if(preferences.hide_folders == "1") 178 Element('divAppboxHeader').innerHTML = title_app_menu; 179 180 //Desbilitado limpeza de lixeira por request. Ticket #3253 181 //if (preferences.delete_trash_messages_after_n_days != 0) 182 /// cExecute ("$this.imap_functions.automatic_trash_cleanness&before_date="+preferences.delete_trash_messages_after_n_days+"&cyrus_delimiter="+cyrus_delimiter, handler_automatic_trash_cleanness); 183 184 //if(preferences.outoffice == "1") 185 // 186 187 //Troca da forma de construção de menu para o plugin jquery.contextMenu 188 //ConstructMenuTools(); 189 //MAILARCHIVER-00 190 //if ( (preferences.use_local_messages==1) && (expresso_local_messages.is_offline_installed()) ) //Precisa ser feito após a renderização da caixa de emails 191 //check_mail_in_queue(); 192 193 // Insere a applet de criptografia 194 if (preferences.use_signature_digital_cripto == '1'){ 195 loadApplet(); 196 } 197 // Fim da inserção da applet 198 cExecute("$this.imap_functions.get_folders_list&onload=true", update_menu); 199 //update_menu(Folder.getList(false)); 200 201 if($.cookie('collapse_folders') == "true"){ 202 if(!is_ie) 203 $("#folderscol").addClass( "hidden"); 204 else 205 $("#folderscol").hide(); 206 $(".collapse_folders").addClass("ui-icon ui-icon-triangle-1-e").children().attr('title', "Expandir"); 207 refresh(); 208 resizeWindow(); 209 } 210 else{ 211 $(".collapse_folders").addClass("ui-icon ui-icon-triangle-1-w").children().attr('title', "Ocultar"); 212 refresh(); 213 resizeWindow(); 214 } 215 216 $(".collapse_folders_td").attr('title', "Ocultar/Expandir").click(function(){ 217 if($("#folderscol").css("display") != "none"){ 218 if(!is_ie) 219 $("#folderscol").addClass( "hidden"); 220 else 221 $("#folderscol").hide(); 222 223 $(".collapse_folders").removeClass("ui-icon-triangle-1-w"); 224 $(".collapse_folders").addClass("ui-icon-triangle-1-e"); 225 $(".collapse_folders").parent().attr('title', "Expandir"); 226 $.cookie('collapse_folders', "true"); 227 refresh(); 228 resizeWindow(); 229 }else{ 230 if(!is_ie) 231 $("#folderscol").removeClass( "hidden"); 232 else 233 $("#folderscol").show(); 234 $(".collapse_folders").removeClass("ui-icon-triangle-1-e"); 235 $(".collapse_folders").addClass("ui-icon-triangle-1-w"); 236 $(".collapse_folders").parent().attr('title', "Ocultar"); 237 $.cookie('collapse_folders', "false"); 238 refresh(); 239 resizeWindow(); 202 240 } 203 }); 204 cExecute ("$this.imap_functions.get_range_msgs2&folder=INBOX&msg_range_begin=1&msg_range_end="+preferences.max_email_per_page+"&sort_box_type=SORTARRIVAL&search_box_type=ALL&sort_box_reverse=1", handler_draw_box); 205 206 if(preferences.hide_folders == "1") 207 Element('divAppboxHeader').innerHTML = title_app_menu; 208 209 //Desbilitado limpeza de lixeira por request. Ticket #3253 210 //if (preferences.delete_trash_messages_after_n_days != 0) 211 /// cExecute ("$this.imap_functions.automatic_trash_cleanness&before_date="+preferences.delete_trash_messages_after_n_days+"&cyrus_delimiter="+cyrus_delimiter, handler_automatic_trash_cleanness); 212 213 //if(preferences.outoffice == "1") 214 // 215 216 //Troca da forma de construção de menu para o plugin jquery.contextMenu 217 //ConstructMenuTools(); 218 //MAILARCHIVER-00 219 //if ( (preferences.use_local_messages==1) && (expresso_local_messages.is_offline_installed()) ) //Precisa ser feito após a renderização da caixa de emails 220 //check_mail_in_queue(); 221 222 // Insere a applet de criptografia 223 if (preferences.use_signature_digital_cripto == '1'){ 224 loadApplet(); 225 } 226 // Fim da inserção da applet 227 cExecute("$this.imap_functions.get_folders_list&onload=true", update_menu); 228 229 if($.cookie('collapse_folders') == "true"){ 230 if(!is_ie) 231 $("#folderscol").addClass( "hidden"); 232 else 233 $("#folderscol").hide(); 234 $(".collapse_folders").addClass("ui-icon ui-icon-triangle-1-e").children().attr('title', "Expandir"); 235 refresh(); 236 resizeWindow(); 237 } 238 else{ 239 $(".collapse_folders").addClass("ui-icon ui-icon-triangle-1-w").children().attr('title', "Ocultar"); 240 refresh(); 241 resizeWindow(); 242 } 243 244 $(".collapse_folders_td").attr('title', "Ocultar/Expandir").click(function(){ 245 if($("#folderscol").css("display") != "none"){ 246 if(!is_ie) 247 $("#folderscol").addClass( "hidden"); 248 else 249 $("#folderscol").hide(); 250 251 $(".collapse_folders").removeClass("ui-icon-triangle-1-w"); 252 $(".collapse_folders").addClass("ui-icon-triangle-1-e"); 253 $(".collapse_folders").parent().attr('title', "Expandir"); 254 $.cookie('collapse_folders', "true"); 255 refresh(); 256 resizeWindow(); 257 }else{ 258 if(!is_ie) 259 $("#folderscol").removeClass( "hidden"); 260 else 261 $("#folderscol").show(); 262 $(".collapse_folders").removeClass("ui-icon-triangle-1-e"); 263 $(".collapse_folders").addClass("ui-icon-triangle-1-w"); 264 $(".collapse_folders").parent().attr('title', "Ocultar"); 265 $.cookie('collapse_folders', "false"); 266 refresh(); 267 resizeWindow(); 268 } 269 resizeWindow(); 270 271 }).hover( 272 function(){ 273 $(this).addClass("collapse_folders_td_over"); 274 }, 275 function(){ 276 $(this).removeClass("collapse_folders_td_over"); 277 } 278 ); 279 280 if(parseInt(preferences.use_dynamic_contacts)){ 281 updateDynamicContact(); 282 } 283 284 285 var handler_automatic_trash_cleanness = function(data) 286 { 241 resizeWindow(); 242 243 }).hover( 244 function(){ 245 $(this).addClass("collapse_folders_td_over"); 246 }, 247 function(){ 248 $(this).removeClass("collapse_folders_td_over"); 249 } 250 ); 251 252 if(parseInt(preferences.use_dynamic_contacts)){ 253 updateDynamicContact(); 254 } 255 256 257 var handler_automatic_trash_cleanness = function(data) 258 { 287 259 if (data != false){ 288 260 write_msg(data.length +' '+ Element('txt_clear_trash').value); … … 295 267 // Get cyrus delimiter 296 268 cyrus_delimiter = Element('cyrus_delimiter').value; 297 298 cExecute ("phpgwapi.browser.isMobile", function( data ){299 mobile_device = ( ( data.constructor == Boolean ) ? data : ( data === 'true' ) );300 });301 269 302 270 cExecute("$this.imap_functions.get_folders_list&onload=true", update_menu); … … 595 563 if(Element("border_id_" + id_msg_read)) { 596 564 alternate_border(id_msg_read); 597 resizeWindow(); 565 resizeWindow(); 598 566 } 599 567 else { 600 568 var border_id = create_border(msg_info.subject, id_msg_read); 601 if(border_id )569 if(border_id && border_id != "maximo") 602 570 { 603 571 openTab.type[border_id] = 2; … … 661 629 662 630 } 663 if (msg_info.showImg) 664 { 665 $("#body_"+id_msg_read).html(msg_info.body); 666 $('#show_img_link_'+id_msg_read).remove(); 667 } 631 if (msg_info.showImg) 632 { 633 $("#body_"+id_msg_read).html(msg_info.body); 634 $('#show_img_link_'+id_msg_read).remove(); 635 } 668 636 //Change msg class to read. 669 637 if (!msg_is_read(ID)) … … 705 673 if(differenceOfNewCriteria > 0){ 706 674 for(var i=data.length - differenceOfNewCriteria; i < data.length; i++){ 707 var msg_folder = data[i].msg_folder; 708 var msg_number = data[i].msg_number; 675 var msg_folder = data[i].msg_folder; 676 var msg_number = data[i].msg_number; 709 677 desktopNotification.sentNotification("",get_lang("Filter criteria"), truncate(new Date(data[i].udate).toString('dd/MM HH:mm') + ' - ' + data[i].from+' - '+data[i].subject, 75)); 710 desktopNotification.showNotification(function(){ 711 cExecute ("$this.imap_functions.removeFlagMessagesFilter&folder="+msg_folder+"&msg_number="+msg_number, function(){}); 712 }, function(){ 678 desktopNotification.showNotification(function(){ 679 cExecute ("$this.imap_functions.removeFlagMessagesFilter&folder="+msg_folder+"&msg_number="+msg_number, function(){}); 680 }, function(){ 713 681 window.focus(); 714 682 this.cancel(); … … 721 689 function refresh(alert_new_msg, notifyPermission){ 722 690 691 //Não deixa atualizar caso o usuario esteja em uma aba de nova mesnagem , reponder ou encaminhar; 692 //Evita o travamento da escrita no CKEDITOR. 693 if(typeof(currentTab) !== 'undefined' && currentTab.toString().indexOf("_r_") === -1 && currentTab !== 0 ) 694 return; 695 723 696 getFromAlertRules(); 724 697 var handler_refresh = function(data){ 725 handlerMessageFilter = function (data) { 726 notificationFilter(data, notifyPermission); 727 alarmFollowupflagged('filtersAlarms', data); 728 729 } 730 /* Busca nas pastas indexadas para ver se há novas mensagens com a flag $FilteredMessage */ 731 cExecute ("$this.imap_functions.getFlaggedAlertMessages&folders="+fromRules, handlerMessageFilter); 698 699 if(preferences['use_alert_filter_criteria'] == "1") 700 { 701 var handlerMessageFilter = function (data) { 702 notificationFilter(data, notifyPermission); 703 alarmFollowupflagged('filtersAlarms', data); 704 705 } 706 /* Busca nas pastas indexadas para ver se há novas mensagens com a flag $FilteredMessage */ 707 cExecute ("$this.imap_functions.getFlaggedAlertMessages&folders="+fromRules, handlerMessageFilter); 708 } 732 709 733 710 if(data['msg_range_end']) … … 801 778 over : function(a, b){ 802 779 //SETA BORDA EM VOLTA DA PASTA 780 $(b.helper).find(".draggin-folder,.draggin-mail").css("color", "green"); 803 781 over = $(this); 804 782 $(this).addClass("folder-over"); … … 813 791 } 814 792 }, 815 out : function(){ 793 out : function(a,b){ 794 816 795 //RETIRA BORDA EM VOLTA DA PASTA 796 $(b.helper).find(".draggin-folder,.draggin-mail").css("color", ""); 817 797 $(this).removeClass("folder-over"); 818 798 }, … … 1005 985 1006 986 var userTrashFolder = ''; 1007 1008 if (arguments.length <= 6 ) show_success_msg = true;987 988 if (arguments.length <= 6 && typeof(show_success_msg) == "undefined") show_success_msg = true; 1009 989 if (folder == 'null') folder = current_folder; 1010 990 … … 1013 993 var arrayFolder = folder.split(cyrus_delimiter); 1014 994 userTrashFolder = 'user'+cyrus_delimiter+arrayFolder[1]+cyrus_delimiter+special_folders['Trash']; 1015 var has_folder = false;//Folder.get( userTrashFolder, false ); 1016 var folders = DataLayer.get("folder"); 1017 $.each(folders,function(index,value){ 1018 if(value && value.id == userTrashFolder)1019 has_folder = true; 1020 }); 1021 995 var has_folder = false;//Folder.get( userTrashFolder, false ); 996 var folders = DataLayer.get("folder"); 997 $.each(folders,function(index,value){ 998 if(value && value.id == userTrashFolder) 999 has_folder = true; 1000 }); 1001 1022 1002 if(!has_folder){ 1023 1003 create_new_folder(special_folders['Trash'], 'user'+cyrus_delimiter+arrayFolder[1]); … … 1097 1077 data = connector.unserialize( data ); 1098 1078 1099 if( data ) 1100 show_msg( data ); 1079 if( data ){ 1080 data.openSameBorder = true; 1081 show_msg( data ); 1082 } 1101 1083 }, 1102 1084 beforeSend: function( jqXHR, settings ){ … … 1147 1129 params_to_delete += "&search_box_type="+search_box_type; 1148 1130 params_to_delete += "&sort_box_reverse="+sort_box_reverse; 1131 1149 1132 cExecute ("$this.imap_functions.delete_msgs", handler_delete_msgs, params_to_delete); 1150 1133 } … … 1359 1342 return false; 1360 1343 } 1344 1361 1345 mail_msg = ( Element("divScrollMain_"+numBox) ) ? Element("divScrollMain_"+numBox).firstChild.firstChild : Element("divScrollMain_0").firstChild.firstChild; 1346 1347 var showMsg = function(){ 1348 1349 //Se pref. usar mensagens locais ativada e não for operação de arquivamento exibe mensagem de remoção. 1350 if(preferences.use_local_messages == 1){ 1351 if(!expresso_mail_archive.isArchiveOperation){ 1352 if (data.msgs_number.length == 1 || typeof(data.msgs_number) == 'string' ) 1353 write_msg(get_lang("The message was moved to folder ") + lang_folder(data.new_folder_name)); 1354 else 1355 write_msg(get_lang("The messages were moved to folder ") + lang_folder(data.new_folder_name)); 1356 } 1357 } else { 1358 if (data.msgs_number.length == 1 || typeof(data.msgs_number) == 'string' ) 1359 write_msg(get_lang("The message was moved to folder ") + lang_folder(data.new_folder_name)); 1360 else 1361 write_msg(get_lang("The messages were moved to folder ") + lang_folder(data.new_folder_name)); 1362 } 1363 } 1362 1364 1363 1365 if (openTab.type[currentTab] > 1) … … 1394 1396 proxy_mensagens.get_msg(previous_msg,folder,null,show_msg); 1395 1397 } 1396 } 1398 } 1397 1399 } 1398 1400 //se houver pagina anterior a paginação deve ser refeita … … 1453 1455 mail_msg.removeChild(msg_to_delete); 1454 1456 } 1455 1457 if (preferences.use_shortcuts == '1' && msg_to_delete && !msg_to_delete.previousSibling){ 1458 if( $("#tbody_box .current_selected_shortcut_msg").length == 0 ){ 1459 select_msg('null','reload_msg','null'); 1460 } 1461 } 1456 1462 // Update Box BgColor 1457 1463 var box = Element("tbody_box"); … … 1464 1470 Element('tot_m').innerHTML = parseInt(Element('tot_m').innerHTML) - 1; 1465 1471 } 1472 1473 showMsg(); 1466 1474 return; 1467 1475 } … … 1508 1516 } 1509 1517 1510 //Se pref. usar mensagens locais ativada e não for operação de arquivamento exibe mensagem de remoção. 1511 if(preferences.use_local_messages == 1){ 1512 if(!expresso_mail_archive.isArchiveOperation){ 1513 if (data.msgs_number.length == 1) 1514 write_msg(get_lang("The message was moved to folder ") + lang_folder(data.new_folder_name)); 1515 else 1516 write_msg(get_lang("The messages were moved to folder ") + lang_folder(data.new_folder_name)); 1517 } 1518 } else { 1519 if (data.msgs_number.length == 1) 1520 write_msg(get_lang("The message was moved to folder ") + lang_folder(data.new_folder_name)); 1521 else 1522 write_msg(get_lang("The messages were moved to folder ") + lang_folder(data.new_folder_name)); 1523 } 1518 showMsg(); 1524 1519 1525 1520 if (data.border_ID.indexOf('r') != -1){ … … 1550 1545 1551 1546 try{ 1552 if (proxy_mensagens.is_local_folder(Element('input_folder_'+currentTab).getAttribute('value')) && !border_ID) { 1553 alert(get_lang("You cant manipulate local messages on search")); 1554 return; 1555 } 1547 if(Element('input_folder_'+currentTab)) 1548 if (proxy_mensagens.is_local_folder(Element('input_folder_'+currentTab).getAttribute('value')) && !border_ID) { 1549 alert(get_lang("You cant manipulate local messages on search")); 1550 return; 1551 } 1556 1552 } catch (e) {} 1557 1553 //Validação para recuperar o id caso não seja aba de listagem … … 1599 1595 //expresso_mail_archive.moveMessages(new_folder.substr(6), msgs_number); 1600 1596 expresso_mail_archive.moveMessages(new_folder.replace('local_messages_', ''), msgs_number); 1601 if(currentTab != 0) 1602 delete_border(border_ID);1597 if(currentTab != 0) 1598 delete_border(border_ID); 1603 1599 } 1604 1600 else{ … … 1682 1678 } 1683 1679 var hasFolder = false; 1684 $.each(fromRules, function(index, value) { 1685 if(value == folder){ 1686 hasFolder = true; 1687 cExecute ("$this.imap_functions.removeFlagMessagesFilter&folder="+folder+"&msg_number="+msgs_number, handler_removeFlag); 1688 return false; 1689 } 1690 }); 1680 if(preferences['use_alert_filter_criteria'] == "1") 1681 { 1682 $.each(fromRules, function(index, value) { 1683 if(value == folder){ 1684 hasFolder = true; 1685 cExecute ("$this.imap_functions.removeFlagMessagesFilter&folder="+folder+"&msg_number="+msgs_number, handler_removeFlag); 1686 return false; 1687 } 1688 }); 1689 } 1691 1690 if(!hasFolder){ 1692 1691 handler_removeFlag(); … … 2149 2148 2150 2149 function new_message_to(email) { 2151 var new_border_ID = new_message('new','null'); 2152 if (!new_border_ID){ 2153 var msgId; 2154 setTimeout(function(){ 2155 msgId = $('#border_tr td.menu-sel').attr('id').toString(); 2156 content = $("#content_id_"+msgId.substr(msgId.lastIndexOf("_")+1,msgId.length)); 2157 /*Envio de email para um grupo*/ 2158 if (email.indexOf('@') == -1){ 2159 var groups = REST.get('/groups'); 2160 $.each(normalizeContacts(groups.collection.itens),function(index,group){ 2161 if (group.name.toLocaleLowerCase() == email.toLocaleLowerCase()){ 2162 email = group.id; 2163 } 2164 }); 2165 draw_email_box(email, content.find('.to').filter('textarea:first'),"G"); 2166 } 2167 else 2168 draw_reply_boxes_by_field("to",email,content); 2169 },500); 2170 } 2171 else{ 2172 var content = $("#content_id_"+new_border_ID);2173 if (email.indexOf('@') == -1){ 2174 var groups = REST.get('/groups'); 2175 $.each(normalizeContacts(groups.collection.itens),function(index,group){ 2176 if (group.name.toLocaleLowerCase() == email.toLocaleLowerCase()){ 2177 email = group.id; 2178 } 2179 }); 2180 draw_email_box(email, content.find('.to').filter('textarea:first'),"G"); 2181 } 2182 else 2183 draw_reply_boxes_by_field("to",email,content); 2184 } 2150 var new_border_ID = new_message('new','null'); 2151 if (!new_border_ID){ 2152 var msgId; 2153 setTimeout(function(){ 2154 msgId = $('#border_tr td.menu-sel').attr('id').toString(); 2155 content = $("#content_id_"+msgId.substr(msgId.lastIndexOf("_")+1,msgId.length)); 2156 /*Envio de email para um grupo*/ 2157 if (email.indexOf('@') == -1){ 2158 var groups = REST.get('/groups'); 2159 $.each(normalizeContacts(groups.collection.itens),function(index,group){ 2160 if (group.name.toLocaleLowerCase() == email.toLocaleLowerCase()){ 2161 email = group.id; 2162 } 2163 }); 2164 draw_email_box(email, content.find('.to').filter('textarea:first'),"G"); 2165 } 2166 else 2167 draw_reply_boxes_by_field("to",email,content); 2168 },500); 2169 } 2170 else{ 2171 var content = $("#content_id_"+new_border_ID); 2172 if (email.indexOf('@') == -1){ 2173 var groups = REST.get('/groups'); 2174 $.each(normalizeContacts(groups.collection.itens),function(index,group){ 2175 if (group.name.toLocaleLowerCase() == email.toLocaleLowerCase()){ 2176 email = group.id; 2177 } 2178 }); 2179 draw_email_box(email, content.find('.to').filter('textarea:first'),"G"); 2180 } 2181 else 2182 draw_reply_boxes_by_field("to",email,content); 2183 } 2185 2184 } 2186 2185 … … 3397 3396 /* Lista de palavras que vão ser procuradas no corpo do email, referente às variantes da palavra anexo em português, inglês e espanhol. */ 3398 3397 if(language == "pt-br") //Português brasileiro 3399 var words = ['anexo', 'anexos', 'anexada', 'anexado', 'anexei', 'anexando', 'anexaste', 'anexastes', 'anexamos', 'anexaram'];3400 3398 var words = ['anexando', 'anexos', 'anexadas', 'anexados', 'anexei', 'anexaste', 'anexastes', 'anexamos', 'anexaram', 'anexas', 'anexado', 'anexada', 'anexo', 'anexa']; 3399 else if(language == "es-es") //Espanhol 3401 3400 var words = ['anexo','adjunto', 'adjuntos', 'adjuntado','adjuntamos']; 3402 3401 else //Inglês ('en') 3403 var words = ['attach', 'attachment', 'attached', 'annex', 'appending'];3402 var words = ['attach', 'attachment', 'attached', 'annex', 'appending', 'appendage', 'annexe', 'appendix']; 3404 3403 3405 3404 if($('#fileupload_msg'+ID).find('.att-box').length == 0 && preferences.alert_message_attachment == '1' ) { … … 3456 3455 function send_valided_message(ID, folder, folder_name) 3457 3456 { 3458 3459 3460 3461 3462 3463 3464 3465 3457 if (preferences.auto_save_draft == 1) 3458 autoSaveControl.status[ID] = true; 3459 3460 var content = $("#content_id_"+ID); 3461 var save_link = $("#content_id_"+ID).find(".save"); 3462 var onClick = save_link.onclick; 3463 save_link.onclick = ''; 3464 save_link.button({disabled: true}); 3466 3465 3467 3466 var _subject = trim(content.find(".subject").val()); … … 3478 3477 $.each(array, function(index, value){ 3479 3478 stringReply += $(value).find("input").val() + ","; 3480 }); 3479 }); 3481 3480 var stringToEmail = ""; 3482 3481 draw_email_box(content.find(".to-tr").find("textarea:first").val() || content.find(".to-tr").find("input:visible").val(), content.find(".to-tr").find("textarea:first")); … … 3513 3512 }); 3514 3513 } 3515 stringEmail += 3514 stringEmail += stringCCEmail; 3516 3515 3517 3516 var mailData = new Object(); … … 3534 3533 mailData.msg_forward_from = $(content).find('[name="msg_forward_from"]').val(); 3535 3534 mailData.msg_reply_from = $(content).find('[name="msg_reply_from"]').val(); 3536 3537 if ($(content).find('select[name="input_from"]').val()) 3538 mailData.input_from = $(content).find('select[name="input_from"]').val(); 3539 3540 3541 if(stringEmail != ""){ 3542 $.ajax({ 3543 url: "controller.php?action=$this.imap_functions.send_mail", 3544 data: mailData, 3545 type: 'POST', 3546 3547 beforeSend: function(jqXHR, settings){ 3548 3549 write_msg( get_lang( 'Sending the message...' ) ); 3550 $(content).find('button.send').button('option', 'disabled', true); 3551 3552 3553 }, 3554 success: function(data){ 3555 send_message_return(connector.unserialize(data),ID); 3556 }, 3557 error: function(){ 3558 write_msg(get_lang( 'Error trying to send the message. Retry in a few seconds...' ) ); 3559 $(content).find('button.send').button('option', 'disabled', false); 3560 var interval = setInterval(function(){ 3561 send_valided_message(ID,folder,folder_name); 3562 clearInterval(interval); 3563 },15000); 3564 return; 3565 } 3566 }); 3535 3536 if ($(content).find('select[name="input_from"]').val()) 3537 mailData.input_from = $(content).find('select[name="input_from"]').val(); 3538 3539 if(stringEmail != ""){ 3540 $.ajax({ 3541 url: "controller.php?action=$this.imap_functions.send_mail", 3542 data: mailData, 3543 type: 'POST', 3544 async: false, 3545 beforeSend: function(jqXHR, settings){ 3546 write_msg( get_lang( 'Sending the message...' ) ); 3547 $(content).find('button.send').button('option', 'disabled', true); 3548 }, 3549 success: function(data){ 3550 send_message_return(connector.unserialize(data),ID); 3551 }, 3552 error: function(){ 3553 write_msg(get_lang( 'Error trying to send the message. Retry in a few seconds...' ) ); 3554 $(content).find('button.send').button('option', 'disabled', false); 3555 var interval = setInterval(function(){ 3556 send_valided_message(ID,folder,folder_name); 3557 clearInterval(interval); 3558 },15000); 3559 return; 3560 } 3561 }); 3567 3562 }else{ 3568 write_msg(get_lang("message without receiver")); 3569 return; 3570 } 3571 3572 3563 write_msg(get_lang("message without receiver")); 3564 } 3573 3565 } 3574 3566 … … 3765 3757 case "unseen": 3766 3758 set_msg_as_unread(msgs[j]+'_s'+id_border, true); 3759 set_msg_as_unread(msgs[j], true); // Atualiza msg na aba principal. 3767 3760 Element("search_"+id_border+"_check_box_message_"+msgs[j]).checked = false; 3768 3761 break; 3769 3762 case "seen": 3770 3763 set_msg_as_read(msgs[j]+'_s'+id_border, true); 3764 set_msg_as_read(msgs[j], true); //Atualiza msg na aba principal. 3771 3765 Element("search_"+id_border+"_check_box_message_"+msgs[j]).checked = false; 3772 3766 break; … … 3787 3781 } 3788 3782 3789 draw_tree_folders( );3783 draw_tree_folders(folders); 3790 3784 Element('chk_box_select_all_messages_search').checked = false; 3791 3785 refresh(); … … 3878 3872 Element("check_box_message_" + msgs_to_set[i]).checked = false; 3879 3873 3880 // remove a flag $FilteredMessage da mensagem ao ser marcada como lida 3881 $.each(fromRules, function(index, value) { 3882 if(value == folder){ 3883 cExecute ("$this.imap_functions.removeFlagMessagesFilter&folder="+folder+"&msg_number="+msgs_to_set, function(){}); 3884 return false; 3885 } 3886 }); 3887 3874 if(preferences['use_alert_filter_criteria'] == "1") 3875 { 3876 // remove a flag $FilteredMessage da mensagem ao ser marcada como lida 3877 $.each(fromRules, function(index, value) { 3878 if(value == folder){ 3879 cExecute ("$this.imap_functions.removeFlagMessagesFilter&folder="+folder+"&msg_number="+msgs_to_set, function(){}); 3880 return false; 3881 } 3882 }); 3883 } 3888 3884 break; 3889 3885 case "flagged": … … 4455 4451 update_quota(get_current_folder()); 4456 4452 draw_new_tree_folder(); 4457 draw_tree_labels(); 4453 if( preferences['use_followupflags_and_labels'] == "1" ) 4454 draw_tree_labels(); 4458 4455 if (data){ 4459 4456 if(typeof(data) == "object"){ … … 4514 4511 //tree_folders.getNodeById(mount_url_folder(["INBOX",special_folders["Spam"]]))._refresh(); 4515 4512 draw_new_tree_folder(); 4516 draw_tree_labels(); 4513 if( preferences['use_followupflags_and_labels'] == "1" ) 4514 draw_tree_labels(); 4517 4515 update_quota(get_current_folder()); 4518 4516 if (data){ … … 4552 4550 } 4553 4551 4554 function buildExportArchiver(msgsArchive, name_box){4555 4556 var hand_export = function(data){4557 if(!data){4558 write_msg(get_lang('Error compressing messages (ZIP). Contact the administrator.'))4559 }else if(data["empty_folder"] || data == "empty_folder"){4560 write_msg(get_lang("The selected folder is empty."));4561 }else4562 download_attachments(null, null, data, null,null, get_current_folder().split("_")[2] +'.zip');4563 }4564 4565 var array = new Array();4566 4567 for(var i =0; i < msgsArchive.length; i++){4568 eachMsg = {4569 'ContentType' : msgsArchive[i].ContentType,4570 'from' : { 'email' : msgsArchive[i].from.email, 'full' : msgsArchive[i].from.full, 'name' : msgsArchive[i].from.name},4571 'msg_sample' : msgsArchive[i].msg_sample,4572 'subject' : msgsArchive[i].subject,4573 'to' : { 'email' : msgsArchive[i].to.email, 'full' : msgsArchive[i].to.full, 'name' : msgsArchive[i].to.name},4574 'toaddress2' : msgsArchive[i].toaddress2,4575 'msg_number' : msgsArchive[i].msg_number,4576 'date' : new Date(msgsArchive[i].timestamp).toString()4577 };4578 array.push(eachMsg);4579 }4580 4581 $.ajax({4582 type: "POST",4583 url: "controller.php?action=$this.exporteml.export_all_byLocalFolder",4584 data: { folder: name_box, type: "msg_local", messages : array}4585 }).done(function(msg) {4586 hand_export(msg.split('"')[1]);4587 });4588 }4589 4590 4552 function export_all_selected_msgs(){ 4591 4553 if(get_current_folder().split("_")[0] == "local"){ … … 4596 4558 expresso_mail_archive.getSomeMsgs([get_selected_messages()]); 4597 4559 } 4560 4561 } else { 4598 4562 4599 buildExportArchiver(expresso_mail_archive.getSomeMsg, get_current_folder().split("_")[2]);4600 4601 } else {4602 4603 4563 if (openTab.type[currentTab] > 1){ 4604 4564 source_msg(currentTab,openTab.imapBox[currentTab]); … … 4635 4595 filename = data[1]+'.eml'; 4636 4596 } 4637 4638 if(typeof data == "object") 4639 download_attachments(null, null, data[0], null,null,filename); 4640 else 4641 download_attachments(null, null, data, null,null,filename); 4597 4598 if(typeof data == "object") 4599 download_attachments(null, null, data[0], null,null,filename); 4600 else 4601 download_attachments(null, null, data, null,null,filename); 4642 4602 } 4643 4603 } … … 4879 4839 write_msg(get_lang('You must wait while the messages will be imported...')); 4880 4840 4881 var local_folder = input_hidden.attr("value"); //recupera a pasta selecionada 4882 if(local_folder.indexOf("local_") == 0){ //verifica se a pasta selecionada é uma pasta local 4883 4884 var fdata = local_folder.substr(15, local_folder.length); //recupera somente a estrutura da pasta ou o id 4885 expresso_mail_archive.getFolderInfo(fdata); //recuperar a estrutura da pasta, 4886 //para realizar a importação de mensagens 4887 fdata = expresso_mail_archive.folder.path; 4888 4889 //o mailarchiver não provê um serviço para a importação de mensagens nas pastas locais, 4890 //mas sim uma modal, da qual são extraídas as informações e as urls para submitar os dados 4891 //para o arquivamento de mensagens em pastas locais. 4892 var url_src = mail_archive_protocol + '://' + mail_archive_host + ':' + mail_archive_port + '/arcserv/import?prt=' + mail_archive_protocol + '&por=' + mail_archive_port+ '&fid='+ encodeURIComponent(fdata) + '&sid=' + expresso_mail_archive.session.id; 4893 var _html = DataLayer.render(url_src); 4894 var regex_url = RegExp('\<iframe(.)*src=\"([^\"]*)"(.)*\>'); 4895 var obj_params = $.parseQuery( regex_url.exec(_html)[2].split('?')[1] || '' ); 4896 $(formSend).append('<input id="ma_import_flat" type="checkbox" value="false" name="flat" style="display:none"> ' + 4897 '<input id="sessionId" type="hidden" value="'+obj_params['sessvalue']+'" name="sessionId">' + 4898 '<input id="base" type="hidden" value="'+obj_params['basevalue']+'" name="base">' + 4899 '<input id="lang" type="hidden" value="'+obj_params['langvalue']+'" name="lang">'); 4900 4901 var importEmailsLocalDialog = $('#importEmailsLocal'); 4902 importEmailsLocalDialog.css("overflow","hidden"); 4903 importEmailsLocalDialog.dialog( 4904 { 4905 autoOpen : false, 4906 height : 200, 4907 width : 350, 4908 resizable : false, 4909 title : get_lang('Local Archive'), 4910 modal : true, 4911 buttons : [ 4912 { 4913 text : get_lang("Close"), 4914 click : function() 4915 { 4916 importEmailsLocalDialog.dialog("close").dialog("destroy"); 4917 } 4918 } 4919 ] 4920 }); 4921 4922 importEmailsLocalDialog.html('<iframe frameborder="0" scrolling="no" id="frameResult" name="frameResult" ></iframe>') 4923 $(formSend).attr("action", mail_archive_protocol + '://' + mail_archive_host + ':' + mail_archive_port + '/arcserv/import'); 4924 $(formSend).attr("target", "frameResult"); 4925 $(formSend).submit(); 4926 importEmailsLocalDialog.dialog( "open" ); 4927 if(typeof(shortcut) != 'undefined') 4841 var local_folder = input_hidden.attr("value"); //recupera a pasta selecionada 4842 if(local_folder.indexOf("local_") == 0){ //verifica se a pasta selecionada é uma pasta local 4843 var fdata = local_folder.substr(15, local_folder.length); //recupera somente a estrutura da pasta ou o id 4844 expresso_mail_archive.getFolderInfo(fdata); //recuperar a estrutura da pasta, 4845 //para realizar a importação de mensagens 4846 fdata = expresso_mail_archive.folder.path; 4847 4848 //o mailarchiver não provê um serviço para a importação de mensagens nas pastas locais, 4849 //mas sim uma modal, da qual são extraídas as informações e as urls para submitar os dados 4850 //para o arquivamento de mensagens em pastas locais. 4851 var url_src = mail_archive_protocol + '://' + mail_archive_host + ':' + mail_archive_port + '/arcserv/import?prt=' + mail_archive_protocol + '&por=' + mail_archive_port+ '&fid='+ encodeURIComponent(fdata) + '&sid=' + expresso_mail_archive.session.id; 4852 var _html = DataLayer.render(url_src); 4853 var regex_url = RegExp('\<iframe(.)*src=\"([^\"]*)"(.)*\>'); 4854 var obj_params = $.parseQuery( regex_url.exec(_html)[2].split('?')[1] || '' ); 4855 $(formSend).append('<input id="ma_import_flat" type="checkbox" value="false" name="flat" style="display:none"> ' + 4856 '<input id="sessionId" type="hidden" value="'+obj_params['sessvalue']+'" name="sessionId">' + 4857 '<input id="base" type="hidden" value="'+obj_params['basevalue']+'" name="base">' + 4858 '<input id="lang" type="hidden" value="'+obj_params['langvalue']+'" name="lang">'); 4859 4860 var importEmailsLocalDialog = $('#importEmailsLocal'); 4861 importEmailsLocalDialog.css("overflow","hidden"); 4862 importEmailsLocalDialog.dialog( 4863 { 4864 autoOpen : false, 4865 height : 200, 4866 width : 350, 4867 resizable : false, 4868 title : get_lang('Local Archive'), 4869 modal : true, 4870 buttons : [ 4871 { 4872 text : get_lang("Close"), 4873 click : function() 4874 { 4875 importEmailsLocalDialog.dialog("close").dialog("destroy"); 4876 } 4877 } 4878 ] 4879 }); 4880 4881 importEmailsLocalDialog.html('<iframe frameborder="0" scrolling="no" id="frameResult" name="frameResult" ></iframe>') 4882 $(formSend).attr("action", mail_archive_protocol + '://' + mail_archive_host + ':' + mail_archive_port + '/arcserv/import'); 4883 $(formSend).attr("target", "frameResult"); 4884 $(formSend).submit(); 4885 importEmailsLocalDialog.dialog( "open" ); 4886 if(typeof(shortcut) != 'undefined') 4928 4887 shortcut.disabled = false; 4929 } else { 4930 cExecuteForm('$this.imap_functions.import_msgs', formSend , handler_return ); 4931 } 4932 4888 } else { 4889 cExecuteForm('$this.imap_functions.import_msgs', formSend , handler_return ); 4890 } 4891 4933 4892 } 4934 4893 } … … 5439 5398 if(data.append == 1) 5440 5399 { 5441 proxy_mensagens.get_msg(data.msg_number,data.msg_folder,false,show_msg,false); 5400 proxy_mensagens.get_msg(data.msg_number,data.msg_folder,false,function (data) { 5401 if (onceOpenedHeadersMessages[data.msg_folder] == undefined) 5402 { 5403 onceOpenedHeadersMessages[data.msg_folder] = []; 5404 }; 5405 onceOpenedHeadersMessages[data.msg_folder][data.msg_number] = data; 5406 show_msg(data); 5407 },false); 5442 5408 partMsgs.push(data.msg_number); 5443 5409 } -
branches/2.5/expressoMail1_2/js/messages_controller.js
r8128 r8232 12 12 if(this.is_local_folder(folder)) { 13 13 //MAILARCHIVER-01 14 var baseFolder = folder.replace('local_messages_', ''); 14 var baseFolder = folder.replace('local_messages_', ''); 15 15 var tree_name; 16 16 var drawinginfo = {}; -
branches/2.5/expressoMail1_2/js/rich_text_editor.js
r8166 r8232 130 130 cRichTextEditor.prototype.getSignaturesOptions = function() { 131 131 132 133 132 if(RichTextEditor.signatures !== false) 133 return RichTextEditor.signatures; 134 134 135 135 var signatures = RichTextEditor.normalizerSignature(this.fromJSON( preferences.signatures )); … … 138 138 for( key in signatures ) 139 139 if( !signature_types[key] ) 140 signatures[key] = signatures[key].replace( /\n/g, "<br>" ); 141 142 RichTextEditor.signatures = signatures; 143 return signatures; 144 145 } 146 cRichTextEditor.prototype.normalizerSignature = function(values) { 147 var value = {}; 148 for (key in values){ 149 value[RichTextEditor.isEncoded64(key) ? RichTextEditor.decode64(key) : key] = values[key]; 150 } 151 return value; 152 153 } 154 155 /*Verifica se a string input esta em Base64*/ 156 cRichTextEditor.prototype.isEncoded64 = function(input){ 157 var baseStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; 158 var encoded = true; 159 if ( (input.length % 4) != 0) 160 return false; 161 for(var i=0; i<input.length; i++){ 162 if ( baseStr.indexOf(input[i]) < 0 ){ 163 encoded = false; 164 break; 165 } 166 } 167 return encoded; 140 signatures[key] = signatures[key].replace( /\n/g, "<br>" ); 141 142 RichTextEditor.signatures = signatures; 143 return signatures; 144 145 } 146 cRichTextEditor.prototype.normalizerSignature = function(values) { 147 148 var value = {}; 149 150 for (key in values){ 151 152 value[RichTextEditor.isEncoded64(key) ? RichTextEditor.decode64(key) : key] = values[key]; 153 } 154 155 return value; 156 157 } 158 159 /*Verifica se a string input esta em Base64*/ 160 cRichTextEditor.prototype.isEncoded64 = function(input){ 161 var baseStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; 162 var encoded = true; 163 if ( (input.length % 4) != 0) 164 return false; 165 for(var i=0; i<input.length; i++){ 166 if ( baseStr.indexOf(input[i]) < 0 ){ 167 encoded = false; 168 break; 169 } 170 } 171 return encoded; 168 172 } 169 173 170 174 cRichTextEditor.prototype.getSignatureDefault = function() { 171 172 173 174 175 }175 176 if(RichTextEditor.signatures === false){ 177 RichTextEditor.signatures = RichTextEditor.getSignaturesOptions(); 178 preferences.signature_default = preferences.signature; 179 } 176 180 177 if(!RichTextEditor.signatures || !preferences.signature_default) 178 { 179 preferences.use_signature = "0"; //Desabilita o uso da assinatura 180 return ''; 181 } 182 if (RichTextEditor.isEncoded64(preferences.signature_default)) 183 preferences.signature_default = RichTextEditor.decode64(preferences.signature_default); 184 return unescape(preferences.signature_default); 185 186 } 187 181 if(!RichTextEditor.signatures || !preferences.signature_default) 182 { 183 preferences.use_signature = "0"; //Desabilita o uso da assinatura 184 return ''; 185 } 186 if (RichTextEditor.isEncoded64(preferences.signature_default)) 187 preferences.signature_default = RichTextEditor.decode64(preferences.signature_default); 188 return unescape(preferences.signature_default); 189 190 } 188 191 189 192 … … 216 219 { 217 220 autoSaveControl.status[id] = true; 218 autoSaveControl.timer[id] = window.setInterval( "autoSave( "+id+")" ,autosave_time);221 autoSaveControl.timer[id] = window.setInterval( "autoSave(\""+id+"\")" ,autosave_time); 219 222 220 223 CKEDITOR.instances[inst].document.on('keydown', function(event){ -
branches/2.5/expressoMail1_2/js/search.js
r7760 r8232 568 568 $(td).click(function(event, ui){ 569 569 var messageClickedId = $(this).attr('id').match(/td_message_followup_search_([\d]+)/)[1]; 570 571 var loading = $('tr[role="'+messageClickedId+'_'+mailbox+'"] #td_message_followup_search_' + messageClickedId).find(".flag-edited") 572 .find('img[alt=Carregando]'); 573 574 //Verificar se está carregando a bandeira. 575 //Caso esteja ele sai da função até que seja carregado. 576 if( loading.length ) { 577 return false; 578 } 579 580 var followupColor = $('tr[role="'+messageClickedId+'_'+mailbox+'"] #td_message_followup_search_' + messageClickedId).find(".flag-edited").css('backgroundColor'); 581 570 582 571 583 var followupColor = $('tr[role="'+messageClickedId+'_'+mailbox+'"] #td_message_followup_search_' + messageClickedId).find(".flag-edited").css('backgroundColor'); … … 607 619 608 620 $('tr[role="'+messageClickedId+'_'+mailbox+'"] #td_message_followup_search_' + messageClickedId).find(".flag-edited") 609 .css({"background-image":"url(../prototype/modules/mail/img/flagEditor.png)"}); 621 .css({"background-image":"url(../prototype/modules/mail/img/flagEditor.png)"}) 622 .find('img').remove();; 610 623 611 624 if (fail) { … … 613 626 var isCurrentFolder = current_folder == mailbox ? '#td_message_followup_' + messageClickedId + ', ' : ''; 614 627 $(isCurrentFolder + 'tr[role="'+messageClickedId+'_'+mailbox+'"] #td_message_followup_search_' + messageClickedId).find(".flag-edited").css("background", "#CCCCCC"); 628 629 $('#td_message_followup_search_' + messageClickedId).find(".flag-edited") 630 .append("<img src='../prototype/modules/mail/img/flagEditor.png'/>"); 631 615 632 MsgsCallbackFollowupflag[fail](); 616 633 return false; … … 619 636 if(current_folder == mailbox){ 620 637 $('#td_message_followup_' + messageClickedId + ', ' + 621 'tr[role="'+messageClickedId+'_'+mailbox+'"] #td_message_followup_search_' + messageClickedId).attr('title', get_lang('Follow up')).find(".flag-edited").css("background", aux.followupflagged.backgroundColor); 638 'tr[role="'+messageClickedId+'_'+mailbox+'"] #td_message_followup_search_' + messageClickedId).attr('title', get_lang('Follow up')).find(".flag-edited").css("background", aux.followupflagged.backgroundColor); 639 640 $('tr[role="'+messageClickedId+'_'+mailbox+'"] #td_message_followup_search_' + messageClickedId).attr('title', get_lang('Follow up')).find(".flag-edited").css("background", aux.followupflagged.backgroundColor) 641 .append("<img src='../prototype/modules/mail/img/flagEditor.png'/>"); 622 642 }else{ 623 $('tr[role="'+messageClickedId+'_'+mailbox+'"] #td_message_followup_search_' + messageClickedId).attr('title', get_lang('Follow up')).find(".flag-edited").css("background", aux.followupflagged.backgroundColor); 643 $('tr[role="'+messageClickedId+'_'+mailbox+'"] #td_message_followup_search_' + messageClickedId).attr('title', get_lang('Follow up')).find(".flag-edited").css("background", aux.followupflagged.backgroundColor) 644 .append("<img src='../prototype/modules/mail/img/flagEditor.png'/>"); 624 645 } 625 646 updateCacheFollowupflag(messageClickedId, mailbox, true); … … 634 655 DataLayer.remove('followupflagged', flagged[0].id ); 635 656 DataLayer.commit(false, false, function(){ 636 $('tr[role="'+messageClickedId+'_'+mailbox+'"] #td_message_followup_search_' + messageClickedId).find(".flag-edited") 637 .css({" background-image":"url(../prototype/modules/mail/img/flagEditor.png)"});657 $('tr[role="'+messageClickedId+'_'+mailbox+'"] #td_message_followup_search_' + messageClickedId).find(".flag-edited").html('<img src="../prototype/modules/mail/img/flagEditor.png">') 658 .css({"width":"8px","height":"6px"/*,"background-image":"url(../prototype/modules/mail/img/flagEditor.png)"*/}); 638 659 if(current_folder == mailbox){ 639 660 updateCacheFollowupflag(messageClickedId, mailbox, false); … … 651 672 652 673 $('tr[role="'+messageClickedId+'_'+mailbox+'"] #td_message_followup_search_' + messageClickedId).find(".flag-edited") 653 .css({"background-image":"url(../prototype/modules/mail/img/flagEditor.png)"}); 674 .css({"background-image":"url(../prototype/modules/mail/img/flagEditor.png)"}) 675 .append("<img src='../prototype/modules/mail/img/flagEditor.png'/>"); 654 676 } 655 677 }); … … 657 679 } else { 658 680 $('tr[role="'+messageClickedId+'_'+mailbox+'"] #td_message_followup_search_' + messageClickedId).find(".flag-edited") 659 .css({"background-image":"url(../prototype/modules/mail/img/flagEditor.png)"}); 660 $('tr[role="'+messageClickedId+'_'+mailbox+'"] #td_message_followup_search_' + messageClickedId).find(".flag-edited").css("background", followupColor); 661 $(this).parents('[role="'+messageClickedId+'_'+mailbox+'"]').attr('class', 'selected_msg').find(':checkbox').trigger('click'); 681 .css({"background-image":"url(../prototype/modules/mail/img/flagEditor.png)"}).find('img').remove(); 682 683 $('tr[role="'+messageClickedId+'_'+mailbox+'"] #td_message_followup_search_' + messageClickedId).find(".flag-edited").css("background", followupColor) 684 .append("<img src='../prototype/modules/mail/img/flagEditor.png'/>"); 685 686 //Pega id do checkbox 687 var id = $(this).parents('[role="'+messageClickedId+'_'+mailbox+'"]').attr('class', 'selected_msg').find(':checkbox').attr('id'); 688 689 //verifica se o checkbox já está selecionada 690 if($('#' + id).attr('checked') != 'checked') 691 $(this).parents('[role="'+messageClickedId+'_'+mailbox+'"]').attr('class', 'selected_msg').find(':checkbox').trigger('click'); 692 693 updateSelectedMsgs(true,messageClickedId); 662 694 configureFollowupflag(); 663 695 } … … 676 708 if (aux.labels) { 677 709 //td1 = '<img src="../prototype/modules/mail/img/tag.png">'; 678 $(td 1).css({'background-image':'url(../prototype/modules/mail/img/mail-sprites.png)','background-position': '0 -1711px',"margin-left":"0",'margin-top':'3px','background-repeat':'no-repeat'});710 $(td).css({'background-image':'url(../prototype/modules/mail/img/mail-sprites.png)','margin-left': '0px', 'margin-top':'3px', 'background-position': '0px -1706px', 'background-repeat':'no-repeat no-repeat'}); 679 711 updateLabelsColumn(aux) 680 712 } else { … … 829 861 over : function(a, b){ 830 862 //SETA BORDA EM VOLTA DA PASTA 863 $(b.helper).find(".draggin-folder,.draggin-mail").css("color", "green"); 831 864 over = $(this); 832 865 $(this).addClass("folder-over"); … … 841 874 } 842 875 }, 843 out : function( ){876 out : function(a,b){ 844 877 //RETIRA BORDA EM VOLTA DA PASTA 878 $(b.helper).find(".draggin-folder,.draggin-mail").css("color", ""); 845 879 $(this).removeClass("folder-over"); 846 880 }, … … 882 916 return $(DataLayer.render('../prototype/modules/mail/templates/draggin_box.ejs', {texto : $(this).find(".td_msg_search_subject").text(), type: "messages"})); 883 917 }, 884 cursorAt: { cursor: "crosshair", top: -5, left: -5},918 cursorAt: {top: 5, left: 56}, 885 919 refreshPositions: true , 886 920 scroll: true, -
branches/2.5/expressoMail1_2/js/shortcut.js
r8087 r8232 209 209 210 210 } 211 if (currentTab && currentTab == 0 && code == 13){ 212 e.stopPropagation(); 213 e.preventDefault(); 214 } 211 if (currentTab && currentTab == 0 && code == 13){ 212 e.stopPropagation(); 213 e.preventDefault(); 214 } 215 if ((openTab.type[currentTab] == 2) && code == 13){ 216 e.preventDefault(); 217 e.stopPropagation(); 218 } 215 219 } 216 220 this.all_shortcuts[shortcut_combination] = { … … 279 283 proxy_mensagens.delete_msgs(current_folder, get_selected_messages(), 'null'); 280 284 }else{ 281 if (e.target.className.indexOf("box") == -1) 282 proxy_mensagens.delete_msgs(openTab.imapBox[currentTab], currentTab.substring(0, selMessageShortcut.indexOf("_r")), 'null'); 285 if (e.target.className.indexOf("box") == -1) 286 proxy_mensagens.delete_msgs(openTab.imapBox[currentTab], currentTab.substring(0, selMessageShortcut.indexOf("_r")), 'null'); 283 287 } 284 288 } -
branches/2.5/expressoMail1_2/js/wfolders.js
r7426 r8232 48 48 click : function() 49 49 { 50 winSaveFile.dialog("close"),dialog("destroy"); 50 winSaveFile.dialog("close"); 51 winSaveFile.dialog("destroy"); 51 52 } 52 53 }, … … 134 135 cWFolders.prototype.makeWindow = function(border_id, type) 135 136 { 136 if(typeof (currentTab) == "string" && currentTab.indexOf("local") != -1){ 137 alert("Impossível manipular mensagens locais a partir de uma busca. Isso é permitido apenas para mensagens não locais."); 138 return true; 137 if(type == "move_to"){ 138 if( (currentTab == 0) || (currentTab.toString().indexOf("search") >= 0)){ 139 140 //Verifica em qual aba o usuário está 141 var selected_msg = (currentTab == 0) ? get_selected_messages() : get_selected_messages_search(); 142 143 if ((parseInt(selected_msg) > 0 || selected_msg.length > 0)||(type != "move_to")){ 144 this.load( border_id, type, false); 145 }else 146 write_msg(get_lang('No selected message.')); 147 } else{ 148 if(typeof (currentTab) == "string" && currentTab.indexOf("local") != -1){ 149 alert("Impossível manipular mensagens locais a partir de uma busca. Isso é permitido apenas para mensagens não locais."); 150 return true; 151 } 152 this.load( border_id, type, false); 153 } 154 }else { 155 if(typeof (currentTab) == "string" && currentTab.indexOf("local") != -1){ 156 alert("Impossível manipular mensagens locais a partir de uma busca. Isso é permitido apenas para mensagens não locais."); 157 return true; 158 } 159 this.load( border_id, type, false); 139 160 } 140 this.load( border_id, type, false); 141 } 161 } 142 162 143 163 /* Build the Object */ -
branches/2.5/expressoMail1_2/setup/phpgw_pt-br.lang
r8117 r8232 972 972 MailArchiver user logged out expressoMail1_2 pt-br Usuário desconectado do MailArchiver 973 973 Error trying to send the message. Retry in a few seconds... expressoMail1_2 pt-br Erro ao tentar enviar a mensagem. Nova tentativa em alguns segundos... 974 Create filter from message expressoMail1_2 pt-br Criar filtro a partir da mensagem 974 975 Sending the message... expressoMail1_2 pt-br Enviando a mensagem... 975 Local Archive expressoMail1_2 pt-br Arquivamento Local 976 Please, Wait the messages from archieve be ready. expressoMail1_2 pt-br Por favor, Aguarde as mensagens arquivadas ficarem prontas. 977 take on this option to regard the message body in the search. expressoMail1_2 pt-br Considerar o corpo da mensagem como filtro na busca 978 take off this option to disregard the message body in the search. expressoMail1_2 pt-br Desconsiderar o corpo da mensagem como filtro na busca 979 Local Archive expressoMail1_2 pt-br Arquivamento Local -
branches/2.5/expressoMail1_2/setup/setup.inc.php
r7516 r8232 13 13 $setup_info['expressoMail1_2']['name'] = 'expressoMail1_2'; 14 14 $setup_info['expressoMail1_2']['title'] = 'Expresso Mail'; 15 $setup_info['expressoMail1_2']['version'] = '2.5. 0';15 $setup_info['expressoMail1_2']['version'] = '2.5.1'; 16 16 $setup_info['expressoMail1_2']['app_order'] = 2; 17 17 $setup_info['expressoMail1_2']['tables'][] = 'phpgw_certificados'; … … 46 46 $setup_info['expressoMail1_2']['depends'][] = array( 47 47 'appname' => 'phpgwapi', 48 'versions' => Array('2.5. 0')48 'versions' => Array('2.5.1.1') 49 49 ); 50 50 -
branches/2.5/expressoMail1_2/setup/tables_update.inc.php
r7516 r8232 330 330 331 331 $test[] = '2.4.8.2'; 332 function expressoMail1_2_upgrade2_4_8_2() { 333 $GLOBALS['setup_info']['expressoMail1_2']['currentver'] = '2.5.0'; 334 return $GLOBALS['setup_info']['expressoMail1_2']['currentver']; 335 } 336 332 function expressoMail1_2_upgrade2_4_8_2() { 333 $GLOBALS['setup_info']['expressoMail1_2']['currentver'] = '2.5.0'; 334 return $GLOBALS['setup_info']['expressoMail1_2']['currentver']; 335 } 336 337 $test[] = '2.5.0'; 338 function expressoMail1_2_upgrade2_5_0() { 339 $GLOBALS['setup_info']['expressoMail1_2']['currentver'] = '2.5.1'; 340 return $GLOBALS['setup_info']['expressoMail1_2']['currentver']; 341 } 337 342 ?> -
branches/2.5/expressoMail1_2/templates/default/index.tpl
r8113 r8232 209 209 <div class="expressomail-module-container" style="display: none;"></div> 210 210 <div id="importEmails" style="display:none;padding:5px;"></div> 211 <div id="importEmailsLocal" style="display:none;padding:5px;"></div> 211 <div id="importEmailsLocal" style="display:none;padding:5px;"></div> 212 212 <div id="sendFileMessages" style="display:none;"></div> 213 213 <div id="quickAddContact" style="display:none;"></div> -
branches/2.5/expressoMail1_2/templates/default/main.css
r7762 r8232 1245 1245 font-weight : bold; 1246 1246 padding-right : 5px; 1247 padding-left : 25px; 1247 padding-left : 5px; 1248 padding-top : 2px; 1248 1249 font-family : Lucida Grande, Lucida Sans, Arial, sans-serif; 1249 1250 font-size : 11px; … … 1255 1256 background-position: 0 -923px; 1256 1257 background-repeat:no-repeat; 1257 padding-left : 20px; 1258 padding-right : 5px; 1259 padding-left : 5px; 1260 padding-top : 2px; 1258 1261 color : red; 1259 1262 text-align: right; 1260 1263 font-weight : bold; 1261 padding-right : 5px;1262 1264 } 1263 1265 … … 1641 1643 top: 585px; 1642 1644 } 1645 1646 @media screen and (max-width: 1100px){ 1647 #span_options, #span_D span 1648 { 1649 font-size: 0.8333em; /*10/12px*/ 1650 } 1651 }
Note: See TracChangeset
for help on using the changeset viewer.