Changeset 7907


Ignore:
Timestamp:
02/22/13 12:37:16 (6 years ago)
Author:
marcosw
Message:

Ticket #3331 - Melhoria inserida no repositório trunk

Location:
trunk
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • trunk/expressoMail1_2/inc/class.imap_functions.inc.php

    r7902 r7907  
    21742174        function delete_msgs($params) 
    21752175        { 
    2176  
    21772176                $folder = $params['folder']; 
    21782177                $folder =  mb_convert_encoding($folder, "UTF7-IMAP","ISO-8859-1"); 
     2178 
    21792179                $msgs_number = explode(",",$params['msgs_number']); 
     2180 
    21802181                if(array_key_exists('border_ID' ,$params)) 
    21812182                $border_ID = $params['border_ID']; 
     
    21932194                $mbox_stream = @imap_open("{".$this->imap_server.":".$this->imap_port.$this->imap_options."}".$folder, $this->username, $this->password) or die(serialize(array('imap_error' => $this->parse_error(imap_last_error())))); 
    21942195 
    2195                 foreach ($msgs_number as $msg_number) 
     2196         
     2197 
     2198        foreach ($msgs_number as $msg_number) 
    21962199                { 
    21972200                        if (imap_delete($mbox_stream, $msg_number, FT_UID)); 
     
    26812684                return $return; 
    26822685        } 
    2683          
     2686 
     2687    function get_info_msg_archiver($params){ 
     2688         $folder = "INBOX/Trash"; 
     2689         $mbox_stream = $this->open_mbox($folder); 
     2690 
     2691        foreach($params['idMsgs'] as $i => $id){ 
     2692            $name = imap_headerinfo($mbox_stream, imap_msgno($mbox_stream ,$id)); 
     2693            $return[] =  array( 
     2694                'uid' => $id, 
     2695                'folder' => "archiver", 
     2696                'type' => "imapMSG", 
     2697                'name' => base64_encode($name->subject.".eml") 
     2698            ); 
     2699        } 
     2700         
     2701        return json_encode($return); 
     2702    } 
     2703 
    26842704        function send_mail($params) { 
    26852705            require_once dirname(__FILE__) . '/../../services/class.servicelocator.php'; 
     
    27522772            $encrypt = $params['input_return_cripto']; 
    27532773            $signed = $params['input_return_digital']; 
     2774 
     2775 
     2776            //$params['attachments'] = $params['attachments']['imap']; 
    27542777 
    27552778                        $params['attachments'] = mb_convert_encoding($params['attachments'], "UTF7-IMAP","UTF-8, ISO-8859-1, UTF7-IMAP"); 
     
    29042927                                        $arr_new_folder['base_path'] = $base_path; 
    29052928 
    2906                                         $this->create_mailbox($arr_new_folder);                                  
     2929                                        $this->create_mailbox($arr_new_folder);  
    29072930                                        $has_new_folder = true; 
    29082931                    $folder = $newfolder; 
     
    29532976 
    29542977            $header = $this->get_header($msg_numb); 
     2978 
    29552979            $header_ = imap_fetchheader($this->mbox, $msg_numb, FT_UID); 
    29562980            $pattern = '/^[ \t]*Disposition-Notification-To:.*/mi'; 
     
    30553079            foreach ($attachment as &$value)  
    30563080            { 
     3081                /*Volta aqui*/ 
    30573082                if((int)$value > 0) //BD attachment 
    30583083                { 
     3084                    ob_start(); 
    30593085                     $att = Controller::read(array('id'=> $value , 'concept' => 'mailAttachment')); 
    30603086 
     
    30723098                else //message attachment 
    30733099                { 
     3100 
    30743101                    $value = json_decode($value, true); 
     3102 
     3103                    if($value["folder"] == "archiver"){ 
     3104                        $value['folder'] = "INBOX/Trash"; 
     3105                    } 
    30753106 
    30763107                    switch ($value['type']) { 
     
    30803111                                if(strstr($body,'src="./inc/get_archive.php?msgFolder='.$value['folder'].'&msgNumber='.$value['uid'].'&indexPart='.$value['part'].'"') !== false)//Embeded IMG 
    30813112                                {     
    3082                                     $body = str_ireplace('src="./inc/get_archive.php?msgFolder='.$value['folder'].'&msgNumber='.$value['uid'].'&indexPart='.$value['part'].'"' , 'src="'.$att['name'].'"', $body); 
     3113                                    $body = str_ireplace('src="./inc/get_archive.php?msgFolder='.$value['folder'].  '&msgNumber='.$value['uid'].'&indexPart='.$value['part'].'"' , 'src="'.$att['name'].'"', $body); 
    30833114                                    $mailService->addStringImage($att['source'], $att['type'],mb_convert_encoding($att['name'], 'ISO-8859-1' , 'UTF-8,ISO-8859-1') ); 
    30843115                                } 
     
    30913122                            case 'imapMSG': 
    30923123                                $mbox_stream = $this->open_mbox(mb_convert_encoding($value['folder'] , 'ISO-8859-1' , 'UTF7-IMAP')); 
     3124 
    30933125                                $rawmsg = $this->getRawHeader($value['uid']) . "\r\n\r\n" . $this->getRawBody($value['uid']); 
    30943126                                 
    30953127                                $mailService->addStringAttachment($rawmsg, mb_convert_encoding(base64_decode($value['name']), 'ISO-8859-1' , 'UTF-8,ISO-8859-1'), 'message/rfc822', '7bit', 'attachment' ); 
     3128                                /*envia o anexo para o email*/ 
     3129 
    30963130                                $message_size_total += mb_strlen($rawmsg); //Adiciona o tamanho do anexo a variavel que controlao tamanho da msg. 
    30973131                                unset($rawmsg); 
     
    31763210            { 
    31773211                $this->rfc2397ToEmbeddedAttachment($mailService , $body); 
     3212                 
     3213 
    31783214 
    31793215                $defaultStyle = ''; 
     
    48634899        $error = array(); 
    48644900 
     4901 
     4902 
    48654903        foreach($sources as $index=>$src) 
    48664904        { 
    48674905            if($src!="") 
    48684906            { 
     4907                     
     4908                 
     4909 
    48694910                //If it is a MailArchiver incomming data 
    48704911                if($params['madata']) 
     
    48784919                                $insert = $this->insert_email($source,$dest_folder,$timestamps[$index],$flags[$index]); 
    48794920 
     4921                //volta aqui 
     4922                $return['idsMsg'] = $insert['msg_no']; 
     4923 
    48804924                if($insert['error']) 
    48814925                { 
     
    48844928                else  
    48854929                { 
     4930                    // volta aqui 
    48864931                    $archived[] = $ids[$index]; 
    48874932                } 
  • trunk/expressoMail1_2/js/abas.js

    r7889 r7907  
    708708function listAttachment(ID) 
    709709{ 
    710    return (typeof(msgAttachments[ID]) == 'undefined') ? '' : JSON.stringify(msgAttachments[ID]);  
    711 } 
    712  
     710    var imap     = new Array(); 
     711    var archiver = new Array(); 
     712     
     713    if(typeof msgAttachments[ID] == "undefined"){ 
     714        return ""; 
     715    } 
     716 
     717    $.each(msgAttachments[ID], function(i, each){ 
     718        
     719         if(typeof(each) == "undefined")  return true; 
     720         
     721       if($.parseJSON(each).folder.indexOf("local_messages_") != -1){ 
     722            archiver.push($.parseJSON(each)); 
     723       } else { 
     724            imap.push(each); 
     725       } 
     726    }); 
     727 
     728    context = { 
     729        "imap" : imap, 
     730        "archiver" : archiver 
     731    }; 
     732 
     733   return (typeof(msgAttachments[ID]) == 'undefined') ? '' : context; 
     734} 
     735 
  • trunk/expressoMail1_2/js/draw_api.js

    r7899 r7907  
    47654765    att.uid = message_number;  
    47664766    att.type = 'imapMSG';  
    4767     att.name = Base64.encode(onceOpenedHeadersMessages[folder_name][message_number].subject + '.eml');  
     4767    att.name = Base64.encode(onceOpenedMessages[folder_name][message_number].subject + '.eml');  
    47684768    var idATT = JSON.stringify(att);  
    47694769    addAttachment(ID, idATT);  
    47704770    var attach = {};  
    4771     attach.fileName = onceOpenedHeadersMessages[folder_name][message_number].subject + '.eml';  
    4772     attach.fullFileName = onceOpenedHeadersMessages[folder_name][message_number].subject + '.eml';  
     4771    attach.fileName = onceOpenedMessages[folder_name][message_number].subject + '.eml';  
     4772    attach.fullFileName = onceOpenedMessages[folder_name][message_number].subject + '.eml';  
    47734773    if(attach.fileName.length > 20)   
    47744774    {  
     
    47784778    attach.error = false;  
    47794779    attach.OK = true;  
    4780     attach.fileSize = formatBytes(onceOpenedHeadersMessages[folder_name][message_number].Size);  
     4780    attach.fileSize = formatBytes(onceOpenedMessages[folder_name][message_number].size);  
    47814781    var upload = $(DataLayer.render("../prototype/modules/mail/templates/attachment_add_itemlist.ejs", {  
    47824782        file: attach  
  • trunk/expressoMail1_2/js/mail_archiver.js

    r7685 r7907  
    575575} 
    576576 
    577  
    578  
    579  
    580 /** 
    581  *Unarchieve Message 
    582  * 
    583  *@author Cassiano Dal Pizzol [cassiano.dalpizzol@serpro.gov.br] 
    584  * 
    585  *@param folder Original Folder of the message 
    586  *@param new_folder The new folder of the message 
    587  *@param msgs_number id of the messages 
    588  */ 
    589 MailArchiver.prototype.unarchieve = function (folder, new_folder, msgs_number){ 
    590     try{  
    591         write_msg(get_lang("Starting to unarchive messages")); 
     577MailArchiver.prototype.unarchieveToAttach = function (folder, new_folder, msgs_number){ 
     578    try{ 
     579 
     580        if(typeof(expresso_mail_archive.idMsgsToAttach) == "undefined"){ 
     581            expresso_mail_archive.idMsgsToAttach = new Array(); 
     582        } 
     583        //write_msg(get_lang("Starting to unarchive messages")); 
    592584        expresso_mail_archive.isArchiveOperation = true; 
    593585        if(currentTab.toString().indexOf("_r") != -1){ 
     
    599591                 
    600592        if (parseInt(msgs_number) > 0 || msgs_number.length > 0){        
    601             expresso_mail_archive.message_list = new Array(); 
    602             expresso_mail_archive.CreateMessageList(msgs_number); 
    603             if((expresso_mail_archive.message_list.length > 0) && (expresso_mail_archive.message_list[0] != '')) { 
     593            
     594            expresso_mail_archive.messageToAttach = msgs_number; 
     595            if(expresso_mail_archive.messageToAttach) { 
     596                 
    604597                expresso_mail_archive.unarchivecounter = 0; 
    605598                expresso_mail_archive.unarchive_error_counter=0; 
     
    608601                (new_folder != null)?expresso_mail_archive.unarchievenewfolder = new_folder:expresso_mail_archive.unarchievenewfolder='INBOX'; 
    609602                 
    610                 expresso_mail_archive.unarchieveHandler(); 
     603                expresso_mail_archive.unarchieveToAttachHandler(); 
    611604                 
    612605                if(currentTab.toString().indexOf("_r") != -1){ 
     
    628621} 
    629622 
    630 /** 
    631  * 
    632  *Unarchieve Message Handler 
    633  * 
    634  *@author Cassiano Dal Pizzol [cassiano.dalpizzol@serpro.gov.br] 
    635  * 
    636  **/ 
    637 MailArchiver.prototype.unarchieveHandler = function(){ 
    638     try{ 
    639         var email = mail_archive_protocol+'://'+mail_archive_host+':'+mail_archive_port+'/mail/' + expresso_mail_archive.session.id +'/'+ expresso_mail_archive.folder.path + '/'+ expresso_mail_archive.message_list[expresso_mail_archive.unarchivecounter] + '.eml';     
     623MailArchiver.prototype.unarchieveToAttachHandler = function(){ 
     624    try{ 
     625        var email = mail_archive_protocol+'://'+mail_archive_host+':'+mail_archive_port+'/mail/' + expresso_mail_archive.session.id +'/'+ expresso_mail_archive.folder.path + '/'+ expresso_mail_archive.messageToAttach + '.eml';     
    640626     
    641627        //Creates a new object to unarchive messages. It's a CXF Add-on CORS component 
     
    647633            for (var w=0; w < expresso_mail_archive.allcompletemessagesbyfolder.length; w++){ 
    648634                                 
    649                 if(expresso_mail_archive.allcompletemessagesbyfolder[w]["msg_number"] == expresso_mail_archive.message_list[expresso_mail_archive.unarchivecounter]){ 
     635                if(expresso_mail_archive.allcompletemessagesbyfolder[w]["msg_number"] == expresso_mail_archive.messageToAttach){ 
    650636                    var timestamp = expresso_mail_archive.allcompletemessagesbyfolder[w]["timestamp"]; 
    651637                     
     
    702688                } 
    703689            } 
     690            var id = expresso_mail_archive.messageToAttach; 
     691            var source =  encodeURIComponent(UnarchiveReqHandler.handler.responseText) + "#@#@#@"; 
     692            var params =  
     693            "&folder="      + escape(expresso_mail_archive.unarchievenewfolder) + 
     694            "&source="      + source +  
     695            "&timestamp="   + timestamp +  
     696            "&madata=true"  +  
     697            "&flags="       + flags + 
     698            "&id="          + id; 
     699 
     700 
     701            var handler_unarchive = function(data){ 
     702                expresso_mail_archive.unarchieveToAttachController(data); 
     703            } 
     704            write_msg(get_lang("Please, Wait the messages from archieve be ready.")); 
     705             
     706             $.ajax({ 
     707                url: "controller.php?action=$this.imap_functions.unarchive_mail", 
     708                success: function(data){ 
     709                    data = connector.unserialize(data); 
     710                    expresso_mail_archive.idMsgsToAttach.push(data.idsMsg); 
     711                    handler_unarchive(data); 
     712                }, 
     713                async: false, 
     714                data:  params, 
     715                type: 'POST', 
     716                 
     717            }); 
     718 
     719        } 
     720 
     721         
     722        UnarchiveReqHandler.handler.open("GET", email, true); 
     723        if(UnarchiveReqHandler.handler.overrideMimeType){ 
     724            UnarchiveReqHandler.handler.overrideMimeType("message/rfc822; charset=windows-1252");  
     725        } 
     726        UnarchiveReqHandler.handler.send(); 
     727    } 
     728    catch(e){ 
     729        write_msg(get_lang('Unarchive error: ' + e)); 
     730    } 
     731} 
     732 
     733MailArchiver.prototype.unarchieveToAttachController = function(data){ 
     734     
     735    if (data){ 
     736        if (data.error != "") { 
     737            expresso_mail_archive.unarchive_error_counter++; 
     738        } 
     739         
     740    } 
     741} 
     742 
     743 
     744/** 
     745 *Unarchieve Message 
     746 * 
     747 *@author Cassiano Dal Pizzol [cassiano.dalpizzol@serpro.gov.br] 
     748 * 
     749 *@param folder Original Folder of the message 
     750 *@param new_folder The new folder of the message 
     751 *@param msgs_number id of the messages 
     752 */ 
     753MailArchiver.prototype.unarchieve = function (folder, new_folder, msgs_number){ 
     754    try{  
     755        write_msg(get_lang("Starting to unarchive messages")); 
     756        expresso_mail_archive.isArchiveOperation = true; 
     757        if(currentTab.toString().indexOf("_r") != -1){ 
     758            msgs_number = currentTab.toString().substr(0,currentTab.toString().indexOf("_r")); 
     759        } 
     760 
     761        if(!msgs_number) 
     762            msgs_number = get_selected_messages();         
     763                 
     764        if (parseInt(msgs_number) > 0 || msgs_number.length > 0){        
     765            expresso_mail_archive.message_list = new Array(); 
     766            expresso_mail_archive.CreateMessageList(msgs_number); 
     767            if((expresso_mail_archive.message_list.length > 0) && (expresso_mail_archive.message_list[0] != '')) { 
     768                expresso_mail_archive.unarchivecounter = 0; 
     769                expresso_mail_archive.unarchive_error_counter=0; 
     770                expresso_mail_archive.getFolderInfo(folder.replace("local_messages_","")); 
     771                expresso_mail_archive.unarchievefolder = expresso_mail_archive.folder.name; 
     772                (new_folder != null)?expresso_mail_archive.unarchievenewfolder = new_folder:expresso_mail_archive.unarchievenewfolder='INBOX'; 
     773                 
     774                expresso_mail_archive.unarchieveHandler(); 
     775                 
     776                if(currentTab.toString().indexOf("_r") != -1){ 
     777                    delete_border(currentTab,'false');   
     778                } 
     779            } 
     780            else{ 
     781                write_msg(get_lang('No selected message.')); 
     782            } 
     783        }                                
     784        else 
     785            write_msg(get_lang('No selected message.')); 
     786         
     787        clear_selected_messages(); 
     788    } 
     789    catch (e){ 
     790        write_msg(get_lang('Unarchive error: ' + e)); 
     791    } 
     792} 
     793 
     794/** 
     795 * 
     796 *Unarchieve Message Handler 
     797 * 
     798 *@author Cassiano Dal Pizzol [cassiano.dalpizzol@serpro.gov.br] 
     799 * 
     800 **/ 
     801MailArchiver.prototype.unarchieveHandler = function(){ 
     802    try{ 
     803        var email = mail_archive_protocol+'://'+mail_archive_host+':'+mail_archive_port+'/mail/' + expresso_mail_archive.session.id +'/'+ expresso_mail_archive.folder.path + '/'+ expresso_mail_archive.message_list[expresso_mail_archive.unarchivecounter] + '.eml';     
     804     
     805        //Creates a new object to unarchive messages. It's a CXF Add-on CORS component 
     806        var UnarchiveReqHandler = new cxf_cors_request_object(); 
     807        UnarchiveReqHandler.init(); 
     808 
     809        //Both XDomainRequest and XMLHttpRequest L2 supports onload event 
     810        UnarchiveReqHandler.handler.onload = function(){             
     811            for (var w=0; w < expresso_mail_archive.allcompletemessagesbyfolder.length; w++){ 
     812                                 
     813                if(expresso_mail_archive.allcompletemessagesbyfolder[w]["msg_number"] == expresso_mail_archive.message_list[expresso_mail_archive.unarchivecounter]){ 
     814                    var timestamp = expresso_mail_archive.allcompletemessagesbyfolder[w]["timestamp"]; 
     815                     
     816                    //Get local tagged message data 
     817                    var flags = new String(""); 
     818                     
     819                    //Forwarded is special one: marks as "answered" and "draft" 
     820                    if(expresso_mail_archive.allcompletemessagesbyfolder[w]["Forwarded"]){ 
     821                        if(expresso_mail_archive.allcompletemessagesbyfolder[w]["Forwarded"] == 'F') 
     822                            flags += 'A:X'+':';                                   
     823                    } 
     824                    else{ 
     825                        //Answered tag 
     826                        if(expresso_mail_archive.allcompletemessagesbyfolder[w]["Answered"]) 
     827                            if(expresso_mail_archive.allcompletemessagesbyfolder[w]["Answered"] == 'A') 
     828                                flags += 'A'+':'; 
     829                            else 
     830                                flags += ':'; 
     831                        else 
     832                            flags += ':';                     
     833 
     834                        //Draft tag 
     835                        if(expresso_mail_archive.allcompletemessagesbyfolder[w]["Draft"]) 
     836                            if(expresso_mail_archive.allcompletemessagesbyfolder[w]["Draft"] == 'X') 
     837                                flags += 'D'+':';                     
     838                            else 
     839                                flags += ':'; 
     840                        else 
     841                            flags += ':'; 
     842                    } 
     843                     
     844                    //Flagged tag 
     845                    if(expresso_mail_archive.allcompletemessagesbyfolder[w]["Flagged"]) 
     846                        if(expresso_mail_archive.allcompletemessagesbyfolder[w]["Flagged"] == 'F') 
     847                            flags += 'F'+':';                                         
     848                        else 
     849                            flags += ':'; 
     850                    else 
     851                        flags += ':'; 
     852                     
     853                    //Unseen tag 
     854                    if(expresso_mail_archive.allcompletemessagesbyfolder[w]["Unseen"]) 
     855                        if(expresso_mail_archive.allcompletemessagesbyfolder[w]["Unseen"] == 'U') 
     856                            flags += 'U';      
     857                        else 
     858                            flags += ''; 
     859                    else 
     860                        flags += ''; 
     861                     
     862                    //Imap tag hash id 
     863                    flags += "#@#@#@";                     
     864                     
     865                    break; 
     866                } 
     867            } 
    704868            var id = expresso_mail_archive.message_list[expresso_mail_archive.unarchivecounter]; 
    705869            var source =  encodeURIComponent(UnarchiveReqHandler.handler.responseText) + "#@#@#@"; 
     
    717881            write_msg(get_lang('Unarchiving message %1 of %2', (expresso_mail_archive.unarchivecounter + 1), expresso_mail_archive.message_list.length)); 
    718882             
    719             cExecute ("$this.imap_functions.unarchive_mail&", handler_unarchive, params); 
     883            //cExecute ("$this.imap_functions.unarchive_mail&", handler_unarchive, params); 
     884 
     885            $.ajax({ 
     886                url: "controller.php?action=$this.imap_functions.unarchive_mail", 
     887                data:  params, 
     888                type: 'POST', 
     889                async: false, 
     890                success: function(data){ 
     891                    handler_unarchive(connector.unserialize(data)); 
     892                }, 
     893            }); 
     894 
     895 
     896 
    720897        } 
    721898         
     
    13981575} 
    13991576 
     1577 
     1578MailArchiver.prototype.getMessagesByFolder = function(folderid, searchType){ 
     1579    try{ 
     1580        if(searchType == "ALL") 
     1581            var query_messages = '{"query":{"folder":[{"@id":"'+folderid+'"}], "order":[{"@asc":"date"}]}}'; 
     1582        else 
     1583            var query_messages = '{"query":{"folder":[{"@id":"'+folderid+'"}], "tags":[{"@contains":"'+searchType+'"}], "order":[{"@asc":"date"}]}}'; 
     1584        ArchiveServices.listMessages(expresso_mail_archive.getMessagesByFolderOperationOK, expresso_mail_archive.getMessagesByFolderOperationFailure, expresso_mail_archive.session.id, query_messages); 
     1585    } 
     1586    catch (e){ 
     1587        expresso_mail_archive.getFaultInfo(); 
     1588    } 
     1589} 
     1590 
     1591MailArchiver.prototype.getMessagesByFolderOperationOK = function(returnService){ 
     1592    var msglist = new Array(); 
     1593    var msglistcomplete = new Array(); 
     1594    var msgAll = new Array(); 
     1595    for(var i=0; i< returnService.getReturn().length; i++){ 
     1596        //Array montado apenas com ids para tratamento de seleção de mensagens independente de paginação 
     1597        msglist.push(returnService.getReturn()[i]._id); 
     1598 
     1599        msgAll.push(returnService.getReturn()[i]); 
     1600 
     1601        //Incremento de contadores para atualização da aba de listagem 
     1602        if(returnService.getReturn()[i]._tags.indexOf("unseen") != -1){ 
     1603            expresso_mail_archive.tot_unseen_msgs_tab++; 
     1604        } 
     1605        expresso_mail_archive.tot_msgs_tab++; 
     1606        //Array montado para operação de desarquivamento 
     1607        var ExpSerialized = expresso_mail_archive.pattern.toExpressoHeader(returnService.getReturn()[i]); 
     1608        msglistcomplete.push(connector.unserialize(ExpSerialized)); 
     1609    } 
     1610    expresso_mail_archive.allmessagesbyfolder = msglist; 
     1611    expresso_mail_archive.allcompletemessagesbyfolder = msglistcomplete; 
     1612    expresso_mail_archive.msgAll = msgAll; 
     1613} 
     1614 
     1615MailArchiver.prototype.getMessagesByFolderOperationFailure = function(ServiceFault){ 
     1616    window.alert('listAllmessagesByFolder FALHOU!\n' + ServiceFault.getReturn()); 
     1617} 
     1618 
     1619 
    14001620//List all messages by folder given and set a array with all messages ids 
    14011621MailArchiver.prototype.listAllMessagesByFolder = function(folderid, searchType){ 
     
    15151735    if(msgfound){ 
    15161736        expresso_mail_archive.currentheaders = headerMsg; 
     1737        expresso_mail_archive.subjectPreview = headerMsg.subject; 
    15171738        return(headerMsg); 
    15181739    } 
     
    15371758            bodies.push(temp); 
    15381759        } 
     1760        expresso_mail_archive.bodyPreview = temp.getReturn(); 
    15391761        return bodies; 
    15401762    } 
     
    15421764        expresso_mail_archive.getFaultInfo(); 
    15431765    } 
     1766} 
     1767 
     1768 
     1769MailArchiver.prototype.getPreviewToAttach = function(id){ 
     1770    expresso_mail_archive.getMessageInfo(id); 
     1771    expresso_mail_archive.getMessageBodies([id]); 
    15441772} 
    15451773 
     
    16181846        return; 
    16191847    }     
     1848    expresso_mail_archive.te = returnService.getReturn(); 
    16201849    var msgBody = returnService.getReturn(); 
    16211850    //var msgHeaders = expresso_mail_archive.getMessageHeaders(expresso_mail_archive.currentmessage); 
     
    20922321        expresso_mail_archive.messageslisted.push(msgitem2);     
    20932322        expresso_mail_archive.getMessageHeaders(serviceReturn.getReturn().getId()); 
     2323 
    20942324    } 
    20952325    else{ 
  • trunk/expressoMail1_2/js/main.js

    r7899 r7907  
    10271027                                 
    10281028                        var userTrashFolder = '';  
    1029                         
    1030                         if (arguments.length <= 6) show_success_msg = true;  
     1029 
     1030                        if (arguments.length <= 6 && typeof(show_success_msg) == "undefined") show_success_msg = true;  
    10311031                        if (folder == 'null') folder = current_folder;  
    10321032                  
     
    11641164                params_to_delete += "&search_box_type="+search_box_type; 
    11651165                params_to_delete += "&sort_box_reverse="+sort_box_reverse; 
     1166 
    11661167                cExecute ("$this.imap_functions.delete_msgs", handler_delete_msgs, params_to_delete); 
    11671168        } 
     
    35333534                mailData.input_from = $(content).find('select[name="input_from"]').val(); 
    35343535 
    3535  
    3536         if(stringEmail != ""){ 
    3537                 $.ajax({ 
    3538                         url: "controller.php?action=$this.imap_functions.send_mail", 
    3539             data:  mailData, 
    3540             type: 'POST', 
    3541  
    3542             beforeSend: function(jqXHR, settings){ 
    3543  
    3544                 write_msg( get_lang( 'Sending the message...' ) ); 
    3545                 $(content).find('button.send').button('option', 'disabled', true); 
    3546  
    3547  
    3548             }, 
    3549             success: function(data){ 
    3550                 send_message_return(connector.unserialize(data),ID); 
    3551                         }, 
    3552                         error: function(){ 
    3553                                 write_msg(get_lang( 'Error trying to send the message. Retry in a few seconds...' ) ); 
    3554                 $(content).find('button.send').button('option', 'disabled', false); 
    3555                 var interval = setInterval(function(){ 
    3556                                                 send_valided_message(ID,folder,folder_name); 
    3557                                                 clearInterval(interval); 
    3558                                 },15000); 
    3559                                 return; 
    3560                         } 
    3561                 }); 
    3562         }else{ 
    3563                 write_msg(get_lang("message without receiver")); 
    3564                 return; 
    3565         } 
    3566  
     3536    // VERIFY IF EXISTS MESSAGE TO ATTACH 
     3537    if(typeof mailData.attachments == "object"){ 
     3538 
     3539        // VERIFY IF EXISTS MESSAGE OF ARCHIVE 
     3540        if(mailData.attachments.archiver.length){ 
     3541 
     3542            // CREATE ONE VARIABLE TO STORE ALL THE MESSAGES INFORMATION 
     3543            var archiver = new Array(); 
     3544 
     3545            // UNARCHIEVE ALL THE MESSAGES TO IMAP TRASH 
     3546           $.each(mailData.attachments.archiver, function(i, each){ 
     3547             expresso_mail_archive.unarchieveToAttach(each.folder,"INBOX/Trash",each.uid); 
     3548           }); 
     3549 
     3550            // FIX THE PROBLEM WITH ASYNC 
     3551            // noReady is calling always that the variable is not complete with all the messages ids 
     3552            notReady = function(){ 
     3553                setTimeout(function(){ 
     3554                if(mailData.attachments.archiver.length == expresso_mail_archive.idMsgsToAttach.length){ 
     3555                    // THIS FUNCTION IS FOR TO GET THE INFORMATION OF THE MESSAGE NEWLY UNARCHIVED 
     3556                    readyToFetch(); 
     3557                    // THIS FUNCTION IS FOR TO SEND THE MESSAGE WITH ATTACHMENT 
     3558                    readyToSend(); 
     3559                } else { 
     3560                    // IF THE ARRAY DON'T HAVE ALL THE MESSAGES IDS, OKAY, NO PROBLEM... CALL THIS FUNCTION AGAIN! 
     3561                    noReady(); 
     3562                } 
     3563              },30); 
     3564            }; 
     3565            notReady(); 
     3566 
     3567             // THIS FUNCTION IS FOR TO GET THE INFORMATION OF THE MESSAGE NEWLY UNARCHIVED 
     3568             readyToFetch = function(){ 
     3569                 $.ajax({ 
     3570                        url: "controller.php?action=$this.imap_functions.get_info_msg_archiver", 
     3571                        data:  {"idMsgs":expresso_mail_archive.idMsgsToAttach}, 
     3572                        type: 'POST', 
     3573                        async: false, 
     3574                        success: function(data){ 
     3575                            data = connector.unserialize(data); 
     3576                            archiver.push(data); 
     3577                        }, 
     3578                  }); 
     3579 
     3580                // HERE, THE MESSAGES IMAP ARE READY FOR TO SEND... 
     3581                mailData.attachments = mailData.attachments.imap; 
     3582 
     3583                // BUT, I NEED TO PREPARE THE MESSAGE ARCHIVE FOR TO SEND. 
     3584                archiver = $.parseJSON(archiver[0]); 
     3585                if(archiver.length){ 
     3586                    $.each(archiver, function(i, each){ 
     3587                        mailData.attachments.push(JSON.stringify(archiver[i])); 
     3588                    }); 
     3589                } 
     3590 
     3591                // GOOD, NOW THE ATTACHMENTS ARE READY TO SEND! 
     3592                mailData.attachments = JSON.stringify(mailData.attachments); 
     3593            }; 
     3594        } else { 
     3595            // IF THIS MESSAGE JUST HAVE IMAP MESSAGES 
     3596            mailData.attachments = JSON.stringify(mailData.attachments.imap); 
     3597            setTimeout(function(){ readyToSend() }, 30); 
     3598        } 
     3599    } else { 
     3600        // IF THIS MESSAGE DON'T HAVE ATTACHMENT, CALL READYTOSEND. 
     3601        setTimeout(function(){ readyToSend() }, 30); 
     3602        mailData.attachments = []; 
     3603    } 
     3604 
     3605    // THIS FUNCTION IS FOR TO SEND THE MESSAGE WITH ATTACHMENT OR NOT. 
     3606    readyToSend = function(){ 
     3607     
     3608        if(stringEmail != ""){ 
     3609                $.ajax({ 
     3610                        url: "controller.php?action=$this.imap_functions.send_mail", 
     3611                data:  mailData, 
     3612                type: 'POST', 
     3613                async: false, 
     3614                beforeSend: function(jqXHR, settings){ 
     3615                    write_msg( get_lang( 'Sending the message...' ) ); 
     3616                    $(content).find('button.send').button('option', 'disabled', true); 
     3617                }, 
     3618                success: function(data){ 
     3619                    send_message_return(connector.unserialize(data),ID); 
     3620                    // HERE, I NEED TO DELETE THE MESSAGES THAT WERE UNARCHIVE FROM ARCHIVE. 
     3621                    delete_msgs("INBOX/Trash",expresso_mail_archive.idMsgsToAttach, false, false); 
     3622                        }, 
     3623                        error: function(){ 
     3624                                write_msg(get_lang( 'Error trying to send the message. Retry in a few seconds...' ) ); 
     3625                    $(content).find('button.send').button('option', 'disabled', false); 
     3626                    var interval = setInterval(function(){ 
     3627                                                send_valided_message(ID,folder,folder_name); 
     3628                                                clearInterval(interval); 
     3629                                },15000); 
     3630                                return; 
     3631                        } 
     3632                }); 
     3633        }else{ 
     3634                write_msg(get_lang("message without receiver")); 
     3635                return; 
     3636        } 
     3637        delete(expresso_mail_archive.idMsgsToAttach); 
     3638    }; 
    35673639 
    35683640} 
  • trunk/expressoMail1_2/setup/phpgw_pt-br.lang

    r7892 r7907  
    972972MailArchiver user logged out    expressoMail1_2 pt-br   Usuário desconectado do MailArchiver 
    973973Error trying to send the message. Retry in a few seconds...     expressoMail1_2 pt-br   Erro ao tentar enviar a mensagem. Nova tentativa em alguns segundos... 
     974Create filter from message      expressoMail1_2 pt-br   Criar filtro a partir da mensagem 
    974975Sending the message...  expressoMail1_2 pt-br   Enviando a mensagem... 
    975 Create filter from message      expressoMail1_2 pt-br   Criar filtro a partir da mensagem  
     976Please, Wait the messages from archieve be ready.       expressoMail1_2 pt-br   Por favor, Aguarde as mensagens arquivadas ficarem prontas. 
  • trunk/prototype/modules/attach_message/attach_message.js

    r7543 r7907  
    231231var selectedFolder     = {}; 
    232232 
     233function mount_children_localfolders_list(folder){  
     234    folder.children = new Array(); 
     235    folder.id_search = folder.id; 
     236    folder.id = 'local_messages_'+folder.id, 
     237    folder.commonName =  folder.name, 
     238    folder.parentId = folder.parentid, 
     239    folder.type = 'localFolder', 
     240    folder.name = folder.id, 
     241    folder.messageCount = { 
     242                             total: folder.messages, 
     243                             unseen: folder.unseen 
     244                          } 
     245 
     246    if(folder.haschild){ 
     247        expresso_mail_archive.getFoldersList(folder.id_search); 
     248        folder.children = expresso_mail_archive.folders; 
     249 
     250        for(var i = 0; i < folder.children.length; i++){ 
     251            mount_children_localfolders_list(folder.children[i]); 
     252        } 
     253 
     254    } 
     255} 
    233256function adaptOffline( data ) 
    234257{ 
     
    254277         
    255278    return( data ); 
    256          
     279} 
     280 
     281function archive_flag( flagObj ){ 
     282 
     283    var flags = {}; 
     284    var returns = ''; 
     285 
     286    $.each( flagObj.tag , function(i, flag){ 
     287        flags[ flag['@value'] ] = true; 
     288    }); 
     289 
     290        returns += (flags['seen'] ? '0,' : '1,') ; 
     291        returns += (flags['answered'] && !flags['forwarded'] ? '1,' : '0,') ; 
     292        returns += (flags['forwarded'] ? '1,' : '0,') ; 
     293        returns += (flags['flagged'] || flags['importance_high'] ? '1,' : '0,') ; 
     294        returns += '0,0'; 
     295             
     296    return returns; 
    257297} 
    258298 
     
    271311                var tree2 = new Array(); 
    272312                var tree3 = new Array(); 
     313 
     314        if(preferences.use_local_messages == 1){ 
     315            if(expresso_mail_archive.folders && !expresso_offline && expresso_mail_archive.enabled == true) { //MailArchive 
     316                //pega pastas locais do mailarchiver e insere no array de pastas 
     317                    expresso_mail_archive.getFoldersList("home"); 
     318                    treeFolders = expresso_mail_archive.folders; 
     319 
     320                    for(var i=0; i<treeFolders.length; i++ ){ 
     321                        mount_children_localfolders_list(treeFolders[i]); 
     322                    } 
     323                     
     324                    for(var i = 0; i < treeFolders.length; i++){ 
     325                        data.push(treeFolders[i]); 
     326                    } 
     327            } 
     328        } 
     329 
    273330                for (var i=0; i<data.length; i++) { 
    274331 
     
    286343                        } 
    287344                        else if (/^local_messages/.test(data[i].id)) { 
    288                                 if (!unorphanize(tree3, data[i])) { 
    289                                         data[i].children = new Array(); 
    290345                                        tree3.push(data[i]); 
    291                                 } 
    292346                        } 
    293347                         
     
    299353                .find("#foldertree").treeview() 
    300354                .click(function(event){ 
     355 
    301356                        //request new selected folder messages 
    302357                        var target = $(event.target); 
     
    325380                        var grid = $("#message_attacher_grid"), offlineCase = ""; 
    326381                         
    327                         if( !targetId.indexOf( 'local_messages/' ) ) 
    328                             offlineCase = ":offline"; 
    329                          
    330  
    331                         grid.jqGrid('setGridParam',{url:BASE_PATH + 'REST.php'+offlineCase+'?q=folder/'+targetId.replace(dashes, '.')+'/message'}) 
    332                             .trigger("reloadGrid") 
    333                             .jqGrid('setCaption', '<span class="'+child.attr('class')+'">'+child.attr('title')+'</span>'); 
     382            if(targetId.indexOf( 'local_messages' ) == 0){ 
     383                 //Entrar caso: Clicar em uma pasta que seja do arquivamento local 
     384                targetId = targetId.split("_")[2]; 
     385 
     386                expresso_mail_archive.getMessagesByFolder(targetId,"ALL"); 
     387 
     388                msgAll = expresso_mail_archive.msgAll;                 
     389 
     390                var msgs = new Array(); 
     391                var from = ''; 
     392                var flag = ''; 
     393                 
     394                $.each(msgAll, function(i, msg){ 
     395                    from = $.parseJSON(msg['_from']); 
     396 
     397                    if(!from){ 
     398                        from = {"mailbox":{"name":"null","route":"null","localPart":"null","domain":"null"}}; 
     399                    } 
     400 
     401                    flag = $.parseJSON(msg['_tags']); 
     402                    id = msg['_id']; 
     403 
     404                    var message = {}; 
     405                     
     406                    message['msg_number'] = id; 
     407                    message['flags'] = archive_flag( flag ); 
     408                    message['from.name'] = from['mailbox']['@name']; 
     409                    message['subject'] = msg['_subject']; 
     410                    message['timestamp'] = msg['_receivedDate']; 
     411                    message['size'] = msg['_size']; 
     412                    message['id'] = id; 
     413                    msgs.push( message ); 
     414 
     415                }); 
     416 
     417            grid.jqGrid("clearGridData", true); 
     418            grid.jqGrid('setGridParam',{datatype: "local",data: msgs}) 
     419                    .trigger("reloadGrid") 
     420                    .jqGrid('setCaption', '<span class="'+child.attr('class')+'">'+child.attr('title')+'</span>'); 
     421 
     422            } else { 
     423                if( !targetId.indexOf( 'local_messages/' ) ) 
     424                    offlineCase = ":offline"; 
     425 
     426                grid.jqGrid('setGridParam',{datatype: "json", url:BASE_PATH + 'REST.php'+offlineCase+'?q=folder/'+targetId.replace(dashes, '.')+'/message'}) 
     427                    .trigger("reloadGrid") 
     428                    .jqGrid('setCaption', '<span class="'+child.attr('class')+'">'+child.attr('title')+'</span>'); 
     429            } 
     430 
     431 
    334432                }) 
    335433                .find('span:first-child'); 
    336                 $('span.folder.inbox').addClass('selected'); 
     434                $('span.folder.inbox').parents(".ui-dialog").find("li#INBOX span").addClass('selected'); 
    337435                selectedFolder = { 
    338436                        id: firstFolder.parent().attr('id'),  
     
    409507                                        } 
    410508                                } 
    411                                  
    412509                                var tabPanelTemplateId = 'mailpreview_tab_' + selectedFolder.id.replace(/[.\/]/g, '_') + '_' + message.msg_number; 
    413510                                var tabPanelTemplateId = tabPanelTemplateId.replace(/[\s\/]/g, '-');  
    414511                                 
    415512                                if (selected) {  
     513                   if(selectedFolder['id'].indexOf("local_messages_") != -1){ 
     514 
     515                        expresso_mail_archive.getPreviewToAttach(id); 
     516 
     517                        var body = expresso_mail_archive.bodyPreview; 
     518                        var subject = expresso_mail_archive.subjectPreview; 
     519                        tabPanelTemplateLabel =  subject.substring(0, $mailpreview_tabs_label_length) + '...'; 
     520 
     521                        if (!$('#' + tabPanelTemplateId).length) { 
     522                            $mailpreview_tabs.tabs("add", '#' + tabPanelTemplateId, tabPanelTemplateLabel) 
     523                            .find('.message.empty-container').hide().end() 
     524                            .find('#' + tabPanelTemplateId).html(body) 
     525                            .prepend( 
     526                                '<div class="mailpreview-message-info">' +  
     527                                    get_lang('Subject') + ': ' + 
     528                                    html_entities(subject) +  
     529                                '</div>' 
     530                            ) 
     531                            .find('[class^="ExpressoCssWrapper"]').addClass("mailpreview-message-body"); 
     532                        } else { 
     533                            $mailpreview_tabs.tabs('select', '#' + tabPanelTemplateId) 
     534                            .find('#' + tabPanelTemplateId + ', [href="#' + tabPanelTemplateId + '"]').removeClass('preview-message-unselected'); 
     535                        } 
     536                    } 
    416537                                        if (onceOpenedMessages[selectedFolder.id] && onceOpenedMessages[selectedFolder.id][message.msg_number]) { 
     538 
    417539                                                if (!selectedMessages[selectedFolder.id]) 
    418540                                                        selectedMessages[selectedFolder.id] = {}; 
     
    425547                                                        tabPanelTemplateLabel = tabPanelTemplateLabel.substring(0, $mailpreview_tabs_label_length) + '...'; 
    426548                                                 
    427                                                 if (!$('#' + tabPanelTemplateId).length) {                                                               
     549                                                if (!$('#' + tabPanelTemplateId).length) { 
    428550                                                        $mailpreview_tabs.tabs("add", '#' + tabPanelTemplateId, tabPanelTemplateLabel) 
    429551                                                        .find('.message.empty-container').hide().end() 
     
    433555                                                        .find('#' + tabPanelTemplateId + ', [href="#' + tabPanelTemplateId + '"]').removeClass('preview-message-unselected'); 
    434556                                                } 
    435                                                  
     557 
     558                         
     559 
    436560                                        } else { 
    437561                                                jQuery('#mailpreview_container').block({   
     
    460584                                                        selectedMessages[selectedFolder.id] = {}; 
    461585                                                selectedMessages[selectedFolder.id][message.msg_number] = true; 
    462                                                 $.ajax({ 
    463                                                         accepts: 'text/html', 
    464                                                         url: BASE_PATH + 'REST.php'+offlineCase+'?q=folder/'+selectedFolder.id.replace(dashes, '.')+'/message/'+id, 
    465                                                         dataType: 'json', 
    466                                                         success: function( mail_preview ){               
    467                                                                 //selectedMessagesCount(); 
    468                                                                 if (!onceOpenedMessages[selectedFolder.id]) 
    469                                                                         onceOpenedMessages[selectedFolder.id] = {}; 
    470                                                                 onceOpenedMessages[selectedFolder.id][message.msg_number] = jQuery.extend(true, message, mail_preview); 
    471  
    472                                                                 $('#mailpreview_container').unblock(); 
    473  
    474                                                                 var tabPanelTemplateLabel = html_entities(onceOpenedMessages[selectedFolder.id][message.msg_number].subject); 
    475                                                                 if (tabPanelTemplateLabel.length > $mailpreview_tabs_label_length + 3) 
    476                                                                         tabPanelTemplateLabel = tabPanelTemplateLabel.substring(0, $mailpreview_tabs_label_length) + '...'; 
    477                                                         selectedMessagesCount(); 
    478                                                                  
    479                                                                 if (!$('#' + tabPanelTemplateId).length) {                                                               
    480                                                                         $mailpreview_tabs.tabs("add", '#' + tabPanelTemplateId, tabPanelTemplateLabel) 
    481                                                                         .find('.message.empty-container').hide().end() 
    482                                                                         .find('#' + tabPanelTemplateId).html(onceOpenedMessages[selectedFolder.id][message.msg_number].body) 
    483                                                                         .prepend( 
    484                                                                                 '<div class="mailpreview-message-info">' +  
    485                                                                                         get_lang('Subject') + ': ' + 
    486                                                                                         html_entities(onceOpenedMessages[selectedFolder.id][message.msg_number].subject) +  
    487                                                                                 '</div>' 
    488                                                                         ) 
    489                                                                         .find('[class^="ExpressoCssWrapper"]').addClass("mailpreview-message-body"); 
    490                                                                 } else { 
    491                                                                         $mailpreview_tabs.tabs('select', '#' + tabPanelTemplateId) 
    492                                                                         .find('#' + tabPanelTemplateId + ', [href="#' + tabPanelTemplateId + '"]').removeClass('preview-message-unselected'); 
    493                                                                 } 
    494                                                         } 
    495                                                 }); 
     586 
     587 
     588                        if(selectedFolder['id'].indexOf("local_messages_") != -1){ 
     589                            $('#mailpreview_container').unblock(); 
     590                            if (!onceOpenedMessages[selectedFolder.id]) 
     591                                    onceOpenedMessages[selectedFolder.id] = {}; 
     592                                onceOpenedMessages[selectedFolder.id][message.msg_number] = message; 
     593 
     594                            var tabPanelTemplateLabel = html_entities(onceOpenedMessages[selectedFolder.id][message.msg_number].subject); 
     595                                    if (tabPanelTemplateLabel.length > $mailpreview_tabs_label_length + 3) 
     596                                        tabPanelTemplateLabel = tabPanelTemplateLabel.substring(0, $mailpreview_tabs_label_length) + '...'; 
     597                            selectedMessagesCount(); 
     598                        } else { 
     599                                                $.ajax({ 
     600                                                        accepts: 'text/html', 
     601                                                        url: BASE_PATH + 'REST.php'+offlineCase+'?q=folder/'+selectedFolder.id.replace(dashes, '.')+'/message/'+id, 
     602                                                        dataType: 'json', 
     603                                                        success: function( mail_preview ){               
     604                                                                //selectedMessagesCount(); 
     605                                                                if (!onceOpenedMessages[selectedFolder.id]) 
     606                                                                        onceOpenedMessages[selectedFolder.id] = {}; 
     607                                                                onceOpenedMessages[selectedFolder.id][message.msg_number] = jQuery.extend(true, message, mail_preview); 
     608 
     609                                                                $('#mailpreview_container').unblock(); 
     610 
     611                                                                var tabPanelTemplateLabel = html_entities(onceOpenedMessages[selectedFolder.id][message.msg_number].subject); 
     612                                                                if (tabPanelTemplateLabel.length > $mailpreview_tabs_label_length + 3) 
     613                                                                        tabPanelTemplateLabel = tabPanelTemplateLabel.substring(0, $mailpreview_tabs_label_length) + '...'; 
     614                                                        selectedMessagesCount(); 
     615                                                                 
     616                                                                if (!$('#' + tabPanelTemplateId).length) {       
     617                                        
     618 
     619                                    //tabPanelTemplateId - mailpreview_tab_INBOX_1110 
     620                                    //tabPanelTemplateLabel - Re: asduiahdih 
     621 
     622                                                                        $mailpreview_tabs.tabs("add", '#' + tabPanelTemplateId, tabPanelTemplateLabel) 
     623                                                                        .find('.message.empty-container').hide().end() 
     624                                                                        .find('#' + tabPanelTemplateId).html(onceOpenedMessages[selectedFolder.id][message.msg_number].body) 
     625                                                                        .prepend( 
     626                                                                                '<div class="mailpreview-message-info">' +  
     627                                                                                        get_lang('Subject') + ': ' + 
     628                                                                                        html_entities(onceOpenedMessages[selectedFolder.id][message.msg_number].subject) +  
     629                                                                                '</div>' 
     630                                                                        ) 
     631                                                                        .find('[class^="ExpressoCssWrapper"]').addClass("mailpreview-message-body"); 
     632                                                                } else { 
     633                                                                        $mailpreview_tabs.tabs('select', '#' + tabPanelTemplateId) 
     634                                                                        .find('#' + tabPanelTemplateId + ', [href="#' + tabPanelTemplateId + '"]').removeClass('preview-message-unselected'); 
     635                                                                } 
     636                                                        } 
     637                                                }); 
     638                        }       
    496639                                        } 
    497640                                } else { 
Note: See TracChangeset for help on using the changeset viewer.