Changeset 7414
- Timestamp:
- 10/11/12 18:14:36 (11 years ago)
- Location:
- trunk
- Files:
-
- 20 edited
- 7 copied
Legend:
- Unmodified
- Added
- Removed
-
trunk/expressoMail1_2/inc/class.exporteml.inc.php
r7040 r7414 56 56 // Rommel Cysne (rommel.cysne@serpro.gov.br) 57 57 // em 17/12/2008. 58 59 function createFileEml_by_localFolder($sEMLData, $tempDir, $file){ 60 61 $file = "{$file}.eml"; 62 63 $f = fopen($tempDir.'/'.$file,"w"); 64 if(!$f) 65 return False; 66 67 fputs($f,$sEMLData); 68 fclose($f); 69 70 return $file; 71 } 72 58 73 function createFileEml($sEMLData, $tempDir, $id, $subject=false, $i=false) 59 74 { … … 101 116 } 102 117 103 function createFileZip($files, $tempDir){ 118 function createFileZip($files, $tempDir){ 119 104 120 $tmp_zip_filename = "email_".$_SESSION[ 'phpgw_session' ][ 'session_id' ].".zip"; 105 106 121 if (!empty($files)) 107 122 { … … 119 134 } 120 135 } 121 122 $command = "cd " . escapeshellarg($tempDir) . " && nice zip -m9 " . escapeshellarg($tmp_zip_filename) . " " . $files; 136 137 138 $command = "cd " . escapeshellarg($tempDir) . " && nice zip -m9 " . escapeshellarg($tmp_zip_filename) . " " . $files; 139 140 123 141 if(!exec($command)) { 124 142 $command = "cd " . escapeshellarg($tempDir) . " && rm ".$files." ". escapeshellarg($tmp_zip_filename); … … 126 144 return null; 127 145 } 128 146 129 147 return $tmp_zip_filename; 130 148 131 149 } 132 150 133 function export_all($params){ 134 151 function export_all_byLocalFolder($params){ 152 $error = false; 153 154 if(empty($params['messages'])){ 155 $file["empty_folder"] = true; 156 } else { 157 foreach($params['messages'] as $eachMsg){ 158 $header = ""; 159 $body = ""; 160 $tempDir = $this->tempDir; 161 162 $this->get_header_byLocalFolder($eachMsg, $header); 163 $this->get_body_byLocalFolder($eachMsg, $body); 164 $sEMLData = $this->parseEml($header, $body); 165 $fileName = $this->createFileEml_by_localFolder($sEMLData, $tempDir,$eachMsg['msg_number']); 166 167 if(!$fileName){ 168 $error = true; 169 break; 170 } else 171 $fileNames .= "\"".$fileName."\" "; 172 } 173 174 $nameFileZip = 'False'; 175 if($fileNames && !$error) { 176 $nameFileZip = $this->createFileZip($fileNames, $tempDir); 177 ($nameFileZip) ? ($file = $tempDir.'/'.$nameFileZip) : ($file = false); 178 } else 179 $file = false; 180 } 181 182 return $file; 183 184 } 185 186 function get_header_byLocalFolder($eachMsg, &$header){ 187 $header = <<<header 188 MIME-Version: 1.0 189 Content-Type: text/html; charset=ISO-8859-1 190 Content-Transfer-Encoding: quoted-printable 191 From: "{$eachMsg['from']['name']}" <{$eachMsg['from']['email']}> 192 To: {$eachMsg['to']['email']} 193 Subject: {$eachMsg['subject']} 194 Message-Id: {$eachMsg['msg_number']} 195 Date: {$eachMsg['date']} 196 header; 197 } 198 199 function get_body_byLocalFolder($eachMsg, &$body){ 200 $body = $eachMsg['msg_sample']['body']; 201 } 202 203 function export_all($params){ 204 135 205 $this->folder = $params['folder']; 136 206 $this->folder = mb_convert_encoding($this->folder, "UTF7-IMAP","UTF-8"); … … 140 210 141 211 $msgs = imap_search($this->mbox_stream,"ALL",SE_UID); 212 142 213 if($msgs){ 143 214 foreach($msgs as $nMsgs){ 144 $header = $this-> getHeader($nMsgs); 145 $body = $this-> getBody($nMsgs); 215 216 $header = $this-> getHeader($nMsgs); 217 $body = $this-> getBody($nMsgs); 218 146 219 $sEMLData = $this -> parseEml($header, $body); 147 220 $fileName = $this -> CreateFileEml($sEMLData, $tempDir,$nMsgs); … … 478 551 } 479 552 553 //MAILARCHIVER 554 function js_source_var($params) { 555 $this-> folder = $params['folder']; 556 if(!$this->folder){ 557 $aux = explode(';',$params['msgs_to_export']); 558 $this->folder = $aux[0]; 559 $id_number = $aux[1]; 560 } 561 else{ 562 $id_number = $params['msgs_to_export']; 563 } 564 $this->folder = mb_convert_encoding($this->folder, "UTF7-IMAP","ISO_8859-1"); 565 $tempDir = ini_get("session.save_path"); 566 567 $this->connectImap(); 568 $header = $this-> getHeader($id_number); 569 $body = $this-> getBody($id_number); 570 571 if(!strpos($header,"Date: ")){ 572 $header = "Date: " . $this->getHeaderInfo($id_number)->Date . "\r\n" .$header ; 573 } 574 575 imap_close($this->mbox_stream); 576 577 $input = $header . "\r\n\r\n" . $body; 578 $input = preg_replace('/\x1d/', '', $input); //remove special char control detected (hex 1D) 579 580 return($input); 581 } 582 480 583 function export_msg_data($id_msg,$folder) { 481 584 $this->folder = $folder; … … 752 855 return imap_fetchheader($this->mbox_stream, $msg_number, FT_UID); 753 856 } 857 858 function getHeaderInfo($msg_number){ 859 $header = imap_headerinfo($this->mbox_stream, imap_msgno($this->mbox_stream, $msg_number), 80, 255); 860 return $header; 861 } 754 862 755 863 function getBody($msg_number){ -
trunk/expressoMail1_2/inc/class.imap_functions.inc.php
r7413 r7414 3163 3163 $mailService->addHeaderField('Disposition-Notification-To', $_SESSION['phpgw_info']['expressomail']['user']['email']); 3164 3164 3165 $mailService->addHeaderField('Date', date("r")); 3165 3166 3166 3167 if ($folder != 'null') { … … 4660 4661 4661 4662 function insert_email($source,$folder,$timestamp,$flags){ 4662 4663 4663 4664 $username = $_SESSION['phpgw_info']['expressomail']['user']['userid']; 4664 4665 $password = $_SESSION['phpgw_info']['expressomail']['user']['passwd']; … … 4667 4668 $imap_options = '/notls/novalidate-cert'; 4668 4669 4669 4670 4670 $folder = mb_convert_encoding( $folder, "UTF7-IMAP","ISO-8859-1"); 4671 4672 4671 $mbox_stream = imap_open("{".$imap_server.":".$imap_port.$imap_options."}".$folder, $username, $password); 4673 4672 4674 4673 if(imap_last_error() === 'Mailbox already exists') 4675 4674 imap_createmailbox($mbox_stream,imap_utf7_encode("{".$imap_server."}".$folder)); 4675 4676 4676 if($timestamp){ 4677 $pdate = date_parse(date('r')); // pega a data atual do servidor (TODO: pegar a data da mensagem local) 4678 $timestamp += $pdate['zone']*(60); //converte a data da mensagem para o fuso horário GMT 0. Isto é feito devido ao Expresso Mail armazenar a data no fuso horário GMT 0 e para exibi-la converte ela para o fuso horário local. 4679 /* TODO: o diretorio /tmp deve ser substituido pelo diretorio temporario configurado no setup */ 4680 $file = "/tmp/sess_".$_SESSION[ 'phpgw_session' ][ 'session_id' ]; 4681 4682 $f = fopen($file,"w"); 4683 fputs($f,base64_encode($source)); 4684 fclose($f); 4685 $command = "python ".dirname(__FILE__)."/../imap.py \"$imap_server\" \"$imap_port\" \"$username\" \"$password\" \"$timestamp\" \"$folder\" \"$file\""; 4686 $return['command']= exec($command); 4677 if(version_compare(PHP_VERSION, '5.3.2', '>=')){ 4678 $return['append'] = imap_append($mbox_stream, "{".$imap_server.":".$imap_port."}".mb_convert_encoding($folder, "UTF7-IMAP","ISO_8859-1"), $source,'',date('d-M-Y H:i:s O',$timestamp)); 4679 }else{ 4680 $pdate = date_parse(date('r')); // pega a data atual do servidor (TODO: pegar a data da mensagem local) 4681 $timestamp += $pdate['zone']*(60); //converte a data da mensagem para o fuso horário GMT 0. Isto é feito devido ao Expresso Mail armazenar a data no fuso horário GMT 0 e para exibi-la converte ela para o fuso horário local. 4682 /* TODO: o diretorio /tmp deve ser substituido pelo diretorio temporario configurado no setup */ 4683 $file = "/tmp/sess_".$_SESSION[ 'phpgw_session' ][ 'session_id' ]; 4684 4685 $f = fopen($file,"w"); 4686 fputs($f,base64_encode($source)); 4687 fclose($f); 4688 $command = "python ".dirname(__FILE__)."/../imap.py \"$imap_server\" \"$imap_port\" \"$username\" \"$password\" \"$timestamp\" \"$folder\" \"$file\""; 4689 $return['command']= exec($command); 4690 } 4687 4691 }else{ 4688 4692 $return['append'] = imap_append($mbox_stream, "{".$imap_server.":".$imap_port."}".$folder, $source, "\\Seen"); 4689 4693 } 4694 4695 if (!empty($return['command'])) 4696 { 4697 list ($result, $msg) = explode(':',$return['command']); 4698 if (strtoupper($result) === 'NO') 4699 { 4700 $return['error'] = $msg; 4701 return $return; 4702 } 4703 } 4704 4690 4705 $status = imap_status($mbox_stream, "{".$this->imap_server.":".$this->imap_port."}".$folder, SA_UIDNEXT); 4691 4706 4692 4707 $return['msg_no'] = $status->uidnext - 1; 4693 $return['error'] = imap_last_error(); 4694 if(!$return['error'] && $flags != '' ){ 4695 4696 $flags_array=explode(':',$flags); 4697 //"Answered","Draft","Flagged","Unseen" 4698 $flags_fixed = ""; 4699 if($flags_array[0] == 'A') 4700 $flags_fixed.="\\Answered "; 4701 if($flags_array[1] == 'X') 4702 $flags_fixed.="\\Draft "; 4703 if($flags_array[2] == 'F') 4704 $flags_fixed.="\\Flagged "; 4705 if($flags_array[3] != 'U') 4706 $flags_fixed.="\\Seen "; 4707 if($flags_array[4] == 'F') 4708 $flags_fixed.="\\Answered \\Draft "; 4709 imap_setflag_full($mbox_stream, $return['msg_no'], $flags_fixed, ST_UID); 4710 } 4708 4709 $return['error'] = ''; 4710 if(imap_last_error() && imap_last_error() != "SECURITY PROBLEM: insecure server advertised AUTH=PLAIN") 4711 $return['error'] = imap_last_error(); 4712 4713 if(!$return['error'] && $flags != '' ){ 4714 $flags_array=explode(':',$flags); 4715 //"Answered","Draft","Flagged","Unseen" 4716 $flags_fixed = ""; 4717 if($flags_array[0] == 'A') 4718 $flags_fixed.="\\Answered "; 4719 if($flags_array[1] == 'X') 4720 $flags_fixed.="\\Draft "; 4721 if($flags_array[2] == 'F') 4722 $flags_fixed.="\\Flagged "; 4723 if($flags_array[3] != 'U') 4724 $flags_fixed.="\\Seen "; 4725 if($flags_array[4] == 'F') 4726 $flags_fixed.="\\Answered \\Draft "; 4727 imap_setflag_full($mbox_stream, $return['msg_no'], $flags_fixed, ST_UID); 4728 } 4711 4729 4712 4730 //Ignorando erro de AUTH=Plain … … 4773 4791 4774 4792 function treat_base64_from_post($source){ 4775 $offset = 0; 4776 do 4793 $source = preg_replace('/(?<!\r)\n/', "\r\n", $source); 4794 4795 $offset = 0; 4796 do 4797 { 4798 if($inicio = strpos($source, 'Content-Transfer-Encoding: base64', $offset)) 4777 4799 { 4778 if($inicio = strpos($source, 'Content-Transfer-Encoding: base64', $offset)) 4779 { 4780 $inicio = strpos($source, "\n\r", $inicio); 4781 $fim = strpos($source, '--', $inicio); 4782 if(!$fim) 4783 $fim = strpos($source,"\n\r", $inicio); 4784 $length = $fim-$inicio; 4785 $parte = substr( $source,$inicio,$length-1); 4786 $parte = str_replace(" ", "+", $parte); 4787 $source = substr_replace($source, $parte, $inicio, $length-1); 4788 } 4789 if($offset > $inicio) 4790 $offset=FALSE; 4791 else 4792 $offset = $inicio; 4800 $inicio = strpos($source, "\n\r", $inicio); 4801 $fim = strpos($source, '--', $inicio); 4802 if(!$fim) 4803 $fim = strpos($source,"\n\r", $inicio); 4804 $length = $fim-$inicio; 4805 $parte = substr( $source,$inicio,$length-1); 4806 $parte = str_replace(" ", "+", $parte); 4807 $source = substr_replace($source, $parte, $inicio, $length-1); 4793 4808 } 4794 while($offset); 4795 return $source; 4809 if($offset > $inicio) 4810 $offset=FALSE; 4811 else 4812 $offset = $inicio; 4813 } 4814 while($offset); 4815 return $source; 4796 4816 } 4797 4817 4798 //Por Bruno Costa(bruno.vieira-costa@serpro.gov.br - Recebe os fontes dos emails a serem desarquivados, separa e envia cada um para função insert_mail.4818 //Por Bruno Costa(bruno.vieira-costa@serpro.gov.br - Recebe os fontes dos emails a serem desarquivados, separa e envia cada um para função insert_mail. 4799 4819 4800 4820 function unarchive_mail($params) 4801 { 4802 $dest_folder = $params['folder'];4821 { 4822 $dest_folder = urldecode($params['folder']); 4803 4823 $sources = explode("#@#@#@",$params['source']); 4804 //Add user timeszone4805 4824 $timestamps = explode("#@#@#@",$params['timestamp']); 4806 4807 4808 4825 $flags = explode("#@#@#@",$params['flags']); 4809 4810 foreach($sources as $index=>$src) { 4811 if($src!=""){ 4812 $source = $this->treat_base64_from_post($src); 4813 $timestampsactual = $timestamps[$index] + $this->functions->CalculateDateOffset(); 4814 $insert = $this->insert_email($source, mb_convert_encoding( $dest_folder,"ISO-8859-1","UTF-8"), $timestampsactual,$flags[$index]); 4826 $ids = explode("#@#@#@",$params['id']); 4827 $return = array(); 4828 $archived = array(); 4829 $error = array(); 4830 4831 foreach($sources as $index=>$src) 4832 { 4833 if($src!="") 4834 { 4835 //If it is a MailArchiver incomming data 4836 if($params['madata']) 4837 $sourcedec = utf8_decode($src); 4838 //Default data 4839 else 4840 $sourcedec = $src; 4841 4842 $source = $this->treat_base64_from_post($sourcedec); 4843 4844 $insert = $this->insert_email($source,$dest_folder,$timestamps[$index],$flags[$index]); 4845 4846 if($insert['error']) 4847 { 4848 $error[] = $ids[$index]; 4849 } 4850 else 4851 { 4852 $archived[] = $ids[$index]; 4853 } 4854 }else{ 4855 $error[] = $ids[$index]; 4815 4856 } 4816 } 4817 return $insert; 4857 } 4858 4859 if (!empty($error)) 4860 { 4861 $return['error'] = $error; 4862 } 4863 if (!empty($archived)) 4864 { 4865 $return['archived'] = $archived; 4866 } 4867 4868 return $return; 4818 4869 } 4819 4870 … … 5484 5535 } 5485 5536 5537 //MailArchiver -> get offsettogmt as a global javascript variable, invoked at "main.js", init() 5538 function get_offset_gmt(){ 5539 return($this->functions->CalculateDateOffset()); 5540 } 5541 5542 //MailArchiver -> get message flags only, invoked at archive operation 5543 function get_msg_flags($args){ 5544 $msg_folder = $args['folder']; 5545 $msg_n = $args['msg_number']; 5546 $arr_msg = explode(",", $msg_n); 5547 5548 for($i=0; $i<count($arr_msg); $i++){ 5549 5550 if(!$this->mbox || !is_resource($this->mbox)) 5551 $this->mbox = $this->open_mbox($msg_folder); 5552 5553 if(!is_resource($this->mbox)) 5554 return(false); 5555 5556 $msgno_imap = imap_msgno($this->mbox, $msg_n); 5557 $header = @imap_headerinfo($this->mbox, $msgno_imap, 80, 255); 5558 5559 if (!is_object($header)) 5560 return false; 5561 5562 $taglist[$i]["msgid"] = $msg_n; 5563 $taglist[$i]["unseen"] = $header->Unseen; 5564 $taglist[$i]["recent"] = $header->Recent; 5565 $taglist[$i]["flagged"] = $header->Flagged; 5566 $taglist[$i]["draft"] = $header->Draft; 5567 $taglist[$i]["answered"] = $header->Answered; 5568 $taglist[$i]["deleted"] = $header->Deleted; 5569 5570 if($header->Answered =='A' && $header->Draft == 'X') 5571 $taglist[$i]['forwarded'] = 'F'; 5572 else 5573 $taglist[$i]['forwarded'] = ' '; 5574 } 5575 5576 return $taglist; 5577 } 5486 5578 } 5487 5579 ?> -
trunk/expressoMail1_2/inc/class.user.inc.php
r5509 r7414 50 50 return $_SESSION['phpgw_info']['expressomail']['user']['email']; 51 51 } 52 52 53 //MailArchiver login validate operations 54 function get_mailarchiver_authid(){ 55 if((isset($_COOKIE["BALANCEID"])) && ($_COOKIE["BALANCEID"] != null) && ($_COOKIE["BALANCEID"] != " ")) 56 $cookie_balancer = $_COOKIE["BALANCEID"]; 57 else 58 $cookie_balancer = ""; 59 if((isset($_COOKIE["sessionid"])) && ($_COOKIE["sessionid"] != null) && ($_COOKIE["sessionid"] != " ")) 60 $cookie_session = $_COOKIE["sessionid"]; 61 else 62 $cookie_session = ""; 63 if(isset($_SESSION['phpgw_info']['expressomail']['user']['userid']) && ($_SESSION['phpgw_info']['expressomail']['user']['userid'] != null) && ($_SESSION['phpgw_info']['expressomail']['user']['userid'] != " ")) 64 $cookie_user = $_SESSION['phpgw_info']['expressomail']['user']['userid']; 65 else 66 $cookie_user = ""; 67 68 if(isset($_SESSION['phpgw_info']['expressomail']['user']['passwd']) && ($_SESSION['phpgw_info']['expressomail']['user']['passwd'] != null) && ($_SESSION['phpgw_info']['expressomail']['user']['passwd'] != " ")) 69 $cookie_pass = $_SESSION['phpgw_info']['expressomail']['user']['passwd']; 70 else 71 $cookie_pass = ""; 72 73 return(array($cookie_balancer, $cookie_session, $cookie_user, $cookie_pass)); 74 } 75 53 76 } 54 77 ?> -
trunk/expressoMail1_2/index.php
r7110 r7414 348 348 // End Set Imap Folder names options 349 349 //User info 350 echo "<script language='javascript'> var account_id = ".$GLOBALS['phpgw_info']['user']['account_id'].";var expresso_offline = false;</script>"; 350 echo "<script language='javascript'> var account_id = ".$GLOBALS['phpgw_info']['user']['account_id'].";var expresso_offline = false; var mail_archive_host = '127.0.0.1';</script>\n"; 351 352 //MAILARCHIVER-02 353 //todo: remover a linha abaixo e implementar a configuração 354 //$GLOBALS['phpgw_info']['user']['preferences']['expressoMail']['use_local_messages'] = true; 355 if ( $GLOBALS['phpgw_info']['user']['preferences']['expressoMail']['use_local_messages'] == true ) { 356 $mail_archiver_host = '127.0.0.1'; 357 //Check protocol in use (https or http) 358 if($_SERVER['HTTPS'] != 'on'){ 359 $mail_archiver_protocol = "http"; 360 $mail_archiver_port = "4333"; 361 } 362 else{ 363 $mail_archiver_protocol = "https"; 364 $mail_archiver_port = "4334"; 365 } 366 367 //JS Variables (to add on jscripts variables, needed by dependence scripts following) 368 echo '<script type="text/javascript">var mail_archive_protocol="'.$mail_archiver_protocol.'"; var mail_archive_port="'.$mail_archiver_port.'";</script>'; 369 370 //CXF custom js files, from MailArchiver ArcServUtil JS files repository, intended to be running already: CORS support and custom TRANSPORT object 371 echo '<script type="text/javascript" src="'.$mail_archiver_protocol.'://'.$mail_archiver_host.':'.$mail_archiver_port.'/arcservutil/cxf-addon-xdr-adapter.js"></script>'; 372 echo '<script type="text/javascript" src="'.$mail_archiver_protocol.'://'.$mail_archiver_host.':'.$mail_archiver_port.'/arcservutil/cxf-addon-cors-request-object.js"></script>'; 373 echo '<script type="text/javascript" src="'.$mail_archiver_protocol.'://'.$mail_archiver_host.':'.$mail_archiver_port.'/arcservutil/cxf-addon-cors-utils.js"></script>'; 374 375 //CXF UTILS MAIN FILE 376 echo '<script type="text/javascript" src="'.$mail_archiver_protocol.'://'.$mail_archiver_host.':'.$mail_archiver_port.'/arcserv/ArchiveServices?js&nojsutils"></script>'; 377 378 //QueryConfig add on 379 echo '<script src="js/MAQueryConfig.js?'.$update_version.'"></script>'; 380 //Expresso serialized format add on 381 echo '<script src="js/MAExpressoPattern.js?'.$update_version.'"></script>'; 382 383 //echo $obj -> getFilesJs("js/mail_archiver.js," . $GLOBALS['phpgw_info']['flags']['update_version']); 384 echo '<script src="js/mail_archiver.js?'.$update_version.'"></script>'; 385 386 } 387 //echo "<script language='javascript'> var account_id = ".$GLOBALS['phpgw_info']['user']['account_id'].";var expresso_offline = false;</script>"; 351 388 352 389 $obj = createobject("expressoMail1_2.functions"); … … 376 413 $scripts .= "js/shortcut.js,"; 377 414 } 378 415 echo "<script> use_local_messages = ".$_SESSION['phpgw_info']['user']['preferences']['expressoMail']['use_local_messages']."</script>"; 379 416 if($_SESSION['phpgw_info']['user']['preferences']['expressoMail']['use_local_messages']) 380 417 $scripts .= "js/local_messages.js,"; -
trunk/expressoMail1_2/js/abas.js
r6960 r7414 220 220 var id_border = currentTab.replace(/[a-zA-Z_]+/, ""); 221 221 ID_TR = ID.toString().substr(0,ID.toString().indexOf("_r")); 222 var tr = Element(ID_TR) ;222 var tr = Element(ID_TR) ? Element(ID_TR) : Element(ID_TR+"_s"+id_border); 223 223 openTab.imapBox[ID] = (tr.getAttribute('name') == null?get_current_folder():tr.getAttribute('name')); 224 224 }else … … 255 255 cc = document.getElementById("em_message_search").value; 256 256 else{ 257 cc = document.getElementsByName(currentTab)[0].value; 257 if (currentTab == 0) 258 cc = ""; 259 else 260 cc = document.getElementsByName(currentTab)[0].value; 258 261 } 259 262 }else{ -
trunk/expressoMail1_2/js/common_functions.js
r7392 r7414 20 20 21 21 var message = "Não Informado"; 22 23 //MAILARCHIVER-01 24 try{ 25 var ArchiveServices = new web_service_mailarchiver_serpro__ArchiveServices(); 26 ArchiveServices.url = mail_archive_protocol + "://" + mail_archive_host + ":" + mail_archive_port + "/arcserv/ArchiveServices"; 27 ArchiveServices.synchronous = true; 28 } 29 catch (e){ 30 var ArchiveServices = null; 31 } 22 32 23 33 function config_events(pObj, pEvent, pHandler) … … 245 255 } 246 256 div_attachment.innerHTML="<iframe style='display:none;width:0;height:0' name='attachment' src='"+url+"'></iframe>"; 247 } 257 window.onbeforeunload = function(){return unloadMess();} 258 } 248 259 249 260 function download_attachments(msg_folder, msg_number, idx_file, msg_part, encoding, new_file_name, show_iframe){ … … 666 677 667 678 function configureLabels(data){ 679 if(get_current_folder().split("_")[0] == "local"){ 680 alert("Pastas locais não fornece suporte para marcadores"); 681 return true; 682 } 668 683 669 684 dialogElement = $('.label-configure-win').html(DataLayer.render("../prototype/modules/mail/templates/label_configure.ejs", {})) … … 693 708 694 709 function configureFollowupflag(){ 710 711 if(get_current_folder().split("_")[0] == "local"){ 712 alert("Pastas locais não fornece suporte para acompanhamento."); 713 return true; 714 } 695 715 696 716 var messages = new Array(); -
trunk/expressoMail1_2/js/doiMenuData.js
r7222 r7414 1 function labeledMessages(isLabel){ 2 if (isLabel) { 3 var label = { 4 id: isLabel 5 } 6 var lableleds = new Array(); 7 var msg_folder = current_folder; 8 var messages = new Array(); 9 if(currentTab == 0){ 10 var id = get_selected_messages().split(','); 11 for (i = 0; i < id.length; i++){ 12 messages.push({ 13 msg_number: id[i], 14 msg_folder: msg_folder 15 }); 16 } 17 }else{ 18 // var id = get_selected_messages_search().split(','); 19 // var id_border = currentTab.replace(/[a-zA-Z_]+/, ""); 20 // for (i = 0; i < id.length; i++){ 21 // var tr = Element(id[i]+'_s'+id_border); 22 // msg_folder = tr.getAttribute('name'); 23 // messages.push({ 24 // "msg_number": id[i], 25 // "msg_folder": msg_folder, 26 // }); 27 // } 28 29 var roles = get_selected_messages_search_role().split(','); 30 for (i = 0; i < roles.length; i++){ 31 var tr = $('[role="'+roles[i]+'"]'); 32 msg_folder = $(tr).attr('name'); 33 var id = $(tr).attr('id'); 34 messages.push({ 35 "msg_number": id.replace(/_[a-zA-Z0-9]+/,""), 36 "msg_folder": msg_folder 37 }); 38 } 39 } 40 41 for (var i=0; i < messages.length; i++) { 42 var hasLabel = DataLayer.get('labeled', { 43 filter: [ 44 'AND', 45 ['=', 'labelId', label.id], 46 ['=', 'folderName', messages[i].msg_folder], 47 ['=', 'messageNumber', messages[i].msg_number] 48 ]}); 49 if (!hasLabel || hasLabel == "") { 50 lableleds.push( 51 DataLayer.put('labeled', { 52 labelId:label.id, 53 folderName:messages[i].msg_folder, 54 messageNumber:messages[i].msg_number 55 }) 56 ); 57 58 } 59 } 60 DataLayer.commit(false, false, function(data){ 61 for (var i=0; i < messages.length; i++) { 62 updateLabelsColumn({msg_number:messages[i].msg_number, boxname:messages[i].msg_folder, labels:false}); 63 } 64 }); 65 66 67 } 68 } 69 70 function openListUsers(border_id) { 71 connector.loadScript("QuickCatalogSearch"); 72 if (typeof(QuickCatalogSearch) == 'undefined'){ 73 setTimeout('openListUsers('+border_id+')',500); 74 return false; 75 } 76 QuickCatalogSearch.showCatalogList(border_id); 77 } 78 79 80 /** 81 * Cria a lista de marcadores para o submenu "Marcadores" 82 */ 83 function getLabels(){ 84 var labels = DataLayer.get('label',{criteria:{order: 'name'}}); 85 var menuLabelItems = {}; 86 menuLabelItems["new"] = { 87 "name" : get_lang('New Label'), 88 callback:function() {configureLabels({applyToSelectedMessages:true});} 89 }; 90 for(var i=0; i<labels.length; i++) { 91 menuLabelItems["label"+labels[i].id] = { 92 "name" : labels[i].name 93 } 94 } 95 return menuLabelItems; 96 } 97 98 /** 99 * Carrega o menu de opção de uma mensagem 100 */ 101 function loadMenu(){ 102 var labelItems = getLabels(); 103 $.contextMenu({ 104 selector: ".table_box tbody tr", 105 callback: function(key, options) { 106 //TODO - default actions 107 108 /** 109 * Apply labels to selected messages 110 */ 111 var isLabel = key.match(/label(.*)/); 112 if (isLabel && isLabel.length > 1) { 113 labeledMessages(isLabel[1]); 114 } 115 selectAllFolderMsgs(false); 116 }, 117 items: { 118 "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'); }}, 119 "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'); }}, 120 "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'); }}, 121 "flagUnflagged": {"name": get_lang("Mark as") + " " + get_lang('normal'), callback: function(key, opt){ proxy_mensagens.proxy_set_messages_flag('unflagged','get_selected_messages'); }}, 122 123 "sep1": "---------", 124 "label": { "name": get_lang("Labels"), "items": labelItems}, 125 "follouwpflag":{"name": get_lang("Follow up"), callback: function(key, opt){ configureFollowupflag(); } }, 126 127 "sep2": "---------", 128 "move": {"name": get_lang("Move to")+"...", "icon": "move", callback: function(key, opt){ wfolders.makeWindow('', 'move_to'); }}, 129 "remove": {"name": get_lang("Delete"), "icon": "delete", callback: function(key, opt){ proxy_mensagens.delete_msgs('null','selected','null'); }}, 130 "export": {"name": get_lang("Export"), "icon": "export", callback: function(key, opt){ proxy_mensagens.export_all_messages(); }} 131 } 132 }); 133 } 134 /*FIM*/ 135 loadMenu(); 136 137 if (!expresso_offline) { 138 var menuToolsItems = { 139 "i01": {"name": get_lang("Preferences"), "icon": "preferences-mail", callback: preferences_mail }, 140 "i02": {"name": get_lang("Search"), "icon": "search-mail", callback: function(key, opt){ search_emails(""); }}, 141 "103": {"name": get_lang("Edit filters"), "icon": "filter", callback: filterbox2 }, 142 "i05": {"name": get_lang("Share mailbox"), "icon": "share-mailbox", callback: sharebox }, 143 "i06": {"name": get_lang("Labels"), "icon": "tag", callback: configureLabels }, 144 "i08": {"name": get_lang("Empty trash"), "icon": "empty-trash", callback: function(key, opt){ empty_trash_imap(); }} 145 }; 146 147 if(preferences.use_local_messages==1) { 148 if(expresso_local_messages.is_offline_installed()) { 149 menuToolsItems["i09"] = {"name": get_lang("Send from queue"), "icon": "queue", callback: force_check_queue }; 150 } 151 } 152 } else { 153 var menuToolsItems = { 154 "i01": {"name": get_lang("Search"), "icon": "search-mail", callback: function(key, opt){ search_emails(""); }} 155 } 156 } 157 $.contextMenu({ 158 selector: "#link_tools", 159 trigger: 'hover', 160 className: 'context-menu-tools', 161 position: function($menu, x, y){ 162 $menu.$menu.position({ my: "center top", at: "center bottom", of: this, offset:"0 0"}); 163 }, 164 determinePosition: function($menu, x, y){ 165 $menu.css('display', 'block').position({ my: "center top", at: "center bottom", of: this}).css('display', 'none'); 166 }, 167 delay:500, 168 autoHide:true, 169 events: { 170 show: function(opt) { 171 var $trigger = $(opt.selector).css({'background-color': '#ffffff', 'border': '1px solid #CCCCCC'}); 172 $('.context-menu-tools.context-menu-list.context-menu-root').css({'width': $trigger.css('width') }); 173 $('.context-menu-tools.context-menu-list').css({'background': '#ffffff'}) 174 .find(".context-menu-item").css({'background-color': '#ffffff'}).hover( 175 function(){ 176 $(this).css({'background-color': '#CCCCCC'}); 177 }, 178 function(){ 179 $(this).css({'background-color': '#ffffff'}); 180 } 181 ); 182 return true; 183 }, 184 hide: function(opt) { 185 $(opt.selector).css({'background-color': '', 'border': 'none'}); 186 return true; 187 } 188 }, 189 callback: function(key, options) { 190 //TODO - default actions 191 192 }, 193 items: menuToolsItems 194 }); 195 var reComplexEmail = /<([^<]*)>[\s]*$/; 196 $.contextMenu({ 197 selector: ".box", 198 autoHide:true, 199 items: { 200 "add" : {name: get_lang("Quick Add"), icon : "quick-add",callback: function(key, opt){ var fname = $(opt.$trigger).find("input").val().split('"')[1];ccQuickAddOne.showList(','+fname+', ,'+$.trim($(opt.$trigger).find("input").val()).match(reComplexEmail)[1]); }}, 201 "remove" : {name:get_lang("Remove recipient"), icon:"delete-box",callback: function(key, opt){ $(opt.$trigger).remove(); }}, 202 "sep1": "---------", 203 "quick_search" : {name:get_lang("Quick search of messages"), icon: "quick-search-contact",callback: function(key, opt){ search_emails($.trim($(opt.$trigger).find("input").val()).match(reComplexEmail)[1]); }}, 204 "full_search" : {name:get_lang("Search messages of ..."), icon: "quick-search-contact",callback: function(key, opt){ search_emails("", $.trim($(opt.$trigger).find("input").val()).match(reComplexEmail)[1]);}} 205 } 206 }); 207 208 function updateLabelsColumn(messageInfo) { 209 var msg_number = messageInfo.msg_number; 210 //uid é o numero da mensagem quando os dados são carregados na busca rapida. 211 if(messageInfo.uid != '' && messageInfo.uid != 'undefined' && messageInfo.uid != null){ 212 msg_number = messageInfo.uid; 213 } 214 var msg_folder = current_folder; 215 if(messageInfo.boxname != '' && messageInfo.boxname != 'undefined' && messageInfo.boxname != null){ 216 msg_folder = messageInfo.boxname; 217 } 218 219 if(current_folder == msg_folder || !current_folder){ 220 $('#td_message_labels_' + msg_number +', tr[role="'+msg_number+'_'+msg_folder+'"] #td_message_labels_search_' + msg_number) 221 .html('<img src="../prototype/modules/mail/img/tag.png">'); 222 }else{ 223 $('tr[role="'+msg_number+'_'+msg_folder+'"] #td_message_labels_search_' + msg_number) 224 .html('<img src="../prototype/modules/mail/img/tag.png">'); 225 } 226 227 var menuItems = {}; 228 if (messageInfo.labels) { 229 if($.isArray(messageInfo.labels)){ 230 var labels = messageInfo.labels; 231 messageInfo.labels = {}; 232 for(var i in labels) 233 messageInfo.labels[labels[i].id] = {backgroundColor: labels[i]['backgroundColor'], 234 borderColor: labels[i]['borderColor'], 235 fontColor: labels[i]['fontColor'], id: labels[i]['id'], name: labels[i]['name'], 236 uid: labels[i]['uid'] } 237 } 238 menuItems = messageInfo.labels; 239 } else { 240 var labeleds = DataLayer.get('labeled', { 241 criteria: {deepness: '2'}, 242 filter: [ 243 'AND', 244 ['=', 'folderName', msg_folder], 245 ['=', 'messageNumber', msg_number] 246 ] 247 248 }); 249 if (labeleds) { 250 for (var i=0; i < labeleds.length; i++) 251 menuItems[labeleds[i].label.id] = labeleds[i].label; 252 } else { 253 $('#td_message_labels_' + msg_number +', tr[role="'+msg_number+'_'+msg_folder+'"] #td_message_labels_search_' + msg_number) 254 .html(''); 255 //$.contextMenu( 'destroy', '#td_message_labels_' + msg_number +', #td_message_labels_search_' + msg_number+':first'); 256 $.contextMenu( 'destroy', '#td_message_labels_' + msg_number +', tr[role="'+msg_number+'_'+msg_folder+'"] #td_message_labels_search_' + msg_number); 257 return false; 258 } 259 } 260 var menuItensLabel = {}; 261 for(index in menuItems){ 262 menuItensLabel[index] = {type: "label", customName: menuItems[index].name, id: msg_folder+"/"+msg_number+"#"+index}; 263 } 264 $.contextMenu.types.label = function(item, opt, root) { 265 $('<span>'+item.customName+'</span><span class="removeLabeled" title="'+get_lang("Remove Label")+'">x</span>') 266 .appendTo(this); 267 $(this).find('span.removeLabeled').click(function(){ 268 //TODO Mudar quando API abstrair atualizações no cache 269 DataLayer.remove('labeled', false); 270 DataLayer.get('labeled'); 271 DataLayer.remove('labeled', item.id); 272 DataLayer.commit(false, false, function(){ 273 updateLabelsColumn({msg_number:msg_number, boxname:msg_folder, labels:false}); 274 }); 275 }); 276 }; 277 if(current_folder == msg_folder || !current_folder){ 278 $.contextMenu( 'destroy', '#td_message_labels_' + msg_number +', tr[role="'+msg_number+'_'+msg_folder+'"] #td_message_labels_search_' + msg_number); 279 $.contextMenu({ 280 selector: '#td_message_labels_' + msg_number +', tr[role="'+msg_number+'_'+msg_folder+'"] #td_message_labels_search_' + msg_number, 281 trigger: 'hover', 282 delay:100, 283 autoHide:true, 284 callback: function(key, options) { 285 //TODO - default actions 286 }, 287 items: menuItensLabel 288 }); 289 }else{ 290 $.contextMenu( 'destroy', 'tr[role="'+msg_number+'_'+msg_folder+'"] #td_message_labels_search_' + msg_number); 291 292 $.contextMenu({ 293 selector: 'tr[role="'+msg_number+'_'+msg_folder+'"] #td_message_labels_search_' + msg_number, 294 trigger: 'hover', 295 delay:100, 296 autoHide:true, 297 callback: function(key, options) { 298 //TODO - default actions 299 }, 300 items: menuItensLabel 301 }); 302 } 303 } 304 305 function loadExtraLDAPBox(data, element){ 306 307 if(!!data[0]){ 308 var decoded = {}; 309 310 $.each(data, function(i, e){ 311 decoded[e.name] = e.value; 312 }); 313 314 data = decoded; 315 } 316 317 menuItensLabel = {}; 318 menuItensLabel["Name"] = {name: "<b>"+data.name+"</b>", disabled: true}; 319 menuItensLabel["Email"] = {name: data.email, disabled: true}; 320 if(!!data.telephone){ 321 menuItensLabel["TelefoneLabel"] = {name: "<b>"+get_lang("Telephone")+"</b>", disabled: true}; 322 menuItensLabel["TelefoneValue"] = {name: data.telephone, disabled: true}; 323 } 324 if(data.vacationActive){ 325 if(data.vacationActive == "TRUE"){ 326 menuItensLabel["outOffice"] = {name: "<b>"+get_lang("Out of office")+"</b>", disabled: true}; 327 menuItensLabel["outOfficeValue"] = {name: data.vacationInfo.substring(0, 20), disabled: true}; 328 } 329 } 330 $.contextMenu({ 331 selector: "#content_id_"+currentTab+" "+element+" .box-info", 332 trigger: 'hover', 333 delay:100, 334 autoHide:true, 335 items: menuItensLabel 336 }); 337 } 338 339 function loadGroupBox(data, element){ 340 menuItensLabel = {}; 341 menuItensLabel["ContactGroupLabelAll"] = {name:"<b>"+get_lang("Group contacts")+"</b>", disabled: true}; 342 menuItensLabel["sep1"] = "---------"; 343 if(data.itens){ 344 var aux = 0; 345 var ctcName = ""; 346 for(var item in data.itens){ 347 if(parseInt(item) <= 4){ 348 ctcName = data.itens[item].data[0].value; 349 ctcName = ctcName.length > 2 ? ctcName : data.itens[item].data[2].value.substr(0,data.itens[item].data[2].value.indexOf("@")); 350 menuItensLabel["ContactGroupLabel"+item] = {name: "<b>"+ctcName+"</b>", disabled: true}; 351 menuItensLabel["ContactGroupValue"+item] = {name: data.itens[item].data[2].value, disabled: true}; 352 }else{ 353 aux++; 354 if(aux == 1) 355 menuItensLabel["MoreContactGroupValue"] = {name : get_lang("And more %1 contact", aux), disabled: true }; 356 else 357 menuItensLabel["MoreContactGroupValue"] = {name : get_lang("And more %1 contact", aux)+"s", disabled: true }; 358 } 359 } 360 } 361 $.contextMenu({ 362 selector: "#content_id_"+currentTab+" "+element+" .box-info", 363 trigger: 'hover', 364 delay:100, 365 autoHide:true, 366 items: menuItensLabel 367 }); 368 } 369 370 371 372 373 1 function labeledMessages(isLabel){ 2 if(get_current_folder().split("_")[0] == "local"){ 3 alert("Pastas locais não fornece suporte para adição de marcadores.") 4 return true; 5 } 6 if (isLabel) { 7 var label = { 8 id: isLabel 9 } 10 var lableleds = new Array(); 11 var msg_folder = current_folder; 12 var messages = new Array(); 13 if(currentTab == 0){ 14 var id = get_selected_messages().split(','); 15 for (i = 0; i < id.length; i++){ 16 messages.push({ 17 msg_number: id[i], 18 msg_folder: msg_folder 19 }); 20 } 21 }else{ 22 // var id = get_selected_messages_search().split(','); 23 // var id_border = currentTab.replace(/[a-zA-Z_]+/, ""); 24 // for (i = 0; i < id.length; i++){ 25 // var tr = Element(id[i]+'_s'+id_border); 26 // msg_folder = tr.getAttribute('name'); 27 // messages.push({ 28 // "msg_number": id[i], 29 // "msg_folder": msg_folder, 30 // }); 31 // } 32 33 var roles = get_selected_messages_search_role().split(','); 34 for (i = 0; i < roles.length; i++){ 35 var tr = $('[role="'+roles[i]+'"]'); 36 msg_folder = $(tr).attr('name'); 37 var id = $(tr).attr('id'); 38 messages.push({ 39 "msg_number": id.replace(/_[a-zA-Z0-9]+/,""), 40 "msg_folder": msg_folder 41 }); 42 } 43 } 44 45 for (var i=0; i < messages.length; i++) { 46 var hasLabel = DataLayer.get('labeled', { 47 filter: [ 48 'AND', 49 ['=', 'labelId', label.id], 50 ['=', 'folderName', messages[i].msg_folder], 51 ['=', 'messageNumber', messages[i].msg_number] 52 ]}); 53 if (!hasLabel || hasLabel == "") { 54 lableleds.push( 55 DataLayer.put('labeled', { 56 labelId:label.id, 57 folderName:messages[i].msg_folder, 58 messageNumber:messages[i].msg_number 59 }) 60 ); 61 62 } 63 } 64 DataLayer.commit(false, false, function(data){ 65 for (var i=0; i < messages.length; i++) { 66 updateLabelsColumn({msg_number:messages[i].msg_number, boxname:messages[i].msg_folder, labels:false}); 67 } 68 }); 69 70 71 } 72 } 73 74 function openListUsers(border_id) { 75 connector.loadScript("QuickCatalogSearch"); 76 if (typeof(QuickCatalogSearch) == 'undefined'){ 77 setTimeout('openListUsers('+border_id+')',500); 78 return false; 79 } 80 QuickCatalogSearch.showCatalogList(border_id); 81 } 82 83 84 /** 85 * Cria a lista de marcadores para o submenu "Marcadores" 86 */ 87 function getLabels(){ 88 var labels = DataLayer.get('label',{criteria:{order: 'name'}}); 89 var menuLabelItems = {}; 90 menuLabelItems["new"] = { 91 "name" : get_lang('New Label'), 92 callback:function() {configureLabels({applyToSelectedMessages:true});} 93 }; 94 for(var i=0; i<labels.length; i++) { 95 menuLabelItems["label"+labels[i].id] = { 96 "name" : labels[i].name 97 } 98 } 99 return menuLabelItems; 100 } 101 102 /** 103 * Carrega o menu de opção de uma mensagem 104 */ 105 function loadMenu(){ 106 var archive = ""; 107 if(use_local_messages != 0){ 108 archive = {"name": get_lang("Archive"), "icon": "archive", callback: function(key, opt){ proxy_mensagens.archive_message('inbox', 'get_selected_messages'); }} 109 }else{ 110 archive = ""; 111 } 112 113 var labelItems = getLabels(); 114 $.contextMenu({ 115 selector: ".table_box tbody tr", 116 build: function($trigger, e) { 117 118 var itensNotLocal = { 119 "label": { "name": get_lang("Labels"), "items": labelItems}, 120 "follouwpflag":{"name": get_lang("Follow up"), callback: function(key, opt){ configureFollowupflag(); } }, 121 "sep2": "---------" 122 } 123 124 var items= { 125 "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'); }}, 126 "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'); }}, 127 "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'); }}, 128 "flagUnflagged": {"name": get_lang("Mark as") + " " + get_lang('normal'), callback: function(key, opt){ proxy_mensagens.proxy_set_messages_flag('unflagged','get_selected_messages'); }}, 129 "sep1": "---------" 130 } 131 132 var lastItens = { 133 "move": {"name": get_lang("Move to")+"...", "icon": "move", callback: function(key, opt){ wfolders.makeWindow('', 'move_to'); }}, 134 "remove": {"name": get_lang("Delete"), "icon": "delete", callback: function(key, opt){ proxy_mensagens.delete_msgs('null','selected','null'); }}, 135 "export": {"name": get_lang("Export"), "icon": "export", callback: function(key, opt){ proxy_mensagens.export_all_messages(); }}, 136 "archive": archive 137 } 138 139 var realItens = {}; 140 141 if(currentTab == 0){ 142 if(get_current_folder().split("local").length > 1){ 143 realItens = $.extend(items, lastItens); 144 }else{ 145 realItens = $.extend(items, itensNotLocal); 146 realItens = $.extend(realItens, lastItens); 147 } 148 }else if(currentTab.split("local").length > 1){ 149 realItens = $.extend(items, lastItens); 150 }else{ 151 realItens = $.extend(items, itensNotLocal); 152 realItens = $.extend(realItens, lastItens); 153 } 154 155 return { 156 callback: function(key, options) { 157 //TODO - default actions 158 159 /** 160 * Apply labels to selected messages 161 */ 162 var isLabel = key.match(/label(.*)/); 163 if (isLabel && isLabel.length > 1) { 164 labeledMessages(isLabel[1]); 165 } 166 selectAllFolderMsgs(false); 167 }, 168 items: realItens 169 } 170 } 171 }); 172 } 173 /*FIM*/ 174 loadMenu(); 175 176 if (!expresso_offline) { 177 var menuToolsItems = { 178 "i01": {"name": get_lang("Preferences"), "icon": "preferences-mail", callback: preferences_mail }, 179 "i02": {"name": get_lang("Search"), "icon": "search-mail", callback: function(key, opt){ search_emails(""); }}, 180 "103": {"name": get_lang("Edit filters"), "icon": "filter", callback: filterbox2 }, 181 "i05": {"name": get_lang("Share mailbox"), "icon": "share-mailbox", callback: sharebox }, 182 "i06": {"name": get_lang("Labels"), "icon": "tag", callback: configureLabels }, 183 "i08": {"name": get_lang("Empty trash"), "icon": "empty-trash", callback: function(key, opt){ empty_trash_imap(); }} 184 }; 185 186 if(preferences.use_local_messages==1) { 187 if(expresso_local_messages.is_offline_installed()) { 188 menuToolsItems["i09"] = {"name": get_lang("Send from queue"), "icon": "queue", callback: force_check_queue }; 189 } 190 } 191 } else { 192 var menuToolsItems = { 193 "i01": {"name": get_lang("Search"), "icon": "search-mail", callback: function(key, opt){ search_emails(""); }} 194 } 195 } 196 $.contextMenu({ 197 selector: "#link_tools", 198 trigger: 'hover', 199 className: 'context-menu-tools', 200 position: function($menu, x, y){ 201 $menu.$menu.position({ my: "center top", at: "center bottom", of: this, offset:"0 0"}); 202 }, 203 determinePosition: function($menu, x, y){ 204 $menu.css('display', 'block').position({ my: "center top", at: "center bottom", of: this}).css('display', 'none'); 205 }, 206 delay:500, 207 autoHide:true, 208 events: { 209 show: function(opt) { 210 var $trigger = $(opt.selector).css({'background-color': '#ffffff', 'border': '1px solid #CCCCCC'}); 211 $('.context-menu-tools.context-menu-list.context-menu-root').css({'width': $trigger.css('width') }); 212 $('.context-menu-tools.context-menu-list').css({'background': '#ffffff'}) 213 .find(".context-menu-item").css({'background-color': '#ffffff'}).hover( 214 function(){ 215 $(this).css({'background-color': '#CCCCCC'}); 216 }, 217 function(){ 218 $(this).css({'background-color': '#ffffff'}); 219 } 220 ); 221 return true; 222 }, 223 hide: function(opt) { 224 $(opt.selector).css({'background-color': '', 'border': 'none'}); 225 return true; 226 } 227 }, 228 callback: function(key, options) { 229 //TODO - default actions 230 231 }, 232 items: menuToolsItems 233 }); 234 var reComplexEmail = /<([^<]*)>[\s]*$/; 235 $.contextMenu({ 236 selector: ".box", 237 autoHide:true, 238 items: { 239 "add" : {name: get_lang("Quick Add"), icon : "quick-add",callback: function(key, opt){ var fname = $(opt.$trigger).find("input").val().split('"')[1];ccQuickAddOne.showList(','+fname+', ,'+$.trim($(opt.$trigger).find("input").val()).match(reComplexEmail)[1]); }}, 240 "remove" : {name:get_lang("Remove recipient"), icon:"delete-box",callback: function(key, opt){ $(opt.$trigger).remove(); }}, 241 "sep1": "---------", 242 "quick_search" : {name:get_lang("Quick search of messages"), icon: "quick-search-contact",callback: function(key, opt){ search_emails($.trim($(opt.$trigger).find("input").val()).match(reComplexEmail)[1]); }}, 243 "full_search" : {name:get_lang("Search messages of ..."), icon: "quick-search-contact",callback: function(key, opt){ search_emails("", $.trim($(opt.$trigger).find("input").val()).match(reComplexEmail)[1]);}} 244 } 245 }); 246 247 function updateLabelsColumn(messageInfo) { 248 var msg_number = messageInfo.msg_number; 249 //uid é o numero da mensagem quando os dados são carregados na busca rapida. 250 if(messageInfo.uid != '' && messageInfo.uid != 'undefined' && messageInfo.uid != null){ 251 msg_number = messageInfo.uid; 252 } 253 var msg_folder = current_folder; 254 if(messageInfo.boxname != '' && messageInfo.boxname != 'undefined' && messageInfo.boxname != null){ 255 msg_folder = messageInfo.boxname; 256 } 257 258 if(current_folder == msg_folder || !current_folder){ 259 $('#td_message_labels_' + msg_number +', tr[role="'+msg_number+'_'+msg_folder+'"] #td_message_labels_search_' + msg_number) 260 .html('<img src="../prototype/modules/mail/img/tag.png">'); 261 }else{ 262 $('tr[role="'+msg_number+'_'+msg_folder+'"] #td_message_labels_search_' + msg_number) 263 .html('<img src="../prototype/modules/mail/img/tag.png">'); 264 } 265 266 var menuItems = {}; 267 if (messageInfo.labels) { 268 if($.isArray(messageInfo.labels)){ 269 var labels = messageInfo.labels; 270 messageInfo.labels = {}; 271 for(var i in labels) 272 messageInfo.labels[labels[i].id] = {backgroundColor: labels[i]['backgroundColor'], 273 borderColor: labels[i]['borderColor'], 274 fontColor: labels[i]['fontColor'], id: labels[i]['id'], name: labels[i]['name'], 275 uid: labels[i]['uid'] } 276 } 277 menuItems = messageInfo.labels; 278 } else { 279 var labeleds = DataLayer.get('labeled', { 280 criteria: {deepness: '2'}, 281 filter: [ 282 'AND', 283 ['=', 'folderName', msg_folder], 284 ['=', 'messageNumber', msg_number] 285 ] 286 287 }); 288 if (labeleds) { 289 for (var i=0; i < labeleds.length; i++) 290 menuItems[labeleds[i].label.id] = labeleds[i].label; 291 } else { 292 $('#td_message_labels_' + msg_number +', tr[role="'+msg_number+'_'+msg_folder+'"] #td_message_labels_search_' + msg_number) 293 .html(''); 294 //$.contextMenu( 'destroy', '#td_message_labels_' + msg_number +', #td_message_labels_search_' + msg_number+':first'); 295 $.contextMenu( 'destroy', '#td_message_labels_' + msg_number +', tr[role="'+msg_number+'_'+msg_folder+'"] #td_message_labels_search_' + msg_number); 296 return false; 297 } 298 } 299 var menuItensLabel = {}; 300 for(index in menuItems){ 301 menuItensLabel[index] = {type: "label", customName: menuItems[index].name, id: msg_folder+"/"+msg_number+"#"+index}; 302 } 303 $.contextMenu.types.label = function(item, opt, root) { 304 $('<span>'+item.customName+'</span><span class="removeLabeled" title="'+get_lang("Remove Label")+'">x</span>') 305 .appendTo(this); 306 $(this).find('span.removeLabeled').click(function(){ 307 //TODO Mudar quando API abstrair atualizações no cache 308 DataLayer.remove('labeled', false); 309 DataLayer.get('labeled'); 310 DataLayer.remove('labeled', item.id); 311 DataLayer.commit(false, false, function(){ 312 updateLabelsColumn({msg_number:msg_number, boxname:msg_folder, labels:false}); 313 }); 314 }); 315 }; 316 if(current_folder == msg_folder || !current_folder){ 317 $.contextMenu( 'destroy', '#td_message_labels_' + msg_number +', tr[role="'+msg_number+'_'+msg_folder+'"] #td_message_labels_search_' + msg_number); 318 $.contextMenu({ 319 selector: '#td_message_labels_' + msg_number +', tr[role="'+msg_number+'_'+msg_folder+'"] #td_message_labels_search_' + msg_number, 320 trigger: 'hover', 321 delay:100, 322 autoHide:true, 323 callback: function(key, options) { 324 //TODO - default actions 325 }, 326 items: menuItensLabel 327 }); 328 }else{ 329 $.contextMenu( 'destroy', 'tr[role="'+msg_number+'_'+msg_folder+'"] #td_message_labels_search_' + msg_number); 330 331 $.contextMenu({ 332 selector: 'tr[role="'+msg_number+'_'+msg_folder+'"] #td_message_labels_search_' + msg_number, 333 trigger: 'hover', 334 delay:100, 335 autoHide:true, 336 callback: function(key, options) { 337 //TODO - default actions 338 }, 339 items: menuItensLabel 340 }); 341 } 342 } 343 344 function loadExtraLDAPBox(data, element){ 345 346 if(!!data[0]){ 347 var decoded = {}; 348 349 $.each(data, function(i, e){ 350 decoded[e.name] = e.value; 351 }); 352 353 data = decoded; 354 } 355 356 menuItensLabel = {}; 357 menuItensLabel["Name"] = {name: "<b>"+data.name+"</b>", disabled: true}; 358 menuItensLabel["Email"] = {name: data.email, disabled: true}; 359 if(!!data.telephone){ 360 menuItensLabel["TelefoneLabel"] = {name: "<b>"+get_lang("Telephone")+"</b>", disabled: true}; 361 menuItensLabel["TelefoneValue"] = {name: data.telephone, disabled: true}; 362 } 363 if(data.vacationActive){ 364 if(data.vacationActive == "TRUE"){ 365 menuItensLabel["outOffice"] = {name: "<b>"+get_lang("Out of office")+"</b>", disabled: true}; 366 menuItensLabel["outOfficeValue"] = {name: data.vacationInfo.substring(0, 20), disabled: true}; 367 } 368 } 369 $.contextMenu({ 370 selector: "#content_id_"+currentTab+" "+element+" .box-info", 371 trigger: 'hover', 372 delay:100, 373 autoHide:true, 374 items: menuItensLabel 375 }); 376 } 377 378 function loadGroupBox(data, element){ 379 menuItensLabel = {}; 380 menuItensLabel["ContactGroupLabelAll"] = {name:"<b>"+get_lang("Group contacts")+"</b>", disabled: true}; 381 menuItensLabel["sep1"] = "---------"; 382 if(data.itens){ 383 var aux = 0; 384 var ctcName = ""; 385 for(var item in data.itens){ 386 if(parseInt(item) <= 4){ 387 ctcName = data.itens[item].data[0].value; 388 ctcName = ctcName.length > 2 ? ctcName : data.itens[item].data[2].value.substr(0,data.itens[item].data[2].value.indexOf("@")); 389 menuItensLabel["ContactGroupLabel"+item] = {name: "<b>"+ctcName+"</b>", disabled: true}; 390 menuItensLabel["ContactGroupValue"+item] = {name: data.itens[item].data[2].value, disabled: true}; 391 }else{ 392 aux++; 393 if(aux == 1) 394 menuItensLabel["MoreContactGroupValue"] = {name : get_lang("And more %1 contact", aux), disabled: true }; 395 else 396 menuItensLabel["MoreContactGroupValue"] = {name : get_lang("And more %1 contact", aux)+"s", disabled: true }; 397 } 398 } 399 } 400 $.contextMenu({ 401 selector: "#content_id_"+currentTab+" "+element+" .box-info", 402 trigger: 'hover', 403 delay:100, 404 autoHide:true, 405 items: menuItensLabel 406 }); 407 } 408 409 410 411 412 -
trunk/expressoMail1_2/js/draw_api.js
r7371 r7414 108 108 } 109 109 110 111 //MAILARCHIVER-01 112 //Create local folders main structure tree 113 if(preferences.use_local_messages=="1"){ 114 var disabled_local_span = document.getElementById('llocal_disabledtree_folders'); 115 116 //Services are disabled: because Mail Archiver is not running/installed or have just crashed. Link activation is created here 117 if(!expresso_mail_archive.enabled){ 118 //window.alert('tem o nodo disabled? ' + tree_folders.getNodeById("local_disabled") + '[' + typeof(tree_folders.getNodeById('local_disabled')) + ']'); 119 if(typeof(tree_folders.getNodeById("local_disabled")) == 'undefined'){ 120 var n_LocalDisabled = new dNode({id: "local_disabled", caption: get_lang('Offline'), onClick: "services_retry()", plusSign:false}); 121 tree_folders.add(n_LocalDisabled, 'local_root'); 122 } 123 124 tree_folders.getNodeById("local_disabled").alter({caption:get_lang('Offline'), onClick: "retry_local_folders()"}); 125 tree_folders.getNodeById("local_disabled")._refresh(); 126 127 if((disabled_local_span) && (!document.getElementById('services_retry'))){ 128 disabled_local_span.style.backgroundImage="url(../phpgwapi/templates/"+template+"/images/foldertree_services.png)"; 129 130 var service_retry = document.createElement("SPAN"); 131 service_retry.id = 'services_retry'; 132 service_retry.className = 'clean_trash'; 133 service_retry.style.cursor = 'pointer'; 134 service_retry.onclick = function () {services_retry();}; 135 service_retry.innerHTML = "["+get_lang("Retry")+"]"; 136 service_retry.title="Reconectar ao Mail Archiver"; 137 service_retry.onmouseover = function() {service_retry.style.color="red";}; 138 service_retry.onmouseout= function() {service_retry.style.color="#666666";}; //#114FA4 139 disabled_local_span.parentNode.appendChild(service_retry); 140 } 141 else{ 142 //Creates the tree node and MA console linkage 143 if((!disabled_local_span) && (!document.getElementById('services_retry'))){ 144 var n_LocalDisabled = new dNode({id: "local_disabled", caption: get_lang('Offline'), onClick: "services_retry()", plusSign:false}); 145 tree_folders.add(n_LocalDisabled, 'local_root'); 146 147 var disabled_local_span = document.getElementById('llocal_disabledtree_folders'); 148 disabled_local_span.style.backgroundImage="url(../phpgwapi/templates/"+template+"/images/foldertree_services.png)"; 149 var service_retry = document.createElement("SPAN"); 150 service_retry.id = 'services_retry'; 151 service_retry.className = 'clean_trash'; 152 service_retry.style.cursor = 'pointer'; 153 service_retry.onclick = function () {services_retry();}; 154 service_retry.innerHTML = "["+get_lang("Retry")+"]"; 155 service_retry.title= get_lang("Reconect to MailArchiver services"); 156 service_retry.onmouseover = function() {service_retry.style.color="red";}; 157 service_retry.onmouseout= function() {service_retry.style.color="#666666";}; //#114FA4 158 disabled_local_span.parentNode.appendChild(service_retry); 159 160 var div_ma_host = document.createElement('div'); 161 div_ma_host.id = 'div_login_ma_host'; 162 div_ma_host.style.position = 'absolute'; 163 div_ma_host.style.padding = '0px'; 164 div_ma_host.style.margin = '0px'; 165 div_ma_host.style.top = '25px'; 166 div_ma_host.style.left = '0px'; 167 div_ma_host.style.width = '145px'; 168 div_ma_host.style.height = '80px'; 169 div_ma_host.style.border = '1px solid #CCCCCC'; 170 div_ma_host.style.backgroundColor = '#F0F0F0'; 171 div_ma_host.style.fontWeight = 'normal'; 172 disabled_local_span.appendChild(div_ma_host); 173 div_ma_host.innerHTML = '<p><b>'+get_lang('In trouble?')+'</b></p><p>→ ' + get_lang('Try to access') + '<br/><a href="' + mail_archive_protocol + "://" + mail_archive_host + ":" + mail_archive_port + '/admin" target="_blank" title="MailArchiver Admin">'+get_lang('MailArchiver admin console')+'.</p>'; 174 } 175 //Only creates the MA login linkage 176 else{ 177 var div_ma_host = document.createElement('div'); 178 div_ma_host.id = 'div_login_ma_host'; 179 div_ma_host.style.position = 'absolute'; 180 div_ma_host.style.padding = '0px'; 181 div_ma_host.style.margin = '0px'; 182 div_ma_host.style.top = '25px'; 183 div_ma_host.style.left = '0px'; 184 div_ma_host.style.width = '145px'; 185 div_ma_host.style.height = '80px'; 186 div_ma_host.style.border = '1px solid #CCCCCC'; 187 div_ma_host.style.backgroundColor = '#F0F0F0'; 188 div_ma_host.style.fontWeight = 'normal'; 189 disabled_local_span.appendChild(div_ma_host); 190 div_ma_host.innerHTML = '<p><b>'+get_lang('In trouble?')+'</b></p><p>→ ' + get_lang('Try to access') + '<br/><a href="' + mail_archive_protocol + "://" + mail_archive_host + ":" + mail_archive_port + '/admin" target="_blank" title="MailArchiver Admin">'+get_lang('MailArchiver admin console')+'.</p>'; 191 } 192 } 193 } 194 //Services enabled: list folders service must be invoqued 195 else{ 196 var services_retry_span = document.getElementById('services_retry'); 197 198 if(services_retry_span){ 199 //window.alert('Tem services_retry -> vai remover o disabled_local_span'); 200 var node_disabled_to_remove = document.getElementById('nlocal_disabledtree_folders'); 201 //document.getElementById('chlocal_roottree_folders').removeChild('nlocal_disabledtree_folders'); 202 //services_retry_span.parentNode.removeChild(services_retry_span); 203 node_disabled_to_remove.parentNode.removeChild(node_disabled_to_remove); 204 } 205 //else 206 // window.alert('Sem services retry'); 207 208 //tree_folders.getNodeById("local_disabled").alter({caption:get_lang('List_Folders')}); 209 210 //expresso_mail_archive.getFoldersList('FERNANDAO22', ""); 211 var drawinginfo = {treeObject: tree_folders, treeName: 'tree_folders'}; 212 expresso_mail_archive.drawdata = drawinginfo; 213 //expresso_mail_archive.getFoldersList(""); 214 215 //tree_folders.getNodeById("local_root")._refresh(); 216 217 if(disabled_local_span) 218 disabled_local_span.style.backgroundImage="url(../phpgwapi/templates/"+template+"/images/foldertree_folder.png)"; 219 } 220 } 221 110 222 return; 111 223 } … … 148 260 } 149 261 150 262 263 //MAILARCHIVER-02 264 //Create local folders main structure tree 265 if(preferences.use_local_messages=="1"){ 266 //Add the local_root node 267 var root_local = new dNode({id: "local_root", caption: get_lang('local folders'), plusSign: true}); 268 tree_folders.add(root_local, "root"); 269 270 //Services are disabled: because Mail Archiver is not running/installed or have just crashed. Link activation is created here 271 if(!expresso_mail_archive.enabled){ 272 var n_LocalDisabled = new dNode({id: "local_disabled", caption: get_lang('Offline'), onClick: "services_retry()", plusSign:false}); 273 tree_folders.add(n_LocalDisabled, 'local_root'); 274 275 } 276 277 //Services enabled: list folders service must be invoqued 278 else{ 279 var drawinginfo = {treeObject: tree_folders, treeName: 'tree_folders'}; 280 expresso_mail_archive.drawdata = drawinginfo; 281 //expresso_mail_archive.getFoldersList(""); 282 } 283 284 //Opens the local folders tree view 285 //tree_folders.getNodeById("local_root").open(); 286 287 } 151 288 152 289 var handlerChannel = function(data){ … … 183 320 * Pastas locais 184 321 */ 185 if (preferences.use_local_messages==1 || expresso_offline) {186 //verifica se gears esta installado ou o offline187 if( (!window.google || !google.gears) &&188 !expresso_local_messages.installGears() ){189 preferences.use_local_messages = 0;190 }191 else if( !expresso_local_messages.is_offline_installed() )192 preferences.use_local_messages = 0;193 else{194 if (expresso_offline)195 tree_folders = new dFTree({196 name: 'tree_folders'197 });198 var root_local = new dNode({199 id: "local_root",200 caption: get_lang('local folders')201 });202 tree_folders.add(root_local, "root"); //coloca root local203 var local_folders = expresso_local_messages.list_local_folders();204 for (var i in local_folders) { //Coloca as pastas locais.205 var node_root = "local_root";206 var new_caption = local_folders[i][0];207 if (local_folders[i][0].indexOf("/") != "-1") {208 final_pos = local_folders[i][0].lastIndexOf("/");209 node_root = "local_" + local_folders[i][0].substr(0, final_pos);210 new_caption = local_folders[i][0].substr(final_pos + 1);211 }212 if (local_folders[i][1] > 0)213 var nodeLocal = new dNode({214 id: "local_" + local_folders[i][0],215 caption: lang_folder(new_caption) + '<font style=color:red> (</font><span id="local_unseen" style=color:red>' + local_folders[i][1] + '</span><font style=color:red>)</font>',216 onClick: "change_folder('local_" + local_folders[i][0] + "','" + new_caption + "')",217 plusSign: local_folders[i][2]218 });219 else220 var nodeLocal = new dNode({221 id: "local_" + local_folders[i][0],222 caption: lang_folder(new_caption),223 onClick: "change_folder('local_" + local_folders[i][0] + "','" + new_caption + "')",224 plusSign: local_folders[i][2]225 });226 tree_folders.add(nodeLocal, node_root);227 }228 }229 }230 322 231 323 /*tree_folders.draw(Element('content_folders')); … … 276 368 277 369 370 //MAILARCHIVER-04 371 if ((disabled_local_span) && (!expresso_mail_archive.enabled)){ 372 disabled_local_span.style.backgroundImage="url(../phpgwapi/templates/"+template+"/images/foldertree_services.png)"; 373 //div to login at MA Admin console 374 var div_ma_host = document.createElement('div'); 375 div_ma_host.id = 'div_login_ma_host'; 376 div_ma_host.style.position = 'absolute'; 377 div_ma_host.style.padding = '0px'; 378 div_ma_host.style.margin = '0px'; 379 div_ma_host.style.top = '25px'; 380 div_ma_host.style.width = '145px'; 381 div_ma_host.style.height = '80px'; 382 div_ma_host.style.border = '1px solid #CCCCCC'; 383 div_ma_host.style.backgroundColor = '#F0F0F0'; 384 div_ma_host.style.fontWeight = 'normal'; 385 disabled_local_span.appendChild(div_ma_host); 386 div_ma_host.innerHTML = '<p><b>'+get_lang('In trouble?')+'</b></p><p>→ ' + get_lang('Try to access') + '<br/><a href="' + mail_archive_protocol + "://" + mail_archive_host + ":" + mail_archive_port + '/admin" target="_blank" title="MailArchiver Admin">'+get_lang('MailArchiver admin console')+'.</p>'; 387 } 388 389 278 390 draw_paging(Element('tot_m').innerHTML); 279 391 if(document.getElementById(mount_url_folder(["nINBOX",special_folders["Trash"]])+"tree_folders")) … … 305 417 } 306 418 307 if(!expresso_offline) 419 //MAILARCHIVER-05 420 if(document.getElementById("nlocal_disabledtree_folders") && (!expresso_mail_archive.enabled) && (!document.getElementById('services_retry'))) 421 { 422 var service_retry = document.createElement("SPAN"); 423 service_retry.id = 'services_retry'; 424 service_retry.className = 'clean_trash'; 425 service_retry.style.cursor = 'pointer'; 426 service_retry.onclick = function () {services_retry();}; 427 service_retry.innerHTML = "["+get_lang("Retry")+"]"; 428 service_retry.title="Reconectar ao Mail Archiver"; 429 service_retry.onmouseover = function() {service_retry.style.color="red";}; 430 service_retry.onmouseout= function() {service_retry.style.color="#666666";}; //#114FA4 431 document.getElementById("nlocal_disabledtree_folders").appendChild(service_retry); 432 } 433 434 //MAILARCHIVER-00 435 //if(!expresso_offline) 308 436 var display_unseen_in_mailbox = tree_folders.getNodeById( 'root' ); 309 else310 var display_unseen_in_mailbox = tree_folders.getNodeById( 'local_root' );437 //else 438 //var display_unseen_in_mailbox = tree_folders.getNodeById( 'local_root' ); 311 439 display_unseen_in_mailbox.alter({caption:get_lang("My Folders")}); 312 440 display_unseen_in_mailbox._refresh(); … … 391 519 392 520 function draw_tree_local_folders() { 393 /** 394 * Pastas locais 395 */ 396 if(preferences.use_local_messages==1 || expresso_offline) { 397 var local_folders = expresso_local_messages.list_local_folders(); 398 var has_changes = false; 399 for (var i in local_folders) { //Coloca as pastas locais. 400 401 var new_caption = local_folders[i][0]; 402 if(local_folders[i][0].indexOf("/")!="-1") { 403 final_pos = local_folders[i][0].lastIndexOf("/"); 404 new_caption = local_folders[i][0].substr(final_pos+1); 405 } 406 407 var folder_unseen = Element('dftree_local_'+local_folders[i][0]+'_unseen'); 408 409 if ((folder_unseen) && (local_folders[i][1] > 0)) 410 { 411 folder_unseen.innerHTML = local_folders[i][1]; 412 has_changes = true; 413 } 414 else if (local_folders[i][1] > 0) 415 { 416 tree_folders.getNodeById("local_"+local_folders[i][0]).alter({caption:lang_folder(new_caption) + '<font style=color:red> (</font><span id="dftree_local_'+local_folders[i][0]+'_unseen" style=color:red>'+local_folders[i][1]+'</span><font style=color:red>)</font>'}); 417 tree_folders.getNodeById("local_"+local_folders[i][0])._refresh(); 418 has_changes = true; 419 } 420 else if (local_folders[i][1] <= 0) 421 { 422 tree_folders.getNodeById("local_"+local_folders[i][0]).alter({caption:lang_folder(new_caption)}); 423 tree_folders.getNodeById("local_"+local_folders[i][0])._refresh(); 424 has_changes = true; 425 } 426 427 if("local_"+local_folders[i][0] == get_current_folder()){ 428 var old_new_m = isNaN(parseInt(Element('new_m').innerHTML)) ? parseInt(Element('new_m').firstChild.innerHTML) : parseInt(Element('new_m').innerHTML); 429 if(!isNaN(old_new_m) && old_new_m < local_folders[i][1]){ 430 Element('tot_m').innerHTML = parseInt(Element('tot_m').innerHTML) + (parseInt(local_folders[i][1])-old_new_m); 431 } 432 Element('new_m').innerHTML = local_folders[i][1] ? '<font color="RED">'+local_folders[i][1]+'</font>' : 0; 433 draw_paging(Element('tot_m').innerHTML); 434 has_changes = true; 435 } 436 } 437 if(has_changes) 438 tree_folders.getNodeById("local_root").open(); 439 } 440 } 521 /** 522 * Pastas locais 523 */ 524 //MAILARCHIVER-04 525 if ( preferences.use_local_messages=="1" ) { 526 var local_folders_list = expresso_mail_archive.getFoldersList(""); 527 } 528 } 529 530 // function draw_tree_local_folders() { 531 // /** 532 // * Pastas locais 533 // */ 534 // if(preferences.use_local_messages==1 || expresso_offline) { 535 // var local_folders = expresso_local_messages.list_local_folders(); 536 // var has_changes = false; 537 // for (var i in local_folders) { //Coloca as pastas locais. 538 539 // var new_caption = local_folders[i][0]; 540 // if(local_folders[i][0].indexOf("/")!="-1") { 541 // final_pos = local_folders[i][0].lastIndexOf("/"); 542 // new_caption = local_folders[i][0].substr(final_pos+1); 543 // } 544 545 // var folder_unseen = Element('dftree_local_'+local_folders[i][0]+'_unseen'); 546 547 // if ((folder_unseen) && (local_folders[i][1] > 0)) 548 // { 549 // folder_unseen.innerHTML = local_folders[i][1]; 550 // has_changes = true; 551 // } 552 // else if (local_folders[i][1] > 0) 553 // { 554 // tree_folders.getNodeById("local_"+local_folders[i][0]).alter({caption:lang_folder(new_caption) + '<font style=color:red> (</font><span id="dftree_local_'+local_folders[i][0]+'_unseen" style=color:red>'+local_folders[i][1]+'</span><font style=color:red>)</font>'}); 555 // tree_folders.getNodeById("local_"+local_folders[i][0])._refresh(); 556 // has_changes = true; 557 // } 558 // else if (local_folders[i][1] <= 0) 559 // { 560 // tree_folders.getNodeById("local_"+local_folders[i][0]).alter({caption:lang_folder(new_caption)}); 561 // tree_folders.getNodeById("local_"+local_folders[i][0])._refresh(); 562 // has_changes = true; 563 // } 564 565 // if("local_"+local_folders[i][0] == get_current_folder()){ 566 // var old_new_m = isNaN(parseInt(Element('new_m').innerHTML)) ? parseInt(Element('new_m').firstChild.innerHTML) : parseInt(Element('new_m').innerHTML); 567 // if(!isNaN(old_new_m) && old_new_m < local_folders[i][1]){ 568 // Element('tot_m').innerHTML = parseInt(Element('tot_m').innerHTML) + (parseInt(local_folders[i][1])-old_new_m); 569 // } 570 // Element('new_m').innerHTML = local_folders[i][1] ? '<font color="RED">'+local_folders[i][1]+'</font>' : 0; 571 // draw_paging(Element('tot_m').innerHTML); 572 // has_changes = true; 573 // } 574 // } 575 // if(has_changes) 576 // tree_folders.getNodeById("local_root").open(); 577 // } 578 // } 441 579 442 580 … … 539 677 return true; 540 678 } 541 $.ajax({ 542 url: "controller.php?" + $.param( {action: "$this.imap_functions.getMessagesIds", 543 folder: folder, 544 sort_box_type: "SORTARRIVAL", 545 search_box_type: search_box_type, 546 sort_box_reverse: "1" 547 }), 548 success: function(data){ 549 data = connector.unserialize(data); 550 if(data){ 551 var _data = {}; 552 $.each(data,function(index,value){ 553 if (value){ 554 _data[index] = value; 555 } 556 }); 557 populateSelectedMsgs(_data); 558 559 } 560 }, 561 beforeSend: function( jqXHR, settings ){ 562 connector.showProgressBar(); 563 }, 564 complete: function( jqXHR, settings ){ 565 connector.hideProgressBar(); 566 } 567 }); 679 //MAILARCHIVE 680 //se for pasta local 681 if (/^local_messages/.test(current_folder)) { 682 $(".folders-loading").removeClass("folders-loading"); //remove o icone de loading ao clicar nas pastas locais 683 selectAllFolderMsgs(false); 684 //Método chamado para retornar todos os ids de mensagens por folder 685 expresso_mail_archive.listAllMessagesByFolder(folder.replace("local_messages_","")); 686 populateSelectedMsgs(expresso_mail_archive.allmessagesbyfolder); 687 } 688 else { //se não, processamento normal da pasta 689 $.ajax({ 690 url: "controller.php?" + $.param( {action: "$this.imap_functions.getMessagesIds", 691 folder: folder, 692 msg_range_begin: "0", 693 msg_range_end: "0", 694 sort_box_type: "SORTARRIVAL", 695 search_box_type: search_box_type, 696 sort_box_reverse: "1" 697 }), 698 success: function(data){ 699 data = connector.unserialize(data); 700 if(data){ 701 var _data = {}; 702 $.each(data,function(index,value){ 703 if (data[index] && data[index].msg_number){ 704 _data[data[index].msg_number] = data[index].msg_number; 705 } 706 }); 707 populateSelectedMsgs(_data); 708 _data = {}; 709 710 } 711 }, 712 beforeSend: function( jqXHR, settings ){ 713 connector.showProgressBar(); 714 }, 715 complete: function( jqXHR, settings ){ 716 connector.hideProgressBar(); 717 } 718 }); 719 } 568 720 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); 569 721 } … … 1573 1725 if ( !currentTab ) 1574 1726 alternate_border(numBox); 1575 draw_footer_box(headers_msgs. num_msgs);1727 draw_footer_box(headers_msgs.length); 1576 1728 Element('main_table').style.display = ''; 1577 1729 if(is_ie6) // Stupid Fixing on IE6. … … 1667 1819 1668 1820 tr_element.msg_sample = ""; 1821 tr_element.tip = ""; 1669 1822 //if(headers_msgs.msg_sample && headers_msgs.msg_sample.preview_msg_subject != "") 1670 1823 if(headers_msgs.msg_sample && preferences.preview_msg_subject == "1" && headers_msgs.msg_sample.body !== "") … … 1674 1827 else 1675 1828 tr_element.msg_sample = html_entities(Base64.decode(headers_msgs.msg_sample.body).substr(0,120) + "..."); //trecho do body que sera exibido com o assunto; 1676 } 1677 1678 tr_element.tip = ""; 1679 if(headers_msgs.msg_sample && preferences.preview_msg_tip == "1" && headers_msgs.msg_sample.body !== "") 1680 { 1681 tr_element.tip = Base64.decode(headers_msgs.msg_sample.body).substr(3,300) + "..."; //trecho do body que sera exibido no tool-tip; 1682 } 1683 1829 1830 //if(preferences.use_local_messages==1 && !expresso_offline) { //MailArchive 1831 if(proxy_mensagens.is_local_folder(current_folder)) { 1832 // preferencia da pre-visualizacao 1833 if (cssForResizing) {//Colunas redimensionaveis - nao trunca 1834 tr_element.msg_sample = headers_msgs.msg_sample.body.substr(0,180) + "..."; //trecho do body que sera exibido com o assunto; //blabla 1835 } else { 1836 tr_element.msg_sample = headers_msgs.msg_sample.body.substr(0,120) + "..."; //trecho do body que sera exibido com o assunto; 1837 } 1838 1839 // preferencia dos tooltips 1840 if(headers_msgs.msg_sample && preferences.preview_msg_tip == "1" && headers_msgs.msg_sample.body !== "") { 1841 tr_element.tip = headers_msgs.msg_sample.body.substr(3,300) + "..."; //trecho do body que sera exibido no tool-tip; 1842 } 1843 1844 } 1845 1846 /*}*/ else { //IMAP 1847 // preferencia da pre-visualizacao 1848 if (cssForResizing) { //Colunas redimensionaveis - nao trunca 1849 /*problema no decode, se ele for utilizado, nao lista as mensagens -> CORRIGIDO em mail_archiver.js*/ 1850 //if (headers_msgs.msg_sample.body.length > 0) 1851 tr_element.msg_sample = Base64.decode(headers_msgs.msg_sample.body).substr(0,180) + "..."; //trecho do body que sera exibido com o assunto; //blabla 1852 } else { 1853 //if (headers_msgs.msg_sample.body.length > 0) 1854 tr_element.msg_sample = Base64.decode(headers_msgs.msg_sample.body).substr(0,120) + "..."; //trecho do body que sera exibido com o assunto; 1855 } 1856 1857 // preferencia dos tooltips 1858 if(headers_msgs.msg_sample && preferences.preview_msg_tip == "1" && headers_msgs.msg_sample.body !== "") { 1859 tr_element.tip = Base64.decode(headers_msgs.msg_sample.body).substr(3,300) + "..."; //trecho do body que sera exibido no tool-tip; 1860 } 1861 } 1862 } 1863 1864 1684 1865 if ((headers_msgs.Unseen == 'U') || (headers_msgs.Recent == 'N')){ 1685 if ((headers_msgs.Flagged == 'F') || headers_msgs.Importance.toLowerCase().indexOf("high")!=-1)1866 if ((headers_msgs.Flagged == 'F') || ( headers_msgs.Importance !== undefined && headers_msgs.Importance.toLowerCase().indexOf("high")!=-1 ) ) 1686 1867 add_className(tr_element, 'flagged_msg'); 1687 1868 add_className(tr_element, 'tr_msg_unread'); … … 1717 1898 1718 1899 td_element2 = createTDElement(0,1,"td_msg"); 1719 if (headers_msgs.attachment == 1 )1900 if (headers_msgs.attachment == 1 || headers_msgs.attachment.number_attachments> 0) 1720 1901 td_element2.innerHTML = "<img src ='templates/"+template+"/images/clip.gif' >"; 1721 1902 … … 1887 2068 else 1888 2069 { 1889 td_element4.innerHTML += headers_msgs.subject+ "<span style=\"color:#b3b3b3;\"> " + tr_element.msg_sample + "</span>";//modificacao feita para exibir o trecho do body ao lado do assunto da mensagem;2070 td_element4.innerHTML += ($.trim(headers_msgs.subject) == "" ? "("+get_lang("No Subject")+")" : headers_msgs.subject) + "<span style=\"color:#b3b3b3;\"> " + tr_element.msg_sample + "</span>";//modificacao feita para exibir o trecho do body ao lado do assunto da mensagem; 1890 2071 } 1891 2072 … … 1906 2087 } 1907 2088 1908 td_element26 = createTDElement(0,6,"td_msg","center","td_message_followup_"+headers_msgs.msg_number); 1909 $(td_element26).addClass("td-followup-flag"); 1910 td_element26.innerHTML = '<div class="flag-edited" style="width:8px;height:6px;"><img src="../prototype/modules/mail/img/flagEditor.png"></div>'; 1911 2089 td_element26 = createTDElement(0,6,"td_msg","center","td_message_followup_"+headers_msgs.msg_number); 2090 $(td_element26).addClass("td-followup-flag"); 2091 2092 if(get_current_folder().split("_")[0] != "local"){ 2093 td_element26.innerHTML = '<div class="flag-edited" style="width:8px;height:6px;"><img src="../prototype/modules/mail/img/flagEditor.png"></div>'; 2094 } else { 2095 td_element26.innerHTML = ""; 2096 } 2097 1912 2098 if (headers_msgs.followupflagged) { 1913 2099 if(headers_msgs.followupflagged.followupflag.id < 7){ … … 2125 2311 search_box_type = search; 2126 2312 if (typeof(clean_selected) == "undefined"){ 2127 $.ajax({ 2313 2314 $.ajax({ 2128 2315 url: "controller.php?" + $.param( {action: "$this.imap_functions.getMessagesIds", 2129 2316 folder: get_current_folder(), … … 2151 2338 } 2152 2339 }); 2340 2153 2341 } 2154 2342 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); … … 2430 2618 var _maxChar = menuHidden ? 40 : 15; 2431 2619 2432 if (info_msg.from.name) 2433 { 2434 var spanName = document.createElement("SPAN"); 2435 spanName.innerHTML = info_msg.from.name; 2436 _name = spanName.innerHTML.length > _maxChar ? spanName.innerHTML.substring(0,_maxChar) + "..." : spanName.innerHTML; 2437 } 2438 else 2439 _name = info_msg.from.email.length > _maxChar ? info_msg.from.email.substring(0,_maxChar) + "..." : info_msg.from.email; 2620 if(info_msg.from){ 2621 if (info_msg.from.name) 2622 { 2623 var spanName = document.createElement("SPAN"); 2624 spanName.innerHTML = info_msg.from.name; 2625 _name = spanName.innerHTML.length > _maxChar ? spanName.innerHTML.substring(0,_maxChar) + "..." : spanName.innerHTML; 2626 } 2627 else 2628 _name = info_msg.from.email.length > _maxChar ? info_msg.from.email.substring(0,_maxChar) + "..." : info_msg.from.email; 2629 } 2440 2630 2441 2631 td.innerHTML = _name.bold() + ', ' + info_msg.smalldate; … … 2516 2706 var option_mark_as_unseen = document.createElement("SPAN"); 2517 2707 option_mark_as_unseen.className = "reply_options"; 2518 option_mark_as_unseen.onclick = function () {changeLinkState(this,'seen');2519 proxy_mensagens.proxy_set_message_flag(folder_id,'unseen' );2708 option_mark_as_unseen.onclick = function () {changeLinkState(this,'seen'); 2709 proxy_mensagens.proxy_set_message_flag(folder_id,'unseen',null,ID.split("_r_")[0]); 2520 2710 write_msg(get_lang('Message marked as ')+get_lang("Unseen")); 2521 2711 }; … … 2532 2722 option_mark_important.onclick = function() { 2533 2723 var _this = this; 2534 proxy_mensagens.proxy_set_message_flag(folder_id,'unflagged', function(success){ 2535 if (success) { 2536 changeLinkState(_this, 'important'); 2537 write_msg(get_lang('Message marked as ') + get_lang("Normal")); 2538 } 2539 } ); 2540 2724 changeLinkState(_this, 'important'); 2725 proxy_mensagens.proxy_set_message_flag(folder_id,'unflagged',null,ID.split("_r_")[0]); 2726 write_msg(get_lang('Message marked as ')+get_lang("Normal")); 2541 2727 }; 2542 2728 option_mark_important.innerHTML = get_lang("Normal"); 2543 2729 } 2544 2730 else{ 2545 option_mark_important.onclick = function() {changeLinkState(this,'normal' );2546 proxy_mensagens.proxy_set_message_flag(folder_id,'flagged' );2731 option_mark_important.onclick = function() {changeLinkState(this,'normal',null,ID.substr(0, ID.length-2)); 2732 proxy_mensagens.proxy_set_message_flag(folder_id,'flagged',null,ID.split("_r_")[0]); 2547 2733 write_msg(get_lang('Message marked as ')+get_lang("Important")); 2548 2734 }; … … 2994 3180 var tr1 = document.createElement("TR"); 2995 3181 tr1.className = "tr_message_header"; 2996 var td1 = document.createElement("TD"); 2997 td1.innerHTML = get_lang("From: "); 2998 td1.appendChild(deny_email(info_msg.from.email)); 2999 td1.width = "7%"; 3182 if(info_msg.from){ 3183 var td1 = document.createElement("TD"); 3184 td1.innerHTML = get_lang("From: "); 3185 td1.appendChild(deny_email(info_msg.from.email)); 3186 td1.width = "7%"; 3187 } 3000 3188 3001 3189 if (info_msg.sender){ … … 3022 3210 var from = document.createElement("TD"); 3023 3211 from.id = "from_"+ID; 3024 from.innerHTML = info_msg.from.full; 3212 if(info_msg.from){ 3213 from.innerHTML = info_msg.from.full; 3214 } 3025 3215 if (info_msg.Draft != "X"){ 3026 3216 from.innerHTML += draw_plugin_cc(ID, info_msg.from); … … 3031 3221 from_values.id = "from_values_"+ID; 3032 3222 from_values.type = "HIDDEN"; 3033 from_values.value = info_msg.from.full; //Veio do IMAP, sem images nem links. 3223 if(info_msg.from){ 3224 from_values.value = info_msg.from.full; //Veio do IMAP, sem images nem links. 3225 } 3034 3226 3035 3227 var local_message = document.createElement("INPUT"); … … 3039 3231 local_message.value = (info_msg.local_message)?"1":"0"; 3040 3232 3041 tr1.appendChild(td1); 3233 if(info_msg.from){ 3234 tr1.appendChild(td1); 3235 } 3042 3236 tr1.appendChild(from); 3043 3237 tr1.appendChild(from_values); … … 5126 5320 5127 5321 function build_quota(data){ 5322 //MAILARCHIVE 5323 // se for a pasta de mensagens locais 5324 if(proxy_mensagens.is_local_folder(current_folder)) { 5325 return; 5326 } 5327 5128 5328 id = "content_quota"; 5129 5329 q_limit = data['quota_limit']; … … 5466 5666 ((expresso_offline)?" ":'<span class="message_options_export"><span ' + change_font_color + ' title="'+get_lang("Export")+'" class="message_options" onclick="proxy_mensagens.export_all_messages()">'+get_lang("Export")+'</span></span>') + 5467 5667 ((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>'); 5468 if(preferences.use_local_messages==1 && !expresso_offline) 5469 if(proxy_mensagens.is_local_folder(current_folder)) 5470 span_options.innerHTML += ' <span id="localOption" ' + change_font_color + ' title="'+get_lang("Unarchive")+'" class="message_options" onclick="expresso_local_messages.unarchive_msgs(\''+folder+'\',null)">'+get_lang("Unarchive")+'</span>'; 5471 else 5472 span_options.innerHTML += ' <span id="localOption" ' + change_font_color + ' title="'+get_lang("Archive")+'" class="message_options" onclick="archive_msgs(\''+folder+'\',null)">'+get_lang("Archive")+'</span>'; 5668 5669 //Link arquivar e desarquivar com ação 5670 //MAILARCHIVER 5671 if(preferences.use_local_messages==1){ 5672 if(expresso_mail_archive.enabled){ 5673 if(proxy_mensagens.is_local_folder(current_folder))//Unarchive link 5674 span_options.innerHTML += ' <span title="'+get_lang("Unarchive")+'" class="message_options" onclick="expresso_mail_archive.unarchieve(\''+folder+'\', null, null);">'+get_lang("Unarchive")+'</span>'; 5675 else//Archive link 5676 span_options.innerHTML += ' <span title="'+get_lang("Archive")+'" class="message_options" onclick="archive_msgs(\''+folder+'\',null,null)">'+get_lang("Archive")+'</span>'; 5677 } 5678 } 5679 5473 5680 if (use_spam_filter) { 5474 5681 if ( current_folder == 'INBOX'+cyrus_delimiter+'Spam' ) { … … 5487 5694 span_R.appendChild(span_D); 5488 5695 } 5696 5697 var answer = '<span ' + change_font_color + ' id="span_flag_ANSWERED" class="'+(search_box_type == 'ANSWERED' ? 'message_options_over' : 'message_options')+'" title="'+get_lang("title_answered")+'" onclick="if(\'ANSWERED\' == \''+search_box_type+'\') return false;sort_box(\'ANSWERED\',\''+sort_box_type+'\')">'+get_lang("l_answered")+'</span>, '; 5698 5489 5699 span_D.innerHTML = 5490 5700 get_lang("List")+': '+ … … 5492 5702 '<span ' + change_font_color + ' id="span_flag_UNSEEN" class="'+(search_box_type == 'UNSEEN' ? 'message_options_over' : 'message_options')+'" title="'+get_lang("l_unseen")+'" onclick="if(\'UNSEEN\' == \''+search_box_type+'\') return false;sort_box(\'UNSEEN\',\''+sort_box_type+'\')">'+get_lang("l_unseen")+'</span>, '+ 5493 5703 '<span ' + change_font_color + ' id="span_flag_SEEN" class="'+(search_box_type == 'SEEN' ? 'message_options_over' : 'message_options')+'" title="'+get_lang("l_seen")+'" onclick="if(\'SEEN\' == \''+search_box_type+'\') return false;sort_box(\'SEEN\',\''+sort_box_type+'\')">'+get_lang("l_seen")+'</span>, '+ 5494 '<span ' + change_font_color + ' id="span_flag_ANSWERED" class="'+(search_box_type == 'ANSWERED' ? 'message_options_over' : 'message_options')+'" title="'+get_lang("title_answered")+'" onclick="if(\'ANSWERED\' == \''+search_box_type+'\') return false;sort_box(\'ANSWERED\',\''+sort_box_type+'\')">'+get_lang("l_answered")+'</span>, '+5704 answer+ 5495 5705 '<span ' + change_font_color + ' id="span_flag_FLAGGED" class="'+(search_box_type == 'FLAGGED' ? 'message_options_over' : 'message_options')+'" title="'+get_lang("l_important")+'" onclick="if(\'FLAGGED\' == \''+search_box_type+'\') return false;sort_box(\'FLAGGED\',\''+sort_box_type+'\')">'+get_lang("l_important")+'</span> '; 5496 5706 draw_paging(num_msgs); -
trunk/expressoMail1_2/js/local_messages.js
r5264 r7414 157 157 158 158 local_messages.prototype.init_local_messages = function(){ //starts only database operations 159 159 return 'retorno local_messages.prototype.init_local_messages'; 160 } 161 162 local_messages.prototype.init_local_messages_old = function(){ 160 163 if(this.dbGears==null || this.localServer==null || this.store == null) 161 164 this.create_objects(); … … 835 838 836 839 local_messages.prototype.get_local_range_msgs = function(folder,msg_range_begin,emails_per_page,sort,sort_reverse,search,preview_msg_subject,preview_msg_tip) { 837 840 this.init_local_messages(); 841 } 842 local_messages.prototype.get_local_range_msgs_old = function(folder,msg_range_begin,emails_per_page,sort,sort_reverse,search,preview_msg_subject,preview_msg_tip) { 838 843 this.init_local_messages(); 839 844 var retorno = new Array(); -
trunk/expressoMail1_2/js/main.js
r7392 r7414 1 1 // Tempo do auto refresh (em milisegundos) 2 2 var time_refresh = 300000; 3 4 //MAILARCHIVER-01 5 // Intervalo de tempo de verificacao de comunicacao com o MailArchiver (milisegundos) 6 var check_services_interval = 2000; 7 // Numero de tentativas de reconexao 8 var check_services_tryouts = 1; 9 // Limite de tentativas de reconexao 10 var check_services_tryouts_limit = 5; 11 3 12 4 13 // tempo do auto save (em milisegundos) … … 6 15 var autosave_time = 40000; 7 16 var results_search_messages = ""; 8 var cabecalho = '<h4>ExpressoLivre - ExpressoMail</h4>'; 9 17 var cabecalho = '<h4>ExpressoLivre - ExpressoMail</h4>'; 10 18 var auxNotificationCriteriaVetor = []; 11 19 var auxNotification; … … 107 115 Element('tableDivAppbox').width = '100%'; 108 116 117 //MailArchiver save offset to gmt user preference data to list correctly date/time from messages list 118 var save_gmtoffset = function(data){ 119 gmtoffset = data; 120 } 121 109 122 var save_preferences = function(data){ 110 123 … … 124 137 current_folder="INBOX"; 125 138 126 if( (window.google && google.gears) && !google.gears.factory.getPermission())139 /*if( (window.google && google.gears) && !google.gears.factory.getPermission()) 127 140 preferences.use_local_messages=0; 128 141 … … 141 154 setTimeout('auto_archiving()', 30000); 142 155 143 } 156 }*/ 144 157 $.ajax({ 145 158 url: "controller.php?" + $.param( {action: "$this.imap_functions.getMessagesIds", … … 168 181 } 169 182 }); 183 /*Carrega a lista de mensagens*/ 184 185 //MAILARCHIVER-02 186 //Try to get ArchiveServices object directly 187 if(ArchiveServices) 188 expresso_mail_archive.Startup(); 189 //ArchiveServices not runnnig: catch the user preferences to set up message at header 190 else{ 191 if(preferences.use_local_messages=="1") 192 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!')); 193 } 194 195 var handler_populateSelectedMsgs = function(data){ 196 populateSelectedMsgs(data); 197 } 198 cExecute ("$this.imap_functions.get_msgs&folder=INBOX&sort_box_type=SORTARRIVAL&search_box_type=ALL&sort_box_reverse=1&msg_range_begin=1", handler_populateSelectedMsgs); 170 199 //Substituido por padrão Jquery 171 200 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); … … 182 211 //Troca da forma de construção de menu para o plugin jquery.contextMenu 183 212 //ConstructMenuTools(); 184 185 if ( (preferences.use_local_messages==1) && (expresso_local_messages.is_offline_installed()) ) //Precisa ser feito após a renderização da caixa de emails186 check_mail_in_queue();213 //MAILARCHIVER-00 214 //if ( (preferences.use_local_messages==1) && (expresso_local_messages.is_offline_installed()) ) //Precisa ser feito após a renderização da caixa de emails 215 //check_mail_in_queue(); 187 216 188 217 // Insere a applet de criptografia … … 619 648 620 649 } 650 621 651 //Change msg class to read. 622 652 if (!msg_is_read(ID)) 623 653 { 624 set_msg_as_read(ID, true); 654 //MAILARCHIVER-01 TAG MESSAGE AS SEEN 655 if (proxy_mensagens.is_local_folder(get_current_folder())){ 656 expresso_mail_archive.drawdata = null //no draw action 657 var tl = expresso_mail_archive.pattern.tagConfig('unseen', ID, 1); 658 expresso_mail_archive.taglist = tl; 659 expresso_mail_archive.progressbar = window.setTimeout("expresso_mail_archive.tagMessage()",1); 660 } 661 set_msg_as_read(ID, true); 625 662 if (msg_info.cacheHit || (!proxy_mensagens.is_local_folder(get_current_folder()) && msg_info.original_ID)) 626 663 { 627 664 set_message_flag(ID, "seen"); // avoid caducous (lazy) data 628 665 } 629 666 } … … 731 768 { 732 769 selectedPagingMsgs[data[i].msg_number] = false; 770 totalFolderMsgs++; 733 771 updateSelectedMsgs(false,data[i].msg_number); 734 772 var new_msg = this.make_tr_message(data[i], current_folder, data.offsetToGMT); … … 866 904 } 867 905 connector.purgeCache(); 868 update_menu();906 cExecute("$this.imap_functions.get_folders_list&onload=true", update_menu); 869 907 resizeMailList(); 870 908 … … 950 988 951 989 if (!archive && (parseInt(preferences.save_deleted_msg)) && (folder != userTrashFolder)){ 952 if(currentTab == 0)953 msgs_number = get_selected_messages();954 990 move_msgs2(folder, ""+msgs_number, border_ID, userTrashFolder,special_folders['Trash'],show_success_msg ); 955 return;956 }991 return; 992 } 957 993 958 994 var handler_delete_msgs = function(data){ … … 1038 1074 } 1039 1075 1040 if(currentTab == 0 )1041 msgs_number = get_selected_messages();1042 1043 1076 if (msgs_number.length > 0 || parseInt(msgs_number) > 0) 1044 1077 cExecute ("$this.imap_functions.delete_msgs&folder="+folder+"&msgs_number="+msgs_number+"&border_ID="+border_ID+"&sort_box_type="+sort_box_type+"&search_box_type="+search_box_type+"&sort_box_reverse="+sort_box_reverse, handler_delete_msgs); … … 1056 1089 var remove_currente_folder = ""; 1057 1090 var id_border = currentTab.replace(/[a-zA-Z_]+/, ""); 1058 1091 1092 //Validação para não poder manipular mensagens locais na busca 1093 if (currentTab.indexOf('search_local') != -1 || proxy_mensagens.is_local_folder(new_folder)) 1094 { 1095 alert(get_lang("You cant manipulate local messages on search")); 1096 return; 1097 } 1098 1059 1099 var delete_msg = false; 1060 1100 … … 1065 1105 1066 1106 if( preferences.use_local_messages == 1 && expresso_local_messages.isArchiving( selected_messages, folder ) ){ 1067 alert( "Impossivel mover mensagens que estãoainda estão sendo arquivadas." );1107 alert( "Impossivel mover mensagens que ainda estão sendo arquivadas." ); 1068 1108 return; 1069 1109 } … … 1233 1273 return false; 1234 1274 }else{ 1235 data = data.split("/").reverse(); //Recupera o nome da pasta do array 1236 write_msg(get_lang('Error moving message.')+" "+get_lang('Permission denied to folder "%1".', data[0])); 1275 write_msg(get_lang('Error moving message.')+" "+get_lang('Permission denied to folder "%1".', new_folder_name)); 1276 /*Verifica se a pasta destino é a "Trash" e se a pasta origem e destino são do mesma estrutura compartilhada*/ 1277 if(new_folder_name == "Trash" && folder.split("/")[1] == new_folder.split("/")[1]){ 1278 alert(get_lang("You can not remove the message with the preference 'Send to Trash' enabled. There is no permission to move messages to the trash folder.")); 1279 } 1237 1280 return false; 1238 1281 } … … 1360 1403 draw_paging(n_total_msg); 1361 1404 Element('tot_m').innerHTML = n_total_msg; 1405 totalFolderMsgs -= data.msgs_number.length; 1362 1406 } 1363 1407 refresh(); … … 1375 1419 } 1376 1420 } catch (e) {} 1377 1378 if (currentTab == 0)1421 //Validação para recuperar o id caso não seja aba de listagem 1422 if (currentTab == 0 && msgs_number == "selected") 1379 1423 msgs_number = get_selected_messages(); 1424 else if (currentTab != 0 && msgs_number == "selected") 1425 msgs_number = currentTab.substr(0,currentTab.indexOf('_r')); 1380 1426 1381 1427 if(openTab.type[currentTab] == 1){ … … 1384 1430 1385 1431 // se a aba estiver aberta e selecionada, apenas a msg da aba é movida 1386 if(currentTab.toString().indexOf("_r") != -1 )1432 if(currentTab.toString().indexOf("_r") != -1 && currentTab == border_ID) 1387 1433 { 1388 1434 //se a aba for aberta atraves de uma pesquisa … … 1393 1439 } 1394 1440 refresh(); 1395 if (parseInt(msgs_number) > 0 || msgs_number.length > 0){ 1396 // remove a flag $FilteredMessage da mensagem, depois move 1397 var handler_removeFlag = function(){ 1398 $.ajax({ 1399 url: 'controller.php?' + $.param( {action: '$this.imap_functions.move_messages', 1400 folder: folder, 1401 msgs_number: ""+msgs_number, 1402 border_ID: border_ID, 1403 sort_box_type: sort_box_type, 1404 search_box_type: search_box_type, 1405 sort_box_reverse: sort_box_reverse, 1406 reuse_border: border_ID, 1407 new_folder: new_folder, 1408 new_folder_name: new_folder_name, 1409 get_previous_msg: ( !not_opem_previus ? preferences.delete_and_show_previous_message : false ), 1410 decoded: true } ), 1411 1412 success: function( data ){ 1413 data = connector.unserialize( data ); 1414 $.each(msgs_number.split(","), function(index, value){ 1415 delete selectedPagingMsgs[value]; 1416 msgFolder = Base64.encode(get_current_folder()); 1417 tabToRemove = value + "_r_" + msgFolder.replace(/=/g,""); 1418 if ($("#"+tabToRemove)){ 1419 delete_border(tabToRemove,'false'); 1420 } 1441 1442 if (proxy_mensagens.is_local_folder(folder)){ 1443 1444 expresso_mail_archive.update_counters = true; 1445 //Folder de onde sai a mensagem é local (armazenamento local) 1446 1447 if(msgs_number=='selected'){ 1448 msgs_number = get_selected_messages(); 1449 } 1450 1451 if (new_folder == 'local_root'){ 1452 alert(get_lang("Select a folder!")); 1453 } 1454 1455 if (parseInt(msgs_number) > 0 || msgs_number.length > 0) { 1456 if (proxy_mensagens.is_local_folder(new_folder)){ 1457 //esta tirando de um folder local para outro folder local 1458 //expresso_mail_archive.moveMessages(new_folder.substr(6), msgs_number); 1459 expresso_mail_archive.moveMessages(new_folder.replace('local_messages_', ''), msgs_number); 1460 } 1461 else{ 1462 //esta tirando de um folder local para um folder IMAP (desarquivamento) 1463 if(!new_folder){ 1464 new_folder = 'INBOX'; 1465 } 1466 if(currentTab.toString().indexOf("_r") != -1){ 1467 msgs_number = currentTab.toString().substr(0,currentTab.toString().indexOf("_r")); 1468 } 1469 expresso_mail_archive.unarchieve(folder, new_folder, msgs_number); 1470 } 1471 } 1472 else{ 1473 write_msg(get_lang('No selected message.')); 1474 } 1475 } 1476 else{ 1477 if (proxy_mensagens.is_local_folder(new_folder)){ 1478 //esta tirando de um folder não local para um folder local (arquivamento) 1479 if(msgs_number=='selected'){ 1480 archive_msgs(folder, new_folder); 1481 } 1482 else{ 1483 archive_msgs(folder, new_folder, msgs_number); 1484 } 1485 } 1486 else{ 1487 //esta tirando de um folder não local para outro folder não local (move) 1488 //move_msgs(folder, msgs_number, border_ID, new_folder, new_folder_name); 1489 if (parseInt(msgs_number) > 0 || msgs_number.length > 0){ 1490 // remove a flag $FilteredMessage da mensagem, depois move 1491 var handler_removeFlag = function(){ 1492 $.ajax({ 1493 url: 'controller.php?' + $.param( {action: '$this.imap_functions.move_messages', 1494 folder: folder, 1495 msgs_number: ""+msgs_number, 1496 border_ID: border_ID, 1497 sort_box_type: sort_box_type, 1498 search_box_type: search_box_type, 1499 sort_box_reverse: sort_box_reverse, 1500 reuse_border: border_ID, 1501 new_folder: new_folder, 1502 new_folder_name: new_folder_name, 1503 get_previous_msg: ( !not_opem_previus ? preferences.delete_and_show_previous_message : false ), 1504 decoded: true } ), 1505 1506 success: function( data ){ 1507 data = connector.unserialize( data ); 1508 $.each(msgs_number.split(","), function(index, value){ 1509 delete selectedPagingMsgs[value]; 1510 msgFolder = Base64.encode(get_current_folder()); 1511 tabToRemove = value + "_r_" + msgFolder.replace(/=/g,""); 1512 if ($("#"+tabToRemove)){ 1513 delete_border(tabToRemove,'false'); 1514 } 1515 }); 1516 totalFolderMsgs -= msgs_number.split(",").length; 1517 1518 //TESTE 1519 selectAllFolderMsgs(); 1520 $('.select-link').unbind('click'); 1521 1522 if( data ) 1523 handler_move_msgs( data ); 1524 }, 1525 beforeSend: function( jqXHR, settings ){ 1526 connector.showProgressBar(); 1527 }, 1528 complete: function( jqXHR, settings ){ 1529 connector.hideProgressBar(); 1530 } 1531 1421 1532 }); 1422 totalFolderMsgs -= msgs_number.split(",").length; 1423 1424 //TESTE 1425 selectAllFolderMsgs(); 1426 $('.select-link').unbind('click'); 1427 1428 if( data ) 1429 handler_move_msgs( data ); 1430 }, 1431 beforeSend: function( jqXHR, settings ){ 1432 connector.showProgressBar(); 1433 }, 1434 complete: function( jqXHR, settings ){ 1435 connector.hideProgressBar(); 1436 } 1437 1438 }); 1439 } 1440 var hasFolder = false; 1441 $.each(fromRules, function(index, value) { 1442 if(value == folder){ 1443 hasFolder = true; 1444 cExecute ("$this.imap_functions.removeFlagMessagesFilter&folder="+folder+"&msg_number="+msgs_number, handler_removeFlag); 1445 return false; 1446 } 1447 }); 1448 if(!hasFolder){ 1449 handler_removeFlag(); 1450 } 1451 1452 }else 1453 write_msg(get_lang('No selected message.')); 1533 } 1534 var hasFolder = false; 1535 $.each(fromRules, function(index, value) { 1536 if(value == folder){ 1537 hasFolder = true; 1538 cExecute ("$this.imap_functions.removeFlagMessagesFilter&folder="+folder+"&msg_number="+msgs_number, handler_removeFlag); 1539 return false; 1540 } 1541 }); 1542 if(!hasFolder){ 1543 handler_removeFlag(); 1544 } 1545 1546 }else 1547 write_msg(get_lang('No selected message.')); 1548 } 1549 } 1550 1551 //Código adicionado para o correto funcionamento da seleção independente de paginação. 1552 $.each(msgs_number.split(","), function(index, value){ 1553 delete selectedPagingMsgs[value]; 1554 }); 1555 totalFolderMsgs = totalFolderMsgs - msgs_number.split(",").length; 1556 selectAllFolderMsgs(false); 1557 updateSelectedMsgs(); 1558 1454 1559 } 1455 1560 … … 1550 1655 1551 1656 1552 function archive_msgs(folder,folder_dest,id_msgs) { 1657 function archive_msgs(folder,folder_dest,id_msgs) { 1658 write_msg(get_lang('Starting to archive messages')); 1659 1660 if(currentTab.toString().indexOf("_r") != -1){ 1661 id_msgs = currentTab.toString().substr(0,currentTab.toString().indexOf("_r")); 1662 } 1663 1664 if(!id_msgs) 1665 id_msgs = get_selected_messages(); 1666 1667 if(folder_dest=='local_root' || folder_dest==null)//Default archive destiny = local_inbox folder 1668 folder_dest = 'local_inbox'; 1669 1670 if (parseInt(id_msgs) > 0 || id_msgs.length > 0){ 1671 //expresso_mail_archive.Archive(folder,folder_dest,id_msgs); 1672 window.setTimeout("expresso_mail_archive.Archive('" + folder + "','" + folder_dest + "','" + id_msgs + "')", 1); 1673 selectAllFolderMsgs(false); 1674 } 1675 else 1676 write_msg(get_lang('No selected message.')); 1677 1678 1679 /* 1553 1680 if(proxy_mensagens.is_local_folder(folder)) { 1554 1681 write_msg(get_lang("You cant archive local mails")); … … 1587 1714 var handler_arquivar_mensagens = function(data) { 1588 1715 1589 var msgs_info = [];1716 //var msgs_info = []; 1590 1717 1591 for( var i = 0; i < data.length; i++ )1592 msgs_info[i] = connector.unserialize( data[i] );1718 //for( var i = 0; i < data.length; i++ ) 1719 //msgs_info[i] = connector.unserialize( data[i] ); 1593 1720 1594 1721 //vejo se já tinha mensagens locais 1595 var h = expresso_local_messages.has_local_mails();1722 //var h = expresso_local_messages.has_local_mails(); 1596 1723 1597 expresso_local_messages.insert_mails( msgs_info, folder_dest, function( s, f ){complete_archiving( s, f, h )} ); 1598 1724 //expresso_local_messages.insert_mails( msgs_info, folder_dest, function( s, f ){complete_archiving( s, f, h )} ); 1725 1726 expresso_mail_archive.Archive(folder,folder_dest,id_msgs); 1599 1727 document.getElementById("overlay").style.visibility = "hidden"; 1600 1728 } … … 1619 1747 1620 1748 }); 1749 */ 1750 1621 1751 } 1622 1752 … … 2307 2437 { 2308 2438 if (Element("attachments_" + old_id_border)) 2309 { 2310 var fileUploadMSG = $('#fileupload_msg'+new_border_ID); 2311 var attachments = document.getElementById("attachments_" + old_id_border).getElementsByTagName("a"); 2312 var imagens = block_quoted_body.match(/<img[^>]*>/g); 2439 { 2440 var fileUploadMSG = $('#fileupload_msg'+new_border_ID); 2441 var attachments = $("#attachments_" + old_id_border).find("a"); 2442 if(openTab.imapBox[new_border_ID].split("local").length > 1 && attachments.length > 0){ 2443 alert("Não é possivel utilizar os anexos das mensagens locais, favor desarquivar para ter acesso aos anexos"); 2444 return false; 2445 } 2446 2447 var imagens = block_quoted_body.match(/<img[^>]*>/g); 2313 2448 var arrayAttachments = []; 2314 2449 var arrayAttachmentsA = []; … … 2318 2453 if((attachments[i].tagName=="SPAN") || (attachments[i].tagName=="IMG") || ((attachments[i].href.indexOf("javascript:download_local_attachment")==-1)&&(attachments[i].href.indexOf("javascript:download_attachments")==-1))) 2319 2454 continue; 2320 2321 var arrayAtt = attachments[i].href.replace("javascript:download_attachments(", "").replace(")", "").split(','); 2455 if(attachments[i].href.split("local") > 1){ 2456 var arrayAtt = attachments[i].href.replace("javascript:download_local_attachment(", "").replace(")", "").split(','); 2457 }else{ 2458 var arrayAtt = attachments[i].href.replace("javascript:download_attachments(", "").replace(")", "").split(','); 2459 } 2460 2322 2461 var att = new Object(); 2323 2462 var regex = new RegExp( "'", "g" ); … … 2408 2547 arrayAttachmentsA.push(attachments[i]); 2409 2548 } 2410 2549 } 2411 2550 //------------------- 2412 2551 … … 2505 2644 var fileUploadMSG = $('#fileupload_msg'+new_border_ID); 2506 2645 var attachments = $("#attachments_" + old_id_border).find("a"); 2646 2647 if(openTab.imapBox[new_border_ID].split("local").length > 1 && attachments.length > 0){ 2648 alert("Não é possivel utilizar os anexos das mensagens locais, favor desarquivar para ter acesso aos anexos"); 2649 return false; 2650 } 2651 2507 2652 for (var i = 0; i < attachments.length; i++){ 2508 2653 if((attachments[i].tagName=="SPAN") || (attachments[i].tagName=="IMG") || ((attachments[i].href.indexOf("javascript:download_local_attachment")==-1)&&(attachments[i].href.indexOf("javascript:download_attachments")==-1))) 2509 2654 continue; 2510 2655 fileUploadMSG.find(' .attachments-list').show(); 2511 var arrayAtt = attachments[i].href.replace("javascript:download_attachments(", "").replace(")", "").split(','); 2656 if(attachments[i].href.split("local").length > 1){ 2657 var arrayAtt = attachments[i].href.replace("javascript:download_local_attachment(", "").replace(")", "").split(','); 2658 }else{ 2659 var arrayAtt = attachments[i].href.replace("javascript:download_attachments(", "").replace(")", "").split(','); 2660 } 2512 2661 var att = new Object(); 2513 2662 var regex = new RegExp( "'", "g" ); … … 3115 3264 3116 3265 function set_messages_flag_search_local(flag){ 3117 var msgs_flag = this.get_selected_messages_search();3118 if(local_messages.prototype.set_messages_flag(msgs_flag, flag, true)){3119 var id_border = currentTab.replace(/[a-zA-Z_]+/, "");3120 var msgs = msgs_flag.split(',');3121 for(var i = 0; i < msgs.length; i++){3122 Element("search_local_msg"+id_border+"_check_box_message_"+msgs[i]).checked = false;3123 }3124 draw_tree_folders();3125 Element('chk_box_select_all_messages_search_local').checked = false;3126 refresh();3127 write_msg(get_lang('The messages were marked with success!'));3128 }else{3129 write_msg(get_lang('Error marking messages.'));3130 }3266 // var msgs_flag = this.get_selected_messages_search(); 3267 // if(local_messages.prototype.set_messages_flag(msgs_flag, flag, true)){ 3268 // var id_border = currentTab.replace(/[a-zA-Z_]+/, ""); 3269 // var msgs = msgs_flag.split(','); 3270 // for(var i = 0; i < msgs.length; i++){ 3271 // Element("search_local_msg"+id_border+"_check_box_message_"+msgs[i]).checked = false; 3272 // } 3273 // draw_tree_folders(); 3274 // Element('chk_box_select_all_messages_search_local').checked = false; 3275 // refresh(); 3276 // write_msg(get_lang('The messages were marked with success!')); 3277 // }else{ 3278 // write_msg(get_lang('Error marking messages.')); 3279 // } 3131 3280 } 3132 3281 … … 3637 3786 } 3638 3787 3639 function empty_trash_imap(shared, button ){3788 function empty_trash_imap(shared, button, type){ 3640 3789 if(shared){ 3641 3790 var folder_part = $(button).parents("li:first").attr("id").split(cyrus_delimiter); … … 3677 3826 'overlay_opacity' : 0.5, 3678 3827 'onClose': function(caption) { 3828 3679 3829 if(caption == get_lang("Yes")){ 3680 cExecute ("$this.imap_functions.empty_folder&clean_folder="+"imapDefaultTrashFolder"+(shared ? "&shared="+folder : ""), handler_empty_trash); 3830 if(type.id == "local_messages_trash"){ 3831 expresso_mail_archive.deleteAllMessages(type.id); 3832 cExecute("$this.imap_functions.get_folders_list&onload=true", update_menu); 3833 } else { 3834 cExecute ("$this.imap_functions.empty_folder&clean_folder="+"imapDefaultTrashFolder"+(shared ? "&shared="+folder : ""), handler_empty_trash); 3835 } 3681 3836 } 3682 3837 } … … 3684 3839 } 3685 3840 3686 function empty_spam_imap(shared, button ){3841 function empty_spam_imap(shared, button, type){ 3687 3842 if(shared){ 3688 3843 var folder_part = $(button).parents("li:first").attr("id").split(cyrus_delimiter); … … 3725 3880 'onClose': function(caption) { 3726 3881 if(caption == get_lang("Yes")){ 3727 cExecute ("$this.imap_functions.empty_folder&clean_folder="+"imapDefaultSpamFolder"+(shared ? "&shared="+folder : ""), handler_empty_spam); 3882 if(type.id == "local_messages_spam"){ 3883 expresso_mail_archive.deleteAllMessages(type.id); 3884 cExecute("$this.imap_functions.get_folders_list&onload=true", update_menu); 3885 } else { 3886 cExecute ("$this.imap_functions.empty_folder&clean_folder="+"imapDefaultSpamFolder"+(shared ? "&shared="+folder : ""), handler_empty_spam); 3887 } 3728 3888 } 3729 3889 } … … 3731 3891 } 3732 3892 3893 function buildExportArchiver(msgsArchive, name_box){ 3894 3895 var hand_export = function(data){ 3896 if(!data){ 3897 write_msg(get_lang('Error compressing messages (ZIP). Contact the administrator.')) 3898 }else if(data["empty_folder"] || data == "empty_folder"){ 3899 write_msg(get_lang("The selected folder is empty.")); 3900 }else 3901 download_attachments(null, null, data, null,null, get_current_folder().split("_")[2] +'.zip'); 3902 } 3903 3904 var array = new Array(); 3905 3906 for(var i =0; i < msgsArchive.length; i++){ 3907 eachMsg = { 3908 'ContentType' : msgsArchive[i].ContentType, 3909 'from' : { 'email' : msgsArchive[i].from.email, 'full' : msgsArchive[i].from.full, 'name' : msgsArchive[i].from.name}, 3910 'msg_sample' : msgsArchive[i].msg_sample, 3911 'subject' : msgsArchive[i].subject, 3912 'to' : { 'email' : msgsArchive[i].to.email, 'full' : msgsArchive[i].to.full, 'name' : msgsArchive[i].to.name}, 3913 'toaddress2' : msgsArchive[i].toaddress2, 3914 'msg_number' : msgsArchive[i].msg_number, 3915 'date' : new Date(msgsArchive[i].timestamp).toString() 3916 }; 3917 array.push(eachMsg); 3918 } 3919 3920 $.ajax({ 3921 type: "POST", 3922 url: "controller.php?action=$this.exporteml.export_all_byLocalFolder", 3923 data: { folder: name_box, type: "msg_local", messages : array} 3924 }).done(function(msg) { 3925 hand_export(msg.split('"')[1]); 3926 }); 3927 } 3733 3928 3734 3929 function export_all_selected_msgs(){ 3735 if (openTab.type[currentTab] > 1){ 3930 if(get_current_folder().split("_")[0] == "local"){ 3931 3932 if(get_selected_messages().indexOf(",") != -1){ 3933 expresso_mail_archive.getSomeMsgs(get_selected_messages().split(",")); 3934 } else { 3935 expresso_mail_archive.getSomeMsgs([get_selected_messages()]); 3936 } 3937 3938 buildExportArchiver(expresso_mail_archive.getSomeMsg, get_current_folder().split("_")[2]); 3939 3940 } else { 3941 3942 if (openTab.type[currentTab] > 1){ 3736 3943 source_msg(currentTab,openTab.imapBox[currentTab]); 3737 3944 return; … … 3779 3986 else 3780 3987 write_msg(get_lang('No selected message.')); 3988 } 3781 3989 } 3782 3990 … … 3826 4034 var _params = _target.id.split(";;"); 3827 4035 download_attachments(Base64.encode(_params[0]),_params[1],_params[2],_params[3],_params[4],file_type); 3828 } 3829 } 4036 if($(_target).parent().attr("href").split("http").length > 1){ 4037 var part_find = thumb.toString().split("#"); 4038 var part2_find = part_find[1].split("/temp"); 4039 var part_id_dwl = part2_find[0] + '/temp/download' + part2_find[1]; 4040 download_local_attachment(part_id_dwl); 4041 return; 4042 }else{ 4043 var _params = _target.id.split(";;"); 4044 download_attachments(_params[0],_params[1],_params[2],_params[3],_params[4],file_type); 4045 } 4046 } 4047 } 4048 3830 4049 function save_image2(info){ 3831 4050 var obj = jQuery.parseJSON(unescape(info)); … … 4555 4774 } 4556 4775 4776 function create_new_local_folder(parentFolderId, name){ 4777 4778 if(typeof(parentFolderId) == "string"){ 4779 parentFolderId = parentFolderId.split("_"); 4780 var parentName = parentFolderId[2]; 4781 } 4782 4783 4784 expresso_mail_archive.createFolder(parentName, name); 4785 4786 } 4787 4557 4788 function create_new_folder(name_folder, base_path){ 4558 4789 //Limit reached folders … … 4744 4975 DataLayer.poll('message',30); 4745 4976 4746 4977 //MAILARCHIVER-04 4978 function services_retry(){ 4979 try{ 4980 connector.purgeCache(); 4981 //window.alert('expresso var dump:\nenabled = ' + expresso_mail_archive.enabled + '\ntimer = ' + expresso_mail_archive.timer +'\ncounter = ' + expresso_mail_archive.counter); 4982 4983 if ((expresso_mail_archive.enabled == null) && (expresso_mail_archive.timer == null) && (expresso_mail_archive.counter > 0)){ 4984 connector.hideProgressBar(); 4985 //connector.resetProgressBarText(); 4986 write_msg(get_lang('Sorry, but you need to reload this web page. Click at reload page at web browsing top navigation.')); 4987 return; 4988 } 4989 4990 if (arguments.length == 0){ 4991 write_msg(get_lang('Trying to communicate with Mail Archiver...')); 4992 } 4993 4994 connector.showProgressBar(); 4995 var head = document.getElementById('send_queue'); 4996 4997 var script_xdr= document.createElement('script'); 4998 var script_xdr_tag_id = 'mail_archiver_retry_xdr'; 4999 5000 var script_request= document.createElement('script'); 5001 var script_request_tag_id = 'mail_archiver_retry_request'; 5002 5003 var script_cors= document.createElement('script'); 5004 var script_cors_tag_id = 'mail_archiver_retry_cors'; 5005 5006 var script_utils= document.createElement('script'); 5007 var script_utils_tag_id = 'mail_archiver_retry_utils'; 5008 5009 if(document.getElementById(script_xdr_tag_id)){ 5010 document.getElementById(script_xdr_tag_id).parentNode.removeChild(document.getElementById(script_xdr_tag_id)); 5011 } 5012 5013 if(document.getElementById(script_request_tag_id)){ 5014 document.getElementById(script_request_tag_id).parentNode.removeChild(document.getElementById(script_request_tag_id)); 5015 } 5016 5017 if(document.getElementById(script_cors_tag_id)){ 5018 document.getElementById(script_cors_tag_id).parentNode.removeChild(document.getElementById(script_cors_tag_id)); 5019 } 5020 5021 if(document.getElementById(script_utils_tag_id)){ 5022 document.getElementById(script_utils_tag_id).parentNode.removeChild(document.getElementById(script_utils_tag_id)); 5023 } 5024 5025 //IE XDR ADAPTER 5026 script_xdr.type= 'text/javascript'; 5027 script_xdr.src= mail_archive_protocol + '://' + mail_archive_host + ':' + mail_archive_port + '/arcservutil/cxf-addon-xdr-adapter.js'; 5028 script_xdr.id= script_xdr_tag_id; 5029 head.appendChild(script_xdr); 5030 5031 //CXF TRANSPORT OBJECT 5032 script_request.type= 'text/javascript'; 5033 script_request.src= mail_archive_protocol + '://' + mail_archive_host + ':' + mail_archive_port + '/arcservutil/cxf-addon-cors-request-object.js'; 5034 script_request.id= script_request_tag_id; 5035 head.appendChild(script_request); 5036 5037 //CXF CORS OBJECT 5038 script_cors.type= 'text/javascript'; 5039 script_cors.src= mail_archive_protocol + '://' + mail_archive_host + ':' + mail_archive_port + '/arcservutil/cxf-addon-cors-utils.js'; 5040 script_cors.id= script_cors_tag_id; 5041 head.appendChild(script_cors); 5042 5043 //CXF CORE 5044 script_utils.type= 'text/javascript'; 5045 script_utils.src= mail_archive_protocol + '://' + mail_archive_host + ':' + mail_archive_port + '/arcserv/ArchiveServices?js&nojsutils'; 5046 script_utils.id= script_utils_tag_id; 5047 head.appendChild(script_utils); 5048 5049 ttintval = window.setTimeout('check_services_restart()', 1000); 5050 } 5051 catch (e){ 5052 write_msg(get_lang('Sorry, but Mail Archiver still seems to be sleeping. Check out your system services!')); 5053 connector.hideProgressBar(); 5054 //connector.resetProgressBarText(); 5055 check_services_tryouts = 1; 5056 } 5057 } 5058 5059 //MAILARCHIVER-05 5060 function check_services_restart(){ 5061 try{ 5062 write_msg(get_lang('Wait: attempt %1 from %2...', check_services_tryouts, check_services_tryouts_limit)); 5063 if(check_services_tryouts <= 5){ 5064 try{ 5065 ArchiveServices = new web_service_mailarchiver_serpro__ArchiveServices(); 5066 ArchiveServices.url = mail_archive_protocol + "://" + mail_archive_host + ":" + mail_archive_port + "/arcserv/ArchiveServices"; 5067 window.clearInterval(ttintval); 5068 expresso_mail_archive.Restart(expresso_mail_archive); 5069 } 5070 catch (e){ 5071 check_services_tryouts++; 5072 window.clearInterval(ttintval); 5073 ttintval = window.setTimeout('services_retry(true)',1); 5074 } 5075 } 5076 else{ 5077 write_msg(get_lang('Sorry, but Mail Archiver still seems to be sleeping. Check out your system services!')); 5078 connector.hideProgressBar(); 5079 //connector.resetProgressBarText(); 5080 check_services_tryouts = 1; 5081 } 5082 } 5083 catch (e){ 5084 write_msg(get_lang('Sorry, but Mail Archiver still seems to be sleeping. Check out your system services!')); 5085 connector.hideProgressBar(); 5086 //connector.resetProgressBarText(); 5087 check_services_tryouts = 1; 5088 } 5089 } 5090 -
trunk/expressoMail1_2/js/messages_controller.js
r7200 r7414 9 9 * Retorna os cabeçalhos das mensagens a serem desenhadas na caixa de email. 10 10 */ 11 messages_proxy.prototype.messages_list = function(folder,msg_range_begin,emails_per_page,sort_box_type,search_box_type,sort_box_reverse,preview_msg_subject,preview_msg_tip,call_back) { 11 messages_proxy.prototype.messages_list = function(folder,msg_range_begin,emails_per_page,sort_box_type,search_box_type,sort_box_reverse,preview_msg_subject,preview_msg_tip,call_back) { 12 if(this.is_local_folder(folder)) { 13 14 //MAILARCHIVER-01 15 16 //var baseFolder = folder.substr(6); 17 var baseFolder = folder.replace('local_messages_', ''); 18 var tree_name; 19 //var drawinginfo = {treeObject: tree_name, treeName: tree_name, folderName: baseFolder}; 20 var drawinginfo = {}; 21 expresso_mail_archive.update_counters = false; 22 expresso_mail_archive.currentfolder = baseFolder; 23 expresso_mail_archive.getFolderInfo(expresso_mail_archive.currentfolder); 24 expresso_mail_archive.drawdata = drawinginfo; 25 26 if(tree_name == 'tree_folders'){ //only the 'tree_folders' must show messages. 'folders_tree' are just for managment operation 27 var exp_dfs = new Array(baseFolder,msg_range_begin,emails_per_page,sort_box_type,search_box_type, sort_box_reverse,preview_msg_subject,preview_msg_tip); 28 expresso_mail_archive.queryconfig.setExpressoDefaults(exp_dfs); 29 expresso_mail_archive.listMessages(); 30 } 31 else{ 32 if (!tree_name){ 33 //window.alert('sem arvore para atualizar, com sort_box_type =' + sort_box_type + ' e search_box_type= ' + search_box_type + ' reverse -- ' + sort_box_reverse); 34 var exp_dfs = new Array(baseFolder,msg_range_begin,emails_per_page,sort_box_type,search_box_type,sort_box_reverse,preview_msg_subject,preview_msg_tip); 35 expresso_mail_archive.queryconfig.setExpressoDefaults(exp_dfs); 36 expresso_mail_archive.listMessages(); 37 } 38 if(tree_name == 'folders_tree'){ 39 /*var div_export_local = document.createElement('div'); 40 div.style.width 41 var lbl_check = document.createElement('label'); 42 var check_export_local_recursive = document.createElement('input'); 43 var lbl_combo = document.createElement('label'); 44 var combo_export_local_format = document.createElement('select');*/ 45 //window.alert('alert td content = ' + Element('div_buttons').getElementsByTagName('table')[0].tbody[0].tr[4].td[0].innerHTML); 46 //Element('div_buttons').appendChild(div_export_local); 47 } 48 } 49 50 }else { 51 $.ajax({ 52 url: "controller.php?" + $.param( {action: "$this.imap_functions.get_range_msgs3", 53 folder: folder, 54 msg_range_begin: msg_range_begin, 55 msg_range_end: emails_per_page, 56 sort_box_type: sort_box_type, 57 search_box_type: search_box_type, 58 sort_box_reverse: sort_box_reverse } ), 59 60 success: function( data ){ 61 data = connector.unserialize(data); 62 63 if( data ) 64 call_back( data ); 65 }, 66 beforeSend: function( jqXHR, settings ){ 67 connector.showProgressBar(); 68 }, 69 complete: function( jqXHR, settings ){ 70 connector.hideProgressBar(); 71 } 72 73 }); 74 } 75 } 76 messages_proxy.prototype.messages_list_old = function(folder,msg_range_begin,emails_per_page,sort_box_type,search_box_type,sort_box_reverse,preview_msg_subject,preview_msg_tip,call_back) { 12 77 if(this.is_local_folder(folder)) { 13 78 var real_folder = folder.substr(6); … … 53 118 messages_proxy.prototype.get_msg = function(msg_number,msg_folder,set_flag,call_back) { 54 119 if(this.is_local_folder(msg_folder)) { 55 if(set_flag) 56 expresso_local_messages.set_messages_flag(msg_number,"seen"); 57 var data = expresso_local_messages.get_local_mail(msg_number); 58 59 eval("call_back(data)"); 120 121 122 //if(set_flag) 123 // expresso_local_messages.set_messages_flag(msg_number,"seen"); 124 // var data = expresso_local_messages.get_local_mail(msg_number); 125 //MAILARCHIVER-02 126 expresso_mail_archive.getMessage(msg_number); 127 128 //eval("call_back(data)"); 60 129 }else{ 61 130 $.ajax({ … … 86 155 if (folder == 'null') 87 156 folder = get_current_folder(); 88 if (msgs_number == 'selected') 89 msgs_number = get_selected_messages(); 90 157 158 //Validação para recuperar o id caso não seja aba de listagem 159 if (msgs_number == 'selected' && currentTab != 0) //Recupera apenas o id da mensagem aberta 160 msgs_number = currentTab.substr(0,currentTab.indexOf('_r')); 161 else if (msgs_number == 'selected' && currentTab == 0) 162 msgs_number = get_selected_messages(); 163 91 164 if(currentTab != 0 && currentTab.indexOf("search_") >= 0){ 92 165 var content_search = document.getElementById('content_id_'+currentTab); … … 100 173 if (!this.is_local_folder(folder)){ 101 174 delete_msgs(folder, msgs_number, border_ID); 102 }else { 103 if((folder != 'local_Trash') && (expresso_local_messages.as_trash())){ 104 expresso_local_messages.move_messages('Trash', msgs_number); 105 this.aux_interface_remove_mails(msgs_number, 'local_Trash', border_ID); 106 draw_tree_local_folders(); 107 update_local_box(); 108 refresh(); 109 }else{ 110 expresso_local_messages.delete_msgs(msgs_number, border_ID); 111 draw_tree_local_folders(); 112 update_local_box(); 113 refresh(); 114 } 115 } 175 }else { 176 //MAILARCHIVER-03 177 var msg_to_delete = Element(msgs_number); 178 //user has preference to show previous message on deleting one 179 if (isNaN(currentTab) && parseInt(preferences.delete_and_show_previous_message) && msg_to_delete) { 180 if (msg_to_delete.previousSibling){ 181 var previous_msg = msg_to_delete.previousSibling.id; 182 183 //user has preference to maintain default folder structure at local folders, so we have trash folder 184 if(preferences.auto_create_local == 1){ 185 //user has preference to "save" delete messasge on trash folder, so move it to there 186 if (((preferences.save_deleted_msg == true)) && (folder != expresso_mail_archive.specialfolders.trash)){ 187 expresso_mail_archive.folder_destination = 'trash'; 188 expresso_mail_archive.moveMessages(expresso_mail_archive.folder_destination, msgs_number); 189 delete_border(currentTab,'false'); 190 expresso_mail_archive.getMessage(previous_msg); 191 } 192 //user does not want to save messages deleted on trash. purge them imediatly 193 else{ 194 expresso_mail_archive.deleteMessages(msgs_number); 195 delete_border(currentTab,'false'); 196 expresso_mail_archive.getMessage(previous_msg) 197 } 198 } 199 //maybe, we do not have trash. 200 else{ 201 //user has preference to "save" delete messasge on trash folder, so move it to there 202 if (((preferences.save_deleted_msg == true)) && (folder != expresso_mail_archive.specialfolders.trash)){ 203 expresso_mail_archive.createFolder("","Trash"); 204 expresso_mail_archive.folder_destination = 'trash'; 205 expresso_mail_archive.moveMessages(expresso_mail_archive.folder_destination, msgs_number); 206 delete_border(currentTab,'false'); 207 expresso_mail_archive.getMessage(previous_msg); 208 } 209 //user does not want to save messages deleted on trash. purge them imediatly 210 else{ 211 expresso_mail_archive.deleteMessages(msgs_number); 212 delete_border(currentTab,'false'); 213 expresso_mail_archive.getMessage(previous_msg) 214 } 215 } 216 } 217 //there is no previous message existing to show. Just delete de view context 218 else{ 219 //user has preference to maintain default folder structure at local folders, so we have trash folder 220 if(preferences.auto_create_local == 1){ 221 if (((preferences.save_deleted_msg == true)) && (folder != expresso_mail_archive.specialfolders.trash)){ 222 expresso_mail_archive.folder_destination = 'trash'; 223 expresso_mail_archive.moveMessages(expresso_mail_archive.folder_destination, msgs_number); 224 delete_border(currentTab,'false'); 225 } 226 //user does not want to save messages deleted on trash. purge them imediatly 227 else{ 228 expresso_mail_archive.deleteMessages(msgs_number); 229 delete_border(currentTab,'false'); 230 } 231 } 232 //maybe, we do not have trash. Purge message so. 233 else{ 234 //user has preference to "save" delete messasge on trash folder, so move it to there 235 if (((preferences.save_deleted_msg == true)) && (folder != expresso_mail_archive.specialfolders.trash)){ 236 expresso_mail_archive.createFolder("","Trash"); 237 expresso_mail_archive.folder_destination = 'trash'; 238 expresso_mail_archive.moveMessages(expresso_mail_archive.folder_destination, msgs_number); 239 expresso_mail_archive.getMessage(previous_msg); 240 } 241 //user does not want to save messages deleted on trash. purge them imediatly 242 else{ 243 expresso_mail_archive.deleteMessages(msgs_number); 244 } 245 } 246 } 247 } 248 //user has no preferece to show previous message on deleting 249 else{ 250 if(preferences.auto_create_local == 1){ 251 //user has preference to "save" delete messasge on trash folder, so move it to there 252 if (((preferences.save_deleted_msg == true)) && (folder.replace('messages_','') != expresso_mail_archive.specialfolders.trash)){ 253 expresso_mail_archive.folder_destination = 'trash'; 254 expresso_mail_archive.moveMessages(expresso_mail_archive.folder_destination, msgs_number); 255 delete_border(currentTab,'false'); 256 } 257 //user does not want to save messages deleted on trash (or is cleaning it). purge them imediatly 258 else{ 259 expresso_mail_archive.deleteMessages(msgs_number); 260 delete_border(currentTab,'false'); 261 } 262 } 263 //maybe, we do not have trash. Purge message so. 264 else{ 265 //user has preference to "save" delete messasge on trash folder, so move it to there 266 if (((preferences.save_deleted_msg == true)) && (folder.replace('messages_','') != expresso_mail_archive.specialfolders.trash)){ 267 expresso_mail_archive.createFolder("","Trash"); 268 expresso_mail_archive.folder_destination = 'trash'; 269 expresso_mail_archive.moveMessages(expresso_mail_archive.folder_destination, msgs_number); 270 } 271 //user does not want to save messages deleted on trash. purge them imediatly 272 else{ 273 expresso_mail_archive.deleteMessages(msgs_number); 274 } 275 } 276 } 277 } 278 279 //Código adicionado para o correto funcionamento da seleção independente de paginação. 280 $.each(msgs_number.split(","), function(index, value){ 281 delete selectedPagingMsgs[value]; 282 }); 283 totalFolderMsgs = totalFolderMsgs - msgs_number.split(",").length; 284 selectAllFolderMsgs(false); 285 updateSelectedMsgs(); 116 286 } 117 287 … … 119 289 120 290 if(info_msg.local_message==true) { 121 return "javascript:download_local_attachment('"+ 122 expresso_local_messages.get_url_anexo(info_msg.msg_number,info_msg.attachments[numero_ordem_anexo].pid)+ 123 "')"; 291 //ma serpro 292 // return "javascript:download_local_attachment('"+ 293 // expresso_local_messages.get_url_anexo(info_msg.msg_number,info_msg.attachments[numero_ordem_anexo].pid)+ 294 // "')"; 295 //MAILARCHIVER-04 296 return "javascript:download_local_attachment('"+ mail_archive_protocol+'://'+mail_archive_host+':'+mail_archive_port+'/temp/download/' +info_msg.attachments[numero_ordem_anexo].pid + "')"; 124 297 } 125 298 else { … … 139 312 140 313 messages_proxy.prototype.proxy_set_messages_flag = function (flag,msg_number){ 141 if(this.is_local_folder(get_current_folder())) { 142 expresso_local_messages.set_messages_flag(msg_number,flag); 143 } 144 else { 145 set_messages_flag(flag,msg_number); 146 // Verifica se a pasta que esta selecionada contem a opção "Não lidas" ativada 147 // caso exista, ele chama novamente a opção "Não lidas" para atualizar a pasta. 148 if('UNSEEN' == search_box_type) 149 return sort_box('UNSEEN','SORTARRIVAL'); 150 } 151 } 152 153 messages_proxy.prototype.proxy_set_message_flag = function (msg_number,flag,func_after_flag_change){ 154 var msg_number_folder = Element("new_input_folder_"+msg_number+"_r"); //Mensagens respondidas/encaminhadas 314 //MAILARCHIVER 315 if(this.is_local_folder(get_current_folder())) { 316 var msglist = get_selected_messages(); 317 var arrlist = msglist.split(","); 318 var operation; 319 var strtag; 320 321 for(var i in arrlist){ 322 switch(flag.toLowerCase()){ 323 case 'unseen': 324 strtag = "unseen"; 325 operation = 0; 326 set_msg_as_unread(arrlist[i]); 327 break; 328 case 'seen': 329 strtag = "unseen"; 330 operation = 1; 331 set_msg_as_read(arrlist[i]); 332 break; 333 case 'flagged': 334 strtag = "flagged, importance_high"; 335 operation = 0; 336 set_msg_as_flagged(arrlist[i]); 337 break; 338 case 'unflagged': 339 strtag = "flagged, importance_high"; 340 operation = 1; 341 set_msg_as_unflagged(arrlist[i]); 342 break; 343 } 344 expresso_mail_archive.currenttag = flag; 345 var tl = expresso_mail_archive.pattern.tagConfig(strtag, arrlist[i], operation); 346 expresso_mail_archive.taglist = tl; 347 expresso_mail_archive.progressbar = window.setTimeout("expresso_mail_archive.tagMessage()",1); 348 } 349 } 350 else { 351 set_messages_flag(flag,msg_number); 352 // Verifica se a pasta que esta selecionada contem a opção "Não lidas" ativada 353 // caso exista, ele chama novamente a opção "Não lidas" para atualizar a pasta. 354 if('UNSEEN' == search_box_type) 355 return sort_box('UNSEEN','SORTARRIVAL'); 356 } 357 } 358 359 messages_proxy.prototype.proxy_set_message_flag = function (msg_number,flag,func_after_flag_change,msgid){ 360 var msg_number_folder = Element("new_input_folder_"+msg_number+"_r"); //Mensagens respondidas/encaminhadas 155 361 if(!msg_number_folder) 156 362 var msg_number_folder = Element("input_folder_"+msg_number+"_r"); //Mensagens abertas 157 363 var folder = msg_number_folder ? msg_number_folder.value : get_current_folder(); 158 if(this.is_local_folder(folder)) { 159 expresso_local_messages.set_message_flag(msg_number,flag, func_after_flag_change); 160 } 161 else { 162 set_message_flag(msg_number,flag, func_after_flag_change); 163 } 364 365 //MAILARCHIVER 366 if(this.is_local_folder(folder)) { 367 if(!msgid) 368 msgid = msg_number; 369 var taglist = flag; 370 var operation; 371 372 switch(flag.toLowerCase()){ 373 case 'unseen': 374 strtag = "unseen"; 375 operation = 0; 376 set_msg_as_unread(msgid); 377 break; 378 case 'seen': 379 strtag = "unseen"; 380 operation = 1; 381 set_msg_as_read(msgid); 382 break; 383 case 'flagged': 384 strtag = 'flagged, importance_high'; 385 operation = 0; 386 set_msg_as_flagged(msgid); 387 break; 388 case 'unflagged': 389 strtag = "flagged, importance_high"; 390 operation = 1; 391 set_msg_as_unflagged(msgid); 392 break; 393 case 'forwarded': 394 strtag = "forwarded"; 395 operation = 0; 396 set_msg_as_flagged(msgid); 397 case 'answered': 398 strtag = "answered"; 399 operation = 0; 400 set_msg_as_flagged(msgid); 401 402 } 403 404 expresso_mail_archive.drawdata = null; 405 var tl = expresso_mail_archive.pattern.tagConfig(strtag, msgid, operation); 406 expresso_mail_archive.currenttag = flag; 407 expresso_mail_archive.taglist = tl; 408 expresso_mail_archive.progressbar = window.setTimeout("expresso_mail_archive.tagMessage()",1); 409 } 410 else { 411 set_message_flag(msg_number,flag, func_after_flag_change); 412 } 164 413 } 165 414 … … 290 539 if (! folder || folder == 'null') 291 540 folder = Element("input_folder_"+msgs_number+"_r") ? Element("input_folder_"+msgs_number+"_r").value : (openTab.imapBox[currentTab] ? openTab.imapBox[currentTab]:get_current_folder()); 292 if ((this.is_local_folder(folder)) && (this.is_local_folder(new_folder))) { //Move entre pastas não locais... 293 if (folder == new_folder){ 294 write_msg(get_lang('The origin folder and the destination folder are the same.')); 541 542 //MAILARCHIVER-08 543 if (this.is_local_folder(folder)){ 544 expresso_mail_archive.update_counters = true; 545 //Folder de onde sai a mensagem é local (armazenamento local) 546 if (folder == new_folder){ 547 write_msg(get_lang('The origin folder and the destination folder are the same.')); 295 548 return; 296 } 297 if(msgs_number=='selected') 298 msgs_number = get_selected_messages(); 299 if (new_folder == 'local_root') 300 alert(get_lang("Select a folder!")); 301 if (parseInt(msgs_number) > 0 || msgs_number.length > 0) { 302 expresso_local_messages.move_messages(new_folder.substr(6), msgs_number); 303 this.aux_interface_remove_mails(msgs_number, new_folder_name, border_ID); 304 draw_tree_local_folders(); 305 update_local_box(); 306 } 307 else 308 write_msg(get_lang('No selected message.')); 309 } 310 else 311 if ((!this.is_local_folder(folder)) && (!this.is_local_folder(new_folder))) { //Move entre pastas locais... 312 move_msgs(folder, msgs_number, border_ID, new_folder, new_folder_name); 313 }else if ((!this.is_local_folder(folder)) && (this.is_local_folder(new_folder))) { 314 if(msgs_number=='selected') 315 archive_msgs(folder,new_folder); 316 else 317 archive_msgs(folder,new_folder,msgs_number); 318 319 320 draw_tree_local_folders(); 321 refresh(); 322 } 323 else { 324 //Por Bruno Costa (bruno.vieira-costa@serpro.gov.br) permite o desarquivamento de menssagens chamando a função unarchive_msgs quando uma msg é movida de uma pasta local para uma pasta remota. 325 326 expresso_local_messages.unarchive_msgs(folder,new_folder,msgs_number); 327 //write_msg(get_lang("you can't move mails from local to server folders")); 328 } 329 330 549 } 550 551 //Validação para recuperar o id caso não seja aba de listagem 552 if (msgs_number == 'selected' && currentTab != 0) //Recupera apenas o id da mensagem aberta 553 msgs_number = currentTab.substr(0,currentTab.indexOf('_r')); 554 else 555 msgs_number = get_selected_messages(); 556 557 if (new_folder == 'local_root'){ 558 alert(get_lang("Select a folder!")); 559 } 560 561 if (parseInt(msgs_number) > 0 || msgs_number.length > 0) { 562 if (this.is_local_folder(new_folder)){ 563 //esta tirando de um folder local para outro folder local 564 expresso_mail_archive.moveMessages(new_folder.replace("local_messages_",""), msgs_number); 565 if(currentTab != 0) 566 delete_border(currentTab,'false'); 567 } 568 else{ 569 //esta tirando de um folder local para um folder IMAP (desarquivamento) 570 if(!new_folder){ 571 new_folder = 'INBOX'; 572 } 573 if(currentTab.toString().indexOf("_r") != -1){ 574 msgs_number = currentTab.toString().substr(0,currentTab.toString().indexOf("_r")); 575 } 576 expresso_mail_archive.unarchieve(folder, new_folder, msgs_number); 577 } 578 } 579 else{ 580 write_msg(get_lang('No selected message.')); 581 } 582 }else{ 583 if (this.is_local_folder(new_folder)){ 584 //esta tirando de um folder não local para um folder local (arquivamento) 585 if(msgs_number=='selected'){ 586 archive_msgs(folder, new_folder); 587 } 588 else{ 589 archive_msgs(folder, new_folder, msgs_number); 590 } 591 } 592 else{ 593 //esta tirando de um folder não local para outro folder não local (move) 594 move_msgs(folder, msgs_number, border_ID, new_folder, new_folder_name); 595 } 596 } 597 598 //Adicionado código para o correto funcionamento da seleção independente de paginação. 599 $.each(msgs_number.split(","), function(index, value){ 600 delete selectedPagingMsgs[value]; 601 }); 602 totalFolderMsgs = totalFolderMsgs - msgs_number.split(",").length; 603 selectAllFolderMsgs(false); 604 updateSelectedMsgs(); 331 605 } 332 606 … … 462 736 463 737 messages_proxy.prototype.export_all_messages = function(folder){ 464 465 if (!folder){ 466 folder = get_current_folder(); 467 } 468 469 if(!this.is_local_folder(folder)){ 470 export_all_selected_msgs(); 471 }else{ 472 local_messages.prototype.local_messages_to_export(); 473 } 474 } 738 if (!folder) { 739 folder = get_current_folder(); 740 } 741 742 if(!this.is_local_folder(folder) || folder.split("_")[0] == "local"){ 743 export_all_selected_msgs(); 744 }else{ 745 local_messages.prototype.local_messages_to_export(); 746 } 747 } 748 749 750 751 /* Airton 752 * Método que vai chamar efetivamente o método Archive. 753 * TO-DO: Tirar desse arquivo o método e passar pra outro arquivo 754 */ 755 messages_proxy.prototype.archive_message = function(folder, msgs_number) { 756 if(msgs_number == 'get_selected_messages') 757 msgs_number = get_selected_messages(); 758 759 expresso_mail_archive.Archive("INBOX", "inbox", msgs_number); 760 } 761 762 763 475 764 /* 476 765 messages_proxy.prototype.proxy_export_all_msg=function(){ -
trunk/expressoMail1_2/js/search.js
r7386 r7414 1 1 xhr = false; 2 3 var folder = {}; 2 4 3 5 function searchE() … … 144 146 } 145 147 148 //draws folder list 146 149 searchE.prototype.foldersTree = function() 147 150 { 148 var treeFoldersSearch = new dFTree({name : 'treeFoldersSearch'}); 149 150 var root = new dNode({id : 'root', caption: get_lang('My Folders'), onClick: "ttree.setFolder('root')"}); 151 152 treeFoldersSearch.add(root, 'root'); 153 154 for(var i = 0; i < folders.length ; i++ ) 155 { 156 var nn = new dNode({id:folders[i].folder_id, caption: lang_folder(folders[i].folder_name), plusSign:folders[i].folder_hasChildren, onClick: "ttree.setFolder('"+folders[i].folder_id+"')"}); 151 /*Insere a árvore de diretórios*/ 152 153 var foldersTree = jQuery("#divFoldersSearch") 154 .removeClass('empty-container') 155 .html(DataLayer.render(BASE_PATH + 'api/templates/foldertree.ejs', {folders: [cp_tree1, cp_tree2, cp_tree3 ]})) 156 .find("#foldertree").treeview() 157 .click(function(event) 158 { 159 //request new selected folder messages 160 var target = $(event.target); 161 162 if( target.is('.collapsable-hitarea, .expandable-hitarea, .lastCollapsable, .lastExpandable, .treeview') ) 163 return; 164 165 if( !target.attr('id') ) 166 target = target.parent(); 167 168 if (target.attr('id') == "foldertree") return; 157 169 158 if ( folders[i].folder_parent == '' ) 159 { 160 folders[i].folder_parent = 'root'; 161 } 162 else if ( folders[i].folder_parent.indexOf('user') != -1 ) 163 { 164 //if ( treeFoldersSearch.getNodeById('user') ) 165 { 166 var n_root_shared_folders = new dNode({id:'user', caption:get_lang("Shared Folders"), plusSign:true}); 167 treeFoldersSearch.add( n_root_shared_folders,'root'); 168 } 169 } 170 171 // Ver Ticket #1548 172 if( folders[i].folder_parent != 'root') 173 { 174 var node_parent = treeFoldersSearch.getNodeById(folders[i].folder_parent); 175 176 if( typeof node_parent != 'undefined') 177 { 178 node_parent.plusSign = true; 179 treeFoldersSearch.alter(node_parent); 180 } 181 } 170 folder = {}; 171 folder.id = target.attr('id'); 172 folder.child = target.find('.folder'); 173 folder.caption = target.find('span').attr('title'); 182 174 183 treeFoldersSearch.add( nn, folders[i].folder_parent ); 184 } 185 186 treeFoldersSearch.draw( $("#divFoldersSearch")[0] ); 187 treeFoldersSearch.getNodeById("root")._select(); 188 root.changeState(); 175 $('.filetree span.folder.selected').removeClass('selected'); 176 if(!target.is('#foldertree > .expandable, #foldertree > .collapsable')) 177 $(target).children('.folder').addClass('selected'); 178 179 selectedFolder = { 180 id: folder.id, 181 name: folder.child.attr('title'), 182 'class': folder.child.attr('class') 183 }; 184 }); 185 189 186 } 190 187 … … 413 410 searchE.prototype.viewLocalMessage = function() 414 411 { 412 /* 415 413 var data = [2]; 416 414 var gears = []; … … 449 447 450 448 EsearchE.mount_result( data, 'SORTDATE' ); 449 } 450 */ 451 452 var data = [2]; 453 var gears = []; 454 var local_folders = []; 455 456 //MailArchiver - local data 457 if ( preferences.use_local_messages == 1 ) 458 { 459 data['data_gears'] = expresso_mail_archive.search_queryresult; 460 data['num_msgs'] = expresso_mail_archive.search_queryresult.length; 461 write_msg( data['num_msgs'] + " " + get_lang("results found")); 462 EsearchE.mount_result(data , 'SORTDATE'); 451 463 } 452 464 } … … 545 557 if (j == 4) 546 558 { 547 td.setAttribute("width", colSizes[1][4]); 548 td.id = "td_message_followup_search_"+uid_msg; 549 td.setAttribute("class","search-result-item"); 550 td1 = '<div class="flag-edited" style="width:8px;height:6px;"><img src="../prototype/modules/mail/img/flagEditor.png"></div>'; 559 if(border_id.split("local").length == 1){ 560 td.setAttribute("width", colSizes[1][4]); 561 td.id = "td_message_followup_search_"+uid_msg; 562 td.setAttribute("class","search-result-item"); 563 td1 = '<div class="flag-edited" style="width:8px;height:6px;"><img src="../prototype/modules/mail/img/flagEditor.png"></div>'; 564 565 $(td).click(function(event, ui){ 566 var messageClickedId = $(this).attr('id').match(/td_message_followup_search_([\d]+)/)[1]; 551 567 552 $(td).click(function(event, ui){ 553 var messageClickedId = $(this).attr('id').match(/td_message_followup_search_([\d]+)/)[1]; 568 var followupColor = $('tr[role="'+messageClickedId+'_'+mailbox+'"] #td_message_followup_search_' + messageClickedId).find(".flag-edited").css('backgroundColor'); 569 570 $('tr[role="'+messageClickedId+'_'+mailbox+'"] #td_message_followup_search_' + messageClickedId).find(".flag-edited") 571 .html('<img alt="Carregando" title="Carregando" style="margin-left:-3px; margin-top:-4px; width:13px; height:13px;" src="../prototype/modules/mail/img/ajax-loader.gif" />'); 572 573 $('tr[role="'+messageClickedId+'_'+mailbox+'"] #td_message_followup_search_' + messageClickedId).find(".flag-edited").css("background", "transparent"); 574 575 /**TODO Alterar após melhorias no filtro da camada javascript*/ 576 DataLayer.remove('followupflagged', false); 577 var flagged = DataLayer.get('followupflagged', {filter: [ 578 'AND', 579 ['=', 'messageNumber', messageClickedId], 580 ['=', 'folderName', mailbox] 581 ]}); 582 if(flagged == '' || flagged == [] || flagged == 'undefined'){ 583 /** 584 * Aplica followupflag de Acompanhamento 585 */ 586 aux.followupflagged = { 587 uid : User.me.id, 588 folderName : mailbox, 589 messageNumber : messageClickedId, 590 alarmTime : false, 591 backgroundColor : '#FF2016', 592 followupflagId: '1' 593 }; 554 594 555 var followupColor = $('tr[role="'+messageClickedId+'_'+mailbox+'"] #td_message_followup_search_' + messageClickedId).find(".flag-edited").css('backgroundColor'); 556 557 $('tr[role="'+messageClickedId+'_'+mailbox+'"] #td_message_followup_search_' + messageClickedId).find(".flag-edited") 558 .html('<img alt="Carregando" title="Carregando" style="margin-left:-3px; margin-top:-4px; width:13px; height:13px;" src="../prototype/modules/mail/img/ajax-loader.gif" />'); 559 560 $('tr[role="'+messageClickedId+'_'+mailbox+'"] #td_message_followup_search_' + messageClickedId).find(".flag-edited").css("background", "transparent"); 561 562 /**TODO Alterar após melhorias no filtro da camada javascript*/ 563 DataLayer.remove('followupflagged', false); 564 var flagged = DataLayer.get('followupflagged', {filter: [ 565 'AND', 566 ['=', 'messageNumber', messageClickedId], 567 ['=', 'folderName', mailbox] 568 ]}); 569 if(flagged == '' || flagged == [] || flagged == 'undefined'){ 570 /** 571 * Aplica followupflag de Acompanhamento 572 */ 573 aux.followupflagged = { 574 uid : User.me.id, 575 folderName : mailbox, 576 messageNumber : messageClickedId, 577 alarmTime : false, 578 backgroundColor : '#FF2016', 579 followupflagId: '1' 580 }; 581 582 aux.followupflagged.id = DataLayer.put('followupflagged', aux.followupflagged); 583 DataLayer.commit(false, false, function(data){ 584 var fail = false; 585 $.each(data, function(index, value) { 586 fail = false; 587 if(typeof value === 'string'){ 588 fail = value; 595 aux.followupflagged.id = DataLayer.put('followupflagged', aux.followupflagged); 596 DataLayer.commit(false, false, function(data){ 597 var fail = false; 598 $.each(data, function(index, value) { 599 fail = false; 600 if(typeof value === 'string'){ 601 fail = value; 602 } 603 }); 604 605 $('tr[role="'+messageClickedId+'_'+mailbox+'"] #td_message_followup_search_' + messageClickedId).find(".flag-edited") 606 .html('<img src="../prototype/modules/mail/img/flagEditor.png">'); 607 608 if (fail) { 609 610 var isCurrentFolder = current_folder == mailbox ? '#td_message_followup_' + messageClickedId + ', ' : ''; 611 $(isCurrentFolder + 'tr[role="'+messageClickedId+'_'+mailbox+'"] #td_message_followup_search_' + messageClickedId).find(".flag-edited").css("background", "#CCCCCC"); 612 MsgsCallbackFollowupflag[fail](); 613 return false; 614 } 615 616 if(current_folder == mailbox){ 617 $('#td_message_followup_' + messageClickedId + ', ' + 618 'tr[role="'+messageClickedId+'_'+mailbox+'"] #td_message_followup_search_' + messageClickedId).attr('title', get_lang('Follow up')).find(".flag-edited").css("background", aux.followupflagged.backgroundColor); 619 }else{ 620 $('tr[role="'+messageClickedId+'_'+mailbox+'"] #td_message_followup_search_' + messageClickedId).attr('title', get_lang('Follow up')).find(".flag-edited").css("background", aux.followupflagged.backgroundColor); 621 } 622 updateCacheFollowupflag(messageClickedId, mailbox, true); 623 }); 624 625 626 }else if(onceOpenedHeadersMessages[mailbox][messageClickedId]['followupflagged'].followupflag.name == 'Follow up'){ 627 /** 628 * Remover followupflag de Acompanhamento (DFD0078:RI25) 629 */ 630 $(this).find(".flag-edited").css("background", "#cccccc"); 631 DataLayer.remove('followupflagged', flagged[0].id ); 632 DataLayer.commit(false, false, function(){ 633 $('tr[role="'+messageClickedId+'_'+mailbox+'"] #td_message_followup_search_' + messageClickedId).find(".flag-edited") 634 .html('<img src="../prototype/modules/mail/img/flagEditor.png">'); 635 if(current_folder == mailbox){ 636 updateCacheFollowupflag(messageClickedId, mailbox, false); 637 638 $('#td_message_followup_' + messageClickedId + ', ' + 639 'tr[role="'+messageClickedId+'_'+mailbox+'"] #td_message_followup_search_' + messageClickedId).attr('title', '').find(".flag-edited").css("background", '#CCC'); 640 641 $('#td_message_followup_' + messageClickedId + ', ' + 642 'tr[role="'+messageClickedId+'_'+mailbox+'"] #td_message_followup_search_' + messageClickedId).find(".flag-edited") 643 .find("img").attr("src", "../prototype/modules/mail/img/flagEditor.png").css("margin-left","0"); 644 }else{ 645 updateCacheFollowupflag(messageClickedId, mailbox, false); 646 647 $('tr[role="'+messageClickedId+'_'+mailbox+'"] #td_message_followup_search_' + messageClickedId).attr('title', '').find(".flag-edited").css("background", '#CCC'); 648 649 $('tr[role="'+messageClickedId+'_'+mailbox+'"] #td_message_followup_search_' + messageClickedId).find(".flag-edited") 650 .find("img").attr("src", "../prototype/modules/mail/img/flagEditor.png").css("margin-left","0"); 589 651 } 590 652 }); 591 653 654 } else { 592 655 $('tr[role="'+messageClickedId+'_'+mailbox+'"] #td_message_followup_search_' + messageClickedId).find(".flag-edited") 593 656 .html('<img src="../prototype/modules/mail/img/flagEditor.png">'); 594 595 if (fail) { 596 597 var isCurrentFolder = current_folder == mailbox ? '#td_message_followup_' + messageClickedId + ', ' : ''; 598 $(isCurrentFolder + 'tr[role="'+messageClickedId+'_'+mailbox+'"] #td_message_followup_search_' + messageClickedId).find(".flag-edited").css("background", "#CCCCCC"); 599 MsgsCallbackFollowupflag[fail](); 600 return false; 601 } 602 603 if(current_folder == mailbox){ 604 $('#td_message_followup_' + messageClickedId + ', ' + 605 'tr[role="'+messageClickedId+'_'+mailbox+'"] #td_message_followup_search_' + messageClickedId).attr('title', get_lang('Follow up')).find(".flag-edited").css("background", aux.followupflagged.backgroundColor); 606 }else{ 607 $('tr[role="'+messageClickedId+'_'+mailbox+'"] #td_message_followup_search_' + messageClickedId).attr('title', get_lang('Follow up')).find(".flag-edited").css("background", aux.followupflagged.backgroundColor); 608 } 609 updateCacheFollowupflag(messageClickedId, mailbox, true); 610 }); 611 612 613 }else if(onceOpenedHeadersMessages[mailbox][messageClickedId]['followupflagged'].followupflag.name == 'Follow up'){ 614 /** 615 * Remover followupflag de Acompanhamento (DFD0078:RI25) 616 */ 617 $(this).find(".flag-edited").css("background", "#cccccc"); 618 DataLayer.remove('followupflagged', flagged[0].id ); 619 DataLayer.commit(false, false, function(){ 620 $('tr[role="'+messageClickedId+'_'+mailbox+'"] #td_message_followup_search_' + messageClickedId).find(".flag-edited") 621 .html('<img src="../prototype/modules/mail/img/flagEditor.png">'); 622 if(current_folder == mailbox){ 623 updateCacheFollowupflag(messageClickedId, mailbox, false); 624 625 $('#td_message_followup_' + messageClickedId + ', ' + 626 'tr[role="'+messageClickedId+'_'+mailbox+'"] #td_message_followup_search_' + messageClickedId).attr('title', '').find(".flag-edited").css("background", '#CCC'); 627 628 $('#td_message_followup_' + messageClickedId + ', ' + 629 'tr[role="'+messageClickedId+'_'+mailbox+'"] #td_message_followup_search_' + messageClickedId).find(".flag-edited") 630 .find("img").attr("src", "../prototype/modules/mail/img/flagEditor.png").css("margin-left","0"); 631 }else{ 632 updateCacheFollowupflag(messageClickedId, mailbox, false); 633 634 $('tr[role="'+messageClickedId+'_'+mailbox+'"] #td_message_followup_search_' + messageClickedId).attr('title', '').find(".flag-edited").css("background", '#CCC'); 635 636 $('tr[role="'+messageClickedId+'_'+mailbox+'"] #td_message_followup_search_' + messageClickedId).find(".flag-edited") 637 .find("img").attr("src", "../prototype/modules/mail/img/flagEditor.png").css("margin-left","0"); 638 } 639 }); 640 657 $('tr[role="'+messageClickedId+'_'+mailbox+'"] #td_message_followup_search_' + messageClickedId).find(".flag-edited").css("background", followupColor); 658 $(this).parents('[role="'+messageClickedId+'_'+mailbox+'"]').attr('class', 'selected_msg').find(':checkbox').trigger('click'); 659 configureFollowupflag(); 660 } 661 //if(!){} 662 663 }); 664 } 665 } 666 if (j == 5) 667 { 668 if(border_id.split("local").length == 1){ 669 td.setAttribute("width", colSizes[1][5]); 670 td.id = "td_message_labels_search_"+uid_msg; 671 td.setAttribute("class","td-label-search"); 672 673 if (aux.labels) { 674 td1 = '<img src="../prototype/modules/mail/img/tag.png">'; 675 updateLabelsColumn(aux) 641 676 } else { 642 $('tr[role="'+messageClickedId+'_'+mailbox+'"] #td_message_followup_search_' + messageClickedId).find(".flag-edited") 643 .html('<img src="../prototype/modules/mail/img/flagEditor.png">'); 644 $('tr[role="'+messageClickedId+'_'+mailbox+'"] #td_message_followup_search_' + messageClickedId).find(".flag-edited").css("background", followupColor); 645 $(this).parents('[role="'+messageClickedId+'_'+mailbox+'"]').attr('class', 'selected_msg').find(':checkbox').trigger('click'); 646 configureFollowupflag(); 677 td1 = ''; 647 678 } 648 //if(!){}649 650 });651 }652 if (j == 5)653 {654 td.setAttribute("width", colSizes[1][5]);655 td.id = "td_message_labels_search_"+uid_msg;656 td.setAttribute("class","td-label-search");657 658 if (aux.labels) {659 td1 = '<img src="../prototype/modules/mail/img/tag.png">';660 updateLabelsColumn(aux)661 } else {662 td1 = '';663 679 } 664 680 } … … 735 751 td.onclick = _onclick; 736 752 737 if( validate_date( aux.udate ) ) 738 { 753 if(validate_date(new String(aux.udate))){ 739 754 var td1 = aux.udate; 740 755 } … … 1256 1271 if(typeof(Data.data_gears)=="undefined") 1257 1272 EsearchE.show_paging( Data['num_msgs'] ); 1273 1274 Data = null; 1275 data = null; 1258 1276 } 1259 1277 … … 1275 1293 { 1276 1294 var sel = Element("sel_search_nm_box1"); 1295 this.name_box_search = folder.id; 1277 1296 1278 1297 if (!proxy_mensagens.is_local_folder(this.name_box_search)) … … 1298 1317 name_box_def = this.name_box_search.substr(final_pos+1); 1299 1318 } 1300 else 1301 name_box_def = this.name_box_search.substr(6);//Retira o 'local_' 1319 else { 1320 name_box_def = folder.caption + " (local)"; //this.name_box_search.substr(6);//Retira o 'local_' 1321 } 1302 1322 } 1303 1323 … … 1490 1510 if (preferences.use_local_messages == 1) 1491 1511 { 1492 temp = expresso_local_messages.list_local_folders(); 1493 for (var x in temp) 1494 { 1495 local_folders.push(temp[x][0]); 1496 } 1512 local_folders[0] = ""; //se local_folders[0] estiver vazio, busca em todas as pastas 1497 1513 } 1498 1514 } … … 1566 1582 { 1567 1583 expresso_local_messages.setSortType('SORTDATE'); 1568 tmp = expresso_local_messages.search( local_folders, fields ); 1584 //tmp = expresso_local_messages.search( local_folders, fields ); 1585 expresso_mail_archive.search(local_folders, fields); 1586 tmp = expresso_mail_archive.search_queryresult; 1569 1587 } 1570 1588 … … 1575 1593 } 1576 1594 1577 if ( tmp.length > 0 ) 1578 { 1579 allMsg['gears_num_msgs'] = tmp.length ; 1595 if (tmp) { 1596 if ( tmp.length > 0 ) 1597 { 1598 allMsg['gears_num_msgs'] = tmp.length ; 1599 } 1600 } else { 1601 allMsg['gears_num_msgs'] = 0; 1580 1602 } 1581 1603 … … 1586 1608 else 1587 1609 { 1588 if( ( tmp .length > 0) && ( !data['num_msgs'] ) )1610 if( ( tmp && tmp.length > 0) && ( !data['num_msgs'] ) ) 1589 1611 { 1590 1612 EsearchE.viewLocalMessage(); … … 1596 1618 EsearchE.func_clean(); 1597 1619 } 1598 1599 1620 write_msg( count + " " + get_lang("results found") ); 1600 1621 … … 1646 1667 searchE.prototype.quickSearchMail = function(value, page, sort, border_id) 1647 1668 { 1648 var local_folders = new Array ();1669 var local_folders = new Array; 1649 1670 var temp; 1650 1671 var not_found_corrent_folder = true; … … 1657 1678 } 1658 1679 1680 //Inserido valor vazio no array para representar todas as pastas locais 1659 1681 if (preferences.use_local_messages == 1) 1660 { 1661 temp = expresso_local_messages.list_local_folders(); 1662 for (var x in temp) 1663 { 1664 local_folders.push(temp[x][0]); 1665 } 1666 } 1682 local_folders.push(""); 1667 1683 1668 1684 this.sort = sort || this.sort || "SORTDATE"; … … 1711 1727 write_msg( "pesquisando " + labels[0] + link, true ); 1712 1728 var keepFilled = false; 1713 1729 //Inserida variável de controle para correta manipulação das mensagens locais 1730 var local_messages_link = true; 1714 1731 1715 1732 var handler = function( data ) … … 1723 1740 }; 1724 1741 1725 // Gears - local 1726 if ( local_folders.length > 0 ){ 1727 expresso_local_messages.setSortType('SORTDATE'); 1728 var tmp = expresso_local_messages.search( local_folders, "##ALL <=>" + url_encode(value) + "##" ); 1729 1730 if( tmp.length > 0 ) 1731 if( !allMsg['num_msgs'] ){ 1732 clean_msg(); 1733 not_found_corrent_folder = false; 1734 if(tmp.length) 1735 allMsg['gears_num_msgs'] = tmp.length; 1736 }else 1737 allMsg['gears_num_msgs'] = tmp.length; 1738 } 1739 1740 if( !allMsg['num_msgs'] && !url.length && not_found_corrent_folder){ 1741 clean_msg(); 1742 return EsearchE.viewLocalMessage(); 1743 } 1742 //MAILARCHIVER 1743 if(local_messages_link){ //Código executado apenas na primeira vez. 1744 if ( local_folders.length > 0 ){ 1745 expresso_mail_archive.search_queryresult = null; //Limpa a variável global para não exibir resultados anteriores 1746 expresso_mail_archive.search(local_folders, "##ALL <=>" + url_encode(value) + "##"); 1747 tmp = expresso_mail_archive.search_queryresult; 1748 if(tmp == null){ 1749 tmp = new Object(); 1750 tmp.length = 0; 1751 } 1752 } 1753 EsearchE.localResults = tmp.length; 1754 1755 if( tmp.length > 0 ) 1756 { 1757 allMsg['gears_num_msgs'] = tmp.length ; 1758 } 1759 } 1744 1760 1745 1761 if( allMsg['num_msgs'] ) … … 1754 1770 async: true, 1755 1771 success: function(data){ 1772 //Inserida variável de controle para correta manipulação das mensagens locais 1773 local_messages_link = false; 1756 1774 handler(data); 1757 1775 }, … … 1759 1777 connector.showProgressBar(); 1760 1778 }, 1761 1779 complete: function( jqXHR, settings ){ 1762 1780 connector.hideProgressBar(); 1763 1781 } … … 1769 1787 1770 1788 } 1771 1789 1772 1790 xhr = $.ajax({ 1773 1791 url: 'controller.php?action='+url.shift(), -
trunk/expressoMail1_2/js/wfolders.js
r6910 r7414 97 97 winSaveFile.next().css("background-color", "#E0EEEE"); 98 98 99 /*Insere a árvore de diretórios*/ 99 100 var foldersTree = jQuery("#foldertree-container-sendFileMessage") 100 101 .removeClass('empty-container') 101 .html(DataLayer.render(BASE_PATH + 'api/templates/foldertree.ejs', {folders: [cp_tree1, cp_tree2, [] ]})) 102 //Adicionado parametro cp_tree3 para mensagens locais (MailArchiver) 103 .html(DataLayer.render(BASE_PATH + 'api/templates/foldertree.ejs', {folders: [cp_tree1, cp_tree2, cp_tree3 ]})) 102 104 .find("#foldertree").treeview() 103 105 .click(function(event) -
trunk/expressoMail1_2/setup/phpgw_pt-br.lang
r7354 r7414 937 937 One of his messages can not be marked as read, because it contains a read confirmation. expressoMail1_2 pt-br Uma de suas mensagens não pode ser marcada como lida, pois contém uma confirmação de leitura. 938 938 of its messages could not be marked as read, because it contains a read confirmation. expressoMail1_2 pt-br de suas mensagens não puderam ser marcadas como lida, pois contém uma confirmação de leitura. 939 Cant share with yourself. expressoMail1_2 pt-br Não é possível compartilhar com você mesmo. 939 Cant share with yourself. expressoMail1_2 pt-br Não é possível compartilhar com você mesmo. 940 You can not remove the message with the preference 'Send to Trash' enabled. There is no permission to move messages to the trash folder. expressoMail1_2 pt-br Não é possível remover a mensagem com a preferencia 'Enviar para lixeira' ativada. Não existe permissão para mover mensagens para a pasta lixeira. 941 Moving message %1 of %2 expressoMail1_2 pt-br Movendo mensagem %1 de %2 942 All done. Message(s) moved successfully expressoMail1_2 pt-br Concluído. Mensagem(ns) movida(s) com sucesso. 943 Starting to move messages expressoMail1_2 pt-br Iniciando a movimentação de mensagens 944 MailArchiver does not seems to be running or installed at this workstation, local messages are disabled. Check it out! expressoMail1_2 pt-br O MailArchiver não parece estar rodando ou instalado nesta estação de trabalho, as mensagens locais estão desativadas. Verifique! 945 Starting to unarchive messages expressoMail1_2 pt-br Iniciando o desarquivamento de mensagens 946 Messages successfully unarchived expressoMail1_2 pt-br Mensagens desarquivadas com sucesso 947 All done. End of archive messages operation expressoMail1_2 pt-br Concluído. Operação de arquivamento encerrada 948 No messages were unarchived expressoMail1_2 pt-br Nenhuma mensagem foi desarquivada 949 Some messages weren't successfully unarchived expressoMail1_2 pt-br Algumas mensagens não puderam ser desarquivadas 950 Coudn't unarchive message expressoMail1_2 pt-br Não foi possível desarquivar mensagem 951 Message successfully unarchived expressoMail1_2 pt-br Mensagem desarquivada com sucesso 952 Unarchiving message %1 of %2 expressoMail1_2 pt-br Desarquivando mensagem %1 de %2 953 Message %1 of %2 successfully archived expressoMail1_2 pt-br Mensagem %1 de %2 arquivada com sucesso 954 Sorry, but Mail Archiver does not seems to be running or installed at this workstation. By now, we are turning off local messages! expressoMail1_2 pt-br Desculpe, mas o Mail Archiver não parece estar rodando ou instalado nesta estação de trabalho. De momento, estamos desativando as mensagens locais! 955 Sorry, but Mail Archiver still seems to be sleeping. Check out your system services! expressoMail1_2 pt-br Desculpe, mas o Mail Archiver parece continuar offline. Verifique os serviços do seu sistema! -
trunk/expressoMail1_2/templates/default/main.css
r7398 r7414 130 130 .context-menu-item.icon-delete-box{ background-image: url(images/user_delete.png); } 131 131 .context-menu-item.icon-quick-search-contact{ background-image: url(images/zoom.png); } 132 /* Airton. Adicionando o ícone da opção de arquivar do menu de contexto do expressoMail */ 133 .context-menu-item.icon-archive{ background-image: url(images/archive.png); } 132 134 133 135 … … 1586 1588 cursor: text; 1587 1589 } 1590 1591 /* Mail Archive */ 1592 .local-folder { 1593 1594 } 1595 1596 .local-connect { 1597 width: 16px; 1598 height: 16px; 1599 background: url("images/connect_delete.gif") no-repeat; 1600 display: inline-block; 1601 cursor: pointer; 1602 } 1603 1604 .local-admin { 1605 width: 16px; 1606 height: 16px; 1607 background: url("images/config.png") no-repeat; 1608 display: inline-block; 1609 cursor: pointer; 1610 } -
trunk/prototype/modules/attach_message/attach_message.js
r7048 r7414 268 268 269 269 success: function( data ){ 270 271 data = adaptOffline( data );272 273 270 var tree1 = new Array(); 274 271 var tree2 = new Array(); -
trunk/prototype/modules/mail/js/foldertree.js
r7091 r7414 4 4 var cp_tree1; 5 5 var cp_tree2; 6 //Marcosw inÃcio 7 var cp_tree3; 8 //Marcosw fim 9 var mail_archive_url; 6 10 function unorphanize(root, element) { 7 8 9 10 11 12 13 14 15 16 17 18 11 var ok = false; 12 var f = 0; 13 for (var i=0; i<root.length; i++) { 14 if (root[i].id == element.parentFolder) { 15 element.children = new Array(); 16 root[i].children.push(element); 17 return true; 18 } else if (ok = unorphanize(root[i].children, element)) { 19 break; 20 } 21 } 22 return ok; 19 23 } 20 24 25 function mount_children_localfolders_list(folder){ 26 folder.children = new Array(); 27 folder.id_search = folder.id; 28 folder.id = 'local_messages_'+folder.id, 29 folder.commonName = folder.name, 30 folder.parentId = folder.parentid, 31 folder.type = 'localFolder', 32 folder.name = folder.id, 33 folder.messageCount = { 34 total: folder.messages, 35 unseen: folder.unseen 36 } 37 38 if(folder.haschild){ 39 expresso_mail_archive.getFoldersList(folder.id_search); 40 folder.children = expresso_mail_archive.folders; 41 42 for(var i = 0; i < folder.children.length; i++){ 43 mount_children_localfolders_list(folder.children[i]); 44 } 45 46 } 47 } 48 21 49 function count_unseen_children(folder){ 22 if(folder.children.length){ 23 for(var i=0; i< folder.children.length; i++){ 24 if(folder.children[i].children.length) 25 folder.children[i]['children_unseen'] = (folder.children[i]['children_unseen'] ? folder.children[i]['children_unseen'] : 0) + count_unseen_children(folder.children[i]); 26 27 folder['children_unseen'] = (folder['children_unseen'] ? folder['children_unseen'] : 0)+ (folder.children[i]['children_unseen'] ? folder.children[i]['children_unseen'] : 0) + parseInt(folder.children[i].messageCount.unseen); 28 } 29 return folder['children_unseen']; 30 }else{ 31 return parseInt(folder.messageCount.unseen); 32 } 50 51 if(folder.children.length){ 52 for(var i=0; i< folder.children.length; i++){ 53 54 if(folder.children[i].children.length) 55 folder.children[i]['children_unseen'] = (folder.children[i]['children_unseen'] ? folder.children[i]['children_unseen'] : 0) + count_unseen_children(folder.children[i]); 56 57 folder['children_unseen'] = (folder['children_unseen'] ? folder['children_unseen'] : 0)+ (folder.children[i]['children_unseen'] ? folder.children[i]['children_unseen'] : 0) + parseInt(folder.children[i].messageCount.unseen); 58 } 59 return folder['children_unseen']; 60 } else { 61 return parseInt(folder.messageCount.unseen); 62 } 33 63 } 34 64 35 65 function valid_tabs(children_of_this_folder, folder_to_move){ 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 66 var borders_open = $("#border_tr").children(); 67 68 var error = false; 69 for(var i = 1; i <= borders_open.length -2; i ++){ 70 //VERIFICA A CADA FILHO DA PASTA SE ESTA eventNSAGEM E DESTA PASTA 71 $.each(children_of_this_folder, function(index, value){ 72 if($(children_of_this_folder[index]).attr('id') == openTab.imapBox[$(borders_open[i]).find("input[type=hidden]").attr("name")]){ 73 error = true; 74 write_msg(get_lang("One or more messages from any sub-folder are open")); 75 return error; 76 77 } 78 }); 79 if(error){ 80 return error; 81 } 82 //VERIFICA SE EXISTE NA PASTA A SER MOVIDA 83 if(openTab.imapBox[$(borders_open[i]).find("input[type=hidden]").attr("name")] == folder_to_move){ 84 error = true; 85 write_msg(get_lang("One or more messages from this folder are open")); 86 return error; 87 } 88 } 59 89 } 60 90 61 91 function draw_new_tree_folder(callback){ 62 63 var folders = DataLayer.get("folder", true); 64 65 if(!selected){ 66 selected = "INBOX"; 67 } 68 /* 69 if( folders ) 70 { 71 folders = $.map( folders, function( folder ){ 72 return { 73 id: folder.folder_id, 74 commonName: folder.folder_name, 75 parentFolder: folder.folder_parent === "root" ? "" : folder.folder_parent, 76 messageCount: { total : '', unseen : '0' } 77 }; 78 }); 79 } 80 else 81 folders = DataLayer.get("folder", true); 82 */ 83 var tree1 = new Array(); 84 var tree2 = new Array(); 85 var tree3 = new Array(); 86 for (var i=0; i<folders.length; i++) { 87 if (/^INBOX/.test(folders[i].id)) { 88 if (!unorphanize(tree1, folders[i])) { 89 folders[i].children = new Array(); 90 tree1.push(folders[i]); 91 } 92 } 93 else if (/^user/.test(folders[i].id)) { 94 if (!unorphanize(tree2, folders[i])) { 95 folders[i].children = new Array(); 96 tree2.push(folders[i]); 97 } 98 } 99 else if (/^local_messages/.test(folders[i].id)) { 100 if (!unorphanize(tree3, folders[i])) { 101 folders[i].children = new Array(); 102 tree3.push(folders[i]); 103 } 104 } 105 } 106 107 for(var i =0; i<tree1.length; i++){ 108 count_unseen_children(tree1[i]); 109 } 110 for(var i =0; i<tree2.length; i++){ 111 count_unseen_children(tree2[i]); 112 } 113 for(var i =0; i<tree3.length; i++){ 114 count_unseen_children(tree3[i]); 115 } 116 cp_tree1 = tree1; 117 cp_tree2 = tree2; 118 var shared_acls = {}; 119 120 $.each(cp_tree2, function(index, value){ 121 shared_acls[value.id] = value.acl_share; 122 }); 123 124 $("#content_folders").removeClass("menu-degrade").parent().removeClass("image-menu"); 125 var html = DataLayer.render('../prototype/modules/mail/templates/detailedfoldertree.ejs', {folders: [tree1, tree2, tree3]}); 126 var folders_html = $("#content_folders").html(html).find(".mainfoldertree").treeview({ 127 persist: "cookie", 128 animated: "fast" 129 }).find(".folder").unbind("click").click(function(event){ 130 131 // MUDANÇA DE PASTAS! 132 var target = $(this); 133 134 if($(".folders-loading").length) 135 return; 136 137 if($(event.target).parent().is(".float-menu")) 138 return; 139 140 if( target.is('.collapsable-hitarea, .expandable-hitarea, .lastCollapsable-hitarea, .lastExpandable-hitarea, .treeview ,.folder_unseen,.ui-icon, .float-menu, .new_folder, .folders-loading, .head_folder, .shared-folders') ) 141 return; 142 143 if( target.parent().find(".new_folder").length) 144 return; 145 146 if( !target.attr('id') ) 147 target = target.parent(); 148 if (target[0] == $(".mainfoldertree")[0]) return; 149 var uiId = target.attr('id'); 150 var child = target.find('.folder'); 151 152 if(!target.is('.mainfoldertree > .expandable-hitarea, .mainfoldertree > .collapsable-hitarea')){ 153 $('.filetree span.folder.selected').removeClass('selected'); 154 $(target).children('.folder').addClass('selected'); 155 } 156 $(this).addClass("folders-loading"); 157 selected = target.attr('id'); 158 change_folder(target.attr('id'), child.attr('title')); 159 160 $.ajax({ 161 url : "controller.php?"+ $.param( { action: "$this.imap_functions.get_folders_list", folder: target.attr('id') } ), 162 success : function(data){ 163 data = connector.unserialize(data); 164 165 if(data) 166 build_quota(data); 167 } 168 }); 169 170 }).filter('.followup-messages').click(function(event, ui){ 171 search_emails("UNDELETED KEYWORD \"$Followupflagged\""); 172 }).end().end(); 173 174 folders_html.find('[id="'+selected+'"]').children().addClass("selected"); 175 $(".folder").not(".head_folder").not(".shared-folders").parent().find(".folder").not(".head_folder,.inbox,.drafts,.sent,.spam,.trash").draggable({ 176 // DRAG DE PASTAS 177 start : function(){ 178 $(this).css("color", "gray"); 179 }, 180 stop : function(){ 181 $(this).css("color", ""); 182 }, 183 revert: "invalid", 184 helper: function(event){ 185 if($.trim(($(this).text().split("["))[0]).length > 18) 186 return $(DataLayer.render('../prototype/modules/mail/templates/draggin_box.ejs', {texto : (($(this).text().split("["))[0]).substring(0,18) + "...", type: "folder"})); 187 return $(DataLayer.render('../prototype/modules/mail/templates/draggin_box.ejs', {texto : (($(this).text().split("["))[0]), type: "folder"})); 188 }, 189 delay: 150, 190 refreshPositions: true, 191 zIndex : 2700, 192 //scroll: true, 193 //scrollSensitivity: 100, 194 //scrollSpeed: 100, 195 containment: "#divAppbox" 196 }).end().droppable({ 197 //DROP DE PASTAS 198 over : function(a, b){ 199 //INICIO : SE A PASTA CONTER FILHAS EXPANDE 200 over = $(this); 201 $(this).addClass("folder-over"); 202 if(($(this)[0] != $(this).parent().find(".head_folder")[0])) 203 if($(this).prev()[0]) 204 if($(this).parent().find(".expandable-hitarea")[0] == $(this).prev()[0]){ 205 setTimeout(function(){ 206 if(over.hasClass("folder-over")) 207 over.prev().trigger("click"); 208 }, 500); 209 210 } 211 //FIM : SE A PASTA CONTER FILHAS EXPANDE 212 213 //SETA BORDA EM VOLTA DA PASTA 214 }, 215 out : function(){ 216 //RETIRA BORDA EM VOLTA DA PASTA 217 $(this).removeClass("folder-over"); 218 }, 219 drop : function(event, ui){ 220 $(this).removeClass("folder-over"); 221 if($(this).parent().attr('id') == undefined){ 222 var folder_to = 'INBOX'; 223 var to_folder_title = get_lang("Inbox"); 224 }else{ 225 var folder_to = $(this).parent().attr('id'); 226 var to_folder_title = $(this).attr('title'); 227 } 228 var folder_to_move = ui.draggable.parent().attr('id'); 229 var border_id = ui.draggable.find("input[type=hidden]").attr("name"); 230 // eventnsagens : SE O DROP VIER DA LISTA DE eventNSAGENS : 231 if(folder_to_move == "tbody_box"){ 232 move_msgs2(get_current_folder(), 'selected', 0, folder_to, to_folder_title,true); 233 return refresh(); 234 } 235 //SE FOR DE UMA PESQUISA RAPIDA 236 else if(ui.draggable.parents('[id^="content_id_"]')[0]){ 237 move_search_msgs("content_id_"+border_id, folder_to, to_folder_title); 238 return refresh(); 239 } 240 // eventnsagens : SE O DROP VIER DE UMA ABA ABERTA 241 else if(folder_to_move == "border_tr"){ 242 var id_msg = border_id.split("_")[0]; 243 folder = $("#input_folder_"+border_id+"_r")[0] ? $("#input_folder_"+border_id+"_r").val() : (openTab.imapBox[border_id] ? openTab.imapBox[border_id]:get_current_folder()); 244 alternate_border(border_id); 245 move_msgs2(folder, id_msg, border_id, folder_to, to_folder_title,true); 246 return refresh(); 247 } 248 // SE O DROP VIER DA LISTA DE PASTAS 249 else{ 250 var folder_to_exist = folder_to_move.split(cyrus_delimiter); 251 folder_to_exist = folder_to+cyrus_delimiter+folder_to_exist[folder_to_exist.length-1]; 252 253 //VERIFICA SE EXISTE UMA eventNSAGENS ABERTA NESTA PASTA E NAS SUAS FILHAS 254 255 if(valid_tabs(ui.draggable.parent().find("li"), folder_to_move)){ 256 return; 257 } 258 //FIM : VERIFICA SE EXISTE UMA eventNSAGENS ABERTA NESTA PASTA E NAS SUAS FILHAS; 259 260 // VALIDA SE O USUARIO ESTA TENTANDO MOVER A PASTA PARA O eventSMO LOCAL 261 if(folder_to_exist == folder_to_move){ 262 return write_msg(get_lang("Thie folder is already in this place")); 263 } 264 265 // VALIDA SE O USUARIO ESTA TENTANDO MOVER A PASTA ABERTA NO momentO 266 if(folder_to_move == get_current_folder()){ 267 return write_msg(get_lang("It's not possible move this folder, because it is being used in the moment!")); 268 } 269 270 // VALIDA SE O USUARIO ESTA TENTANDO MOVER UMA PASTA FILHA DA PASTA ABERTA NO momentO 271 if(ui.draggable.parent().find(".selected")[0]){ 272 return write_msg(get_lang("It's not possible move this folder, because its subfolder is being used in the moment!")); 273 } 274 275 // VALIDA SE O USUARIO ESTA TENTANDO MOVER UMA PASTA PAI PARA DENTRO DE UMA FILHA 276 if(ui.draggable.parent().find('[id="'+folder_to+'"]')[0]){ 277 return write_msg(get_lang("It's not possible to move this folder to its subfolders!")); 278 } 279 280 if($('[id="'+folder_to_exist+'"]').length){ 281 return write_msg(get_lang("Can not move this folder to this location, because the target has already a folder with this name")); 282 } 283 284 $(this).addClass("folders-loading"); 285 286 $.ajax({ 287 url : "controller.php?"+ $.param( { action: "$this.imap_functions.move_folder", folder_to_move: folder_to_move, folder_to: folder_to } ), 288 success : function(data){ 289 cExecute("$this.imap_functions.get_folders_list&onload=true", update_menu); 290 data = connector.unserialize(data); 291 if(data == "Permission denied"){ 292 write_msg(get_lang("Permission denied")); 293 }else if(data){ 294 write_msg(get_lang("The folder was successfully moved")); 295 } 296 else{ 297 write_msg(get_lang("ERROR moving your folder.")); 298 } 299 } 300 }); 301 } 302 } 303 }); 304 $(".folder").not(".shared-folders").parent().find(".folder").hover( 305 function(){ 306 //CASO A LI NÃO TENHA UM eventNU FLUTUANTE AINDA, O eventNU É ADICIONADO! 307 if(!$(this).children(":last").hasClass("float-menu") && !$(this).children(":last").hasClass("new_folder")){ 308 var folder_ = $(this); 309 var folder_name; 310 var shared = { 311 head : false, 312 valid : false 313 }; 314 if(folder_.parent().attr('id')){ 315 folder_name = folder_.parent().attr('id').split(cyrus_delimiter); 316 folder_name = folder_name[folder_name.length -1]; 317 shared.valid = folder_.parent().attr('id').search("user/") == 0 ? true : false; 318 }else 319 folder_name = "Root"; 320 321 if(shared.valid){ 322 shared.head = folder_.parent().attr('id').split(cyrus_delimiter).length == 2 ? true : false; 323 var folder_name_parts = folder_.parent().attr('id').split(cyrus_delimiter); 324 var acls = shared_acls[folder_name_parts[0]+cyrus_delimiter+folder_name_parts[1]]; 325 326 } 327 328 html = DataLayer.render("../prototype/modules/mail/templates/float_folder_menu.ejs", {name_folder : folder_name, flag : shared, acl : acls}); 329 //FUNÇÃO DO eventNU FLUTUANTE EDITAR < BEGIN 330 var esc = false; 331 $(folder_).append(html).find(".float-menu-edit").click(function(){ 332 var folder_id = $(this).parents(".closed:first").attr('id'); 333 var name = $.trim($(this).parents(".closed:first").find("span:first").text().split("[")[0]); 334 if($(this).parents(".closed:first").find("span:first").hasClass("selected")) 335 return write_msg(get_lang("It's not possible rename this folder, because it is being used in the moment!")); 336 if($(this).parents(".closed:first").find(".selected").length) 337 return write_msg(get_lang("It's not possible rename this folder, because its subfolder is being used in the moment!")); 338 if(valid_tabs($(this).parents("li:first").find("li"), folder_id)) 339 return; 340 $(this).parents(".closed:first").find("span:first").empty().append("<input class='new_folder folder' type='text' maxlength='100'></input>"); 341 $(".new_folder").focus().keydown(function(event){ 342