Changeset 5697


Ignore:
Timestamp:
03/09/12 19:47:52 (12 years ago)
Author:
adriano
Message:

Ticket #2486 - implementa a pasta 'para acompanhamento' e corrige o salvamento

Location:
trunk/prototype
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/prototype/config/labeled.ini

    r5533 r5697  
    1616folderName = folder_name 
    1717messageNumber = message_id 
    18  
    19 ;TODO - interceptor para evitar que existam mais de um entrada com os campos "folderName", "messageNumber" e "labelId" identicos 
  • trunk/prototype/modules/mail/interceptors/Helpers.php

    r5625 r5697  
    109109                                        /** 
    110110                                         * Devido há inconsistencias na chamada do interceptor addDefaultElementsFilter (followupflag:before.find) 
    111                                          * os followupflag defaults  
     111                                         * os followupflag defaults são inseridos no retorno, por isso é necessário procurar o objeto correto 
     112                                         * através do id 
    112113                                         */ 
    113114                                        foreach ($followupflags as $followupflag) { 
     
    186187        } 
    187188 
    188         //followupflagged:before.create 
     189        //followupflagged:Imap.before.create 
    189190        public function letFollowupflaggedKeepUnique (&$uri , &$params , &$criteria , $original ){ 
    190          
     191 
    191192                if (isset($params['folderName']) && isset($params['messageNumber'])) { 
    192193                        $filter = array ('AND', array('=', 'folderName', $params['folderName']), array('=', 'messageNumber', $params['messageNumber'])); 
     
    195196                        //Obtém do banco um possível sinalizador existente 
    196197                        $imap_result = Controller::find($toClearURI, false, array('filter' => $filter)); 
    197  
     198                         
    198199                        //Se existe um sinalizador nesta mensagem, deleta-o 
    199200                        foreach ($imap_result as $r) { 
     
    243244        //followupflagged:PostgreSQL.before.delete 
    244245        public function doImapDelete( &$uri , &$params , &$criteria , $original ) { 
    245                 $toGetURI = $uri; 
    246                 $flagged = Controller::read($toGetURI); 
    247  
    248                 //assumindo que $criteria['filter'] venha sempre vazio no delete 
    249                 $imap_criteria['filter'] = array(); 
    250                 foreach ($flagged as $key => $value) { 
    251                         $imap_criteria['filter'][] = array('=', $key, $value);  
    252                 } 
    253                 if($imap_criteria['filter']) array_unshift($imap_criteria['filter'], 'AND'); 
    254                  
    255                 $imap_uri = $uri; 
    256                 $imap_uri['service'] = 'Imap'; 
    257                 if ($flagged && $flagged['id']) { 
    258                         $flagged['id']  = $flagged['folderName'] . '/' . $flagged['messageNumber'] . '#' . $flagged['id'];  
    259                         $imap_uri['id'] = $flagged['id'];  
    260                 } 
    261  
    262                 $result = Controller::delete($imap_uri, $params, $imap_criteria);                
     246 
     247                $imap_uri = $uri; 
     248                $imap_uri['service'] = 'Imap'; 
     249                list($messageId, $uri['id']) = explode('#', $uri['id']); 
     250 
     251                $result = Controller::delete($imap_uri, $params, $imap_criteria); 
     252 
     253                if (!$result) 
     254                        return false; 
    263255        } 
    264256         
  • trunk/prototype/modules/mail/js/foldertree.js

    r5663 r5697  
    106106                        selected = target.attr('id'); 
    107107                        change_folder(target.attr('id'), child.attr('title'));   
     108                 
     109                }).filter('.followup-messages').click(function(event, ui){ 
     110                        search_emails("UNDELETED KEYWORD \"$Followupflagged\""); 
    108111                }).end(); 
     112                 
    109113                folders_html.find('[id="'+selected+'"]').children().addClass("selected").end().end().find("li:first").find(".folder").not(".head_folder,.inbox,.drafts,.sent,.spam,.trash").draggable({ 
    110114                        // DRAG DE PASTAS 
  • trunk/prototype/modules/mail/js/followupflag.js

    r5674 r5697  
    271271        .filter('.menu-configure-followupflag .delete').click(function(){ 
    272272                if (selectedMessageIds.length == 0) $(this).button("option", "disabled", true); 
    273                         /** TODO Mudar quando melhorias forem implementadas na API de atualização do cache */ 
    274                         DataLayer.remove('followupflagged', false); 
    275                         DataLayer.get('followupflagged'); 
    276                         var roles = get_selected_messages_search_role().split(','); 
    277                         for (var i=0; i < selectedMessageIds.length; i++ ){ 
     273                /** TODO Mudar quando melhorias forem implementadas na API de atualização do cache */ 
     274                DataLayer.remove('followupflagged', false); 
     275                //DataLayer.get('followupflagged'); 
     276                var roles = get_selected_messages_search_role().split(','); 
     277                for (var i=0; i < selectedMessageIds.length; i++ ){ 
    278278                                if (currentTab == 0) { 
    279279                                        folder_name = current_folder; 
     
    288288                                if(onceOpenedHeadersMessages[folder_name][messageNumber]['followupflagged'].id){ 
    289289                                        var flag_id = onceOpenedHeadersMessages[folder_name][messageNumber]['followupflagged'].id; 
    290                                         DataLayer.remove('followupflagged', flag_id); 
     290                                        //DataLayer.remove('followupflagged', folder_name + '/' + messageNumber + '#' + flag_id ); 
     291                                        /** 
     292                                         * TODO - corrigir o formato do ID no DataLayer, para que seja utilizado o ID composto 
     293                                         * ao invés do ID do PostgreSQL atualmente em uso. 
     294                                         */ 
     295                                          
     296                                        /** 
     297                                         * # hack necessário enquanto o DataLayer não reconhece o ID composto. Trocar o  
     298                                         * código abaixo pela chamada trivial de DataLayer.remove('followupflagged', idCompost) 
     299                                         */ 
     300                                        var data = {}; 
     301                                        data[ 'followupflagged://' + folder_name + '/' + messageNumber + '#' + flag_id ] = false; 
     302                                        DataLayer.dispatch('Sync', data, false, true); 
     303                                         
    291304                                        if(current_folder == folder_name){ 
    292305                                                $('#td_message_followup_' + messageNumber + ', ' +  
  • trunk/prototype/modules/mail/templates/detailedfoldertree.ejs

    r5533 r5697  
    5252  </li> 
    5353  <%}%> 
    54   <li><span class="folder head_folder all_accomp">Para acompanhamento</span> 
     54  <li><span class="folder head_folder all_accomp followup-messages">Para acompanhamento</span> 
    5555  </li> 
    5656</ul> 
  • trunk/prototype/services/ImapServiceAdapter.php

    r5620 r5697  
    22 
    33include_once ROOTPATH."/../expressoMail1_2/inc/class.imap_functions.inc.php"; 
     4require_once ROOTPATH.'/library/uuid/class.uuid.php'; 
     5 
    46 
    57class ImapServiceAdapter extends imap_functions/* implements Service*/ 
     
    356358                                         
    357359                                        $this->mbox = $this->open_mbox($data['folderName']); 
    358                                         imap_setflag_full($this->mbox, $data['messageNumber'], '$Followupflag' . $followupflaggedId, ST_UID); 
     360                                        imap_setflag_full($this->mbox, $data['messageNumber'], '$Followupflagged $Followupflag' . $followupflaggedId, ST_UID); 
     361                                         
     362                                        /** 
     363                                         * implementa a possibilidade de listar todas as mensagens sinalizadas através da busca 
     364                                         */ 
     365                                        //imap_setflag_full($this->mbox, $data['messageNumber'], '$Followupflagged', ST_UID); 
    359366 
    360367                                        imap_close($this->mbox); 
     
    365372                                return array (); 
    366373                        } 
    367                         case 'message': 
     374                         
     375                        case 'message': 
    368376                        { 
    369377                                $GLOBALS['phpgw_info']['flags'] = array( 'noheader' => true, 'nonavbar' => true,'currentapp' => 'expressoMail1_2','enable_nextmatchs_class' => True ); 
     
    383391                                $folder = @eregi_replace("INBOX[/.]", "INBOX".$this->imap_delimiter, $folder); 
    384392 
     393                                                                /** 
     394                                                                 * Gera e preenche o field Message-Id do header 
     395                                                                 */ 
     396                                                                $mailService->addHeaderField('Message-Id', UUID::generate( UUID::UUID_RANDOM, UUID::FMT_STRING ) . '@Draft'); 
     397                                                                 
    385398                                $mailService->addTo($data['input_to']); 
    386399                                $mailService->addCc( $data['input_cc']); 
    387400                                $mailService->addBcc($data['input_cco']); 
    388401                                $mailService->setSubject($data['input_subject']); 
    389  
    390402                                if(isset($data['input_important_message'])) 
    391403                                        $mailService->addHeaderField('Importance','High'); 
     
    494506                                list($messageId, $followupflaggedId) = explode('#', $URI['id']); 
    495507                                 
    496                                 $folderName = basename($messageId); 
    497                                 $messageNumber = dirname($messageId); 
     508                                $folderName = dirname($messageId); 
     509                                $messageNumber = basename($messageId); 
    498510                         
    499511                                if ($folderName && $messageNumber && $followupflaggedId) { 
     512 
    500513                                        $this->mbox = $this->open_mbox($folderName); 
    501514                                        imap_clearflag_full($this->mbox, $messageNumber, '$Followupflag' . $followupflaggedId, ST_UID); 
    502515 
    503                                         imap_close($this->mbox); 
     516                                        /** 
     517                                         * implementa a possibilidade de listar todas as mensagens sinalizadas através da busca 
     518                                         */ 
     519                                        imap_clearflag_full($this->mbox, $messageNumber, '$Followupflagged', ST_UID); 
     520 
     521                                        imap_close($this->mbox, CL_EXPUNGE); 
    504522                                        $this->mbox = false; 
    505523                                } 
     
    568586         
    569587             
    570     private static function parseFilter( $filter ,&$map){ 
     588    private static function parseFilter($filter ,&$map){ 
    571589                 
    572590                if( !is_array( $filter ) || count($filter) <= 0) return null; 
     
    590608                } 
    591609        } 
    592          
     610 
    593611} 
Note: See TracChangeset for help on using the changeset viewer.