Changeset 6392


Ignore:
Timestamp:
06/02/12 16:40:08 (12 years ago)
Author:
airton
Message:

Ticket #2830 - Inconsistencia ao aplicar filtro nas mensagens da caixa de entrada

Location:
trunk/prototype/modules/filters
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/prototype/modules/filters/filters.js

    r6387 r6392  
     1/* Verifica se a regra fora de escritório está ativa */ 
    12function outOfficeVerify() {     
    23        DataLayer.remove('filter', false); 
     
    1718} 
    1819 
     20/* Valida as informações do formulário de filtro de mensagens */ 
    1921valid_save = function(){ 
    2022        var accord = list_container.find(".rule-details-container").accordion({autoHeight: false}); 
     
    9294                } 
    9395                var er_mail = RegExp(/^[A-Za-z0-9_\-\.]+@[A-Za-z0-9_\-\.]{2,}\.[A-Za-z0-9]{2,}(\.[A-Za-z0-9])?/); 
    94                 if(er_mail.test($.trim(list_container.find('[value="redirect"]:checked').parent().find("input:text, textarea").val())) == false){ 
     96                if(er_mail.test($.trim(list_container.find('[value="redirect"]:checked').parent().find("input:text").val())) == false && list_container.find('[name="actionType[]"]:checked').val() == 'redirect'){ 
    9597                        $.Zebra_Dialog(get_lang("Invalid mail"),{ 
    9698                                'onClose':  function(caption) { 
     
    103105        return true; 
    104106}; 
     107 
     108function urlencode (str) { 
     109    str = (str + '').toString(); 
     110    return encodeURIComponent(str).replace(/!/g, '%21').replace(/'/g, '%27').replace(/\(/g, '%28'). 
     111    replace(/\)/g, '%29').replace(/\*/g, '%2A').replace(/%20/g, '+'); 
     112} 
    105113 
    106114bytes2Size = function(bytes) { 
     
    144152} 
    145153 
     154/* Mostra os detalhes do filtro para edição */ 
    146155showDetails = function( filter ){ 
    147156   
     
    173182} 
    174183 
    175 /* --- ------ --- */ 
    176184 
    177185DataLayer.codec( "filter", "detail", { 
     
    190198 
    191199        var apply_messages_ = keys(selectedMessages); 
    192         delete selectedMessages;  
    193  
     200         
     201        action = ''; 
     202         
    194203    return { 
    195                 //id: form.name, 
    196204                name: form.name ? form.name.replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;') : nameObj.val().replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;'), 
    197205                isExact: ( form.isExact === "and" ), 
     
    231239                        if (type == 'setflag') {  
    232240                                the_parameter = form.valueSetFlag; 
     241                                action = form.valueSetFlag; 
    233242                        } 
    234243                        return (!type) ? null: 
     
    253262}); 
    254263 
     264/* Codec do datalayer */ 
    255265DataLayer.codec( "folder", "select", { 
    256266   
    257267  decoder:function(){ 
    258  
    259        
    260268     
    261269  }, 
     
    293301}); 
    294302 
    295  
    296  
    297  
    298303var BASE_PATH = '../prototype/'; 
    299304 
     
    304309var allMessages = false; 
    305310 
     311/* Bloqueio de usuários na tela de mensagem do ExpressoMail */ 
    306312function block_user_email(email) {  
    307         //var id = "block_"+email; 
    308         var idd = email; 
     313        delete selectedMessages; 
     314        var idd = urlencode(email); 
    309315        /** TODO - Mudar quando API abstrair atualizações no cache */ 
    310316        DataLayer.remove('filter', false); 
    311317        var filters = DataLayer.get('filter'); 
    312         //var filters = DataLayer.get("filter", true); 
    313318        for(var index in filters){ 
    314319                if(filters[index].name == email) { 
     
    341346} 
    342347 
     348/* Gerencia o grid das mensagens da caixa de entrada */ 
    343349function showGridMessages(thiss) { 
    344350        var criteria_list = list_container.find('[name="criteriaValue[]"]'); 
     
    453459                                        } 
    454460                                }, 
     461                                onSelectAll: function (id, selected) {                                   
     462                                        for (i in id) { 
     463                                                if(selected) 
     464                                                        selectedMessages[id[i]] = true; 
     465                                                else 
     466                                                        delete selectedMessages[id[i]];  
     467                                        } 
     468                                }, 
    455469                                caption: 'Mensagens que atendem aos crit&eacute;rios' 
    456470                        }); // end jqGrid 
     
    459473} 
    460474 
    461  
     475/* Gerencia a listagem de filtros do usuário */ 
    462476function list_filters(html){ 
    463477        outOfficeVerify(); 
     478        for (var index in selectedMessages) { 
     479                delete selectedMessages[index]; 
     480        } 
    464481        if(html){ 
    465482                if( ! $(".filters-windows").length ) 
     
    553570                                        else 
    554571                                                return; 
    555                                         DataLayer.commit( 'filter', false,function(){ 
     572                                        DataLayer.commit( 'filter', false,function(){                                            
     573                                                if($('#gbox_fields-search-messages-grid').length > 0 && action != '') {  
     574                                                        for (var index in selectedMessages) { 
     575                                                                set_message_flag(index, action, false); 
     576                                                        } 
     577                                                } 
    556578                                                DataLayer.render( BASE_PATH + 'modules/filters/init.ejs', {},list_filters); 
    557579                                        }); 
    558580                                }).end().filter('.button.search').click(function() {                             
    559                                 /* Valida se o usuário preencheu as informações */ 
    560                                 if(valid_save()) 
    561                                         showGridMessages($(this)); 
    562                                 else 
    563                                         return; 
    564                         }) 
     581                                        /* Valida se o usuário preencheu as informações */ 
     582                                        if(valid_save()) 
     583                                                showGridMessages($(this)); 
     584                                        else 
     585                                                return; 
     586                                }) 
    565587                        }else{ 
    566588                                list_container.find(".vacation-details-container").removeClass("hidden"); 
     
    650672        }); 
    651673         
    652          
    653          
    654674        $(".button.alldelete").click(function(){ 
    655675                $.Zebra_Dialog(get_lang("Are you sure to delete the filters?"),{ 
     
    662682                                        DataLayer.remove('filter', false); 
    663683                                        DataLayer.get('filter'); 
    664                                         container.find('.rule-list').find('.rule').find('.select').find(':checked').parents('.rule').find('.title').each(function(i,o){ 
    665                                                 DataLayer.remove( 'filter', o.innerHTML ); 
     684                                        container.find('.rule-list').find('.rule').find('.select').find(':checked').parents('.rule').find('.title').each(function(i,o){                                          
     685                                                DataLayer.remove( 'filter', urlencode(o.innerHTML) ); 
    666686                                        }); 
    667687                                        DataLayer.commit("filter", false,function(){ 
     
    698718                                        return; 
    699719                                DataLayer.commit( 'filter',false,function(){ 
     720                                        if($('#gbox_fields-search-messages-grid').length > 0 && action != '') {  
     721                                                for (var index in selectedMessages) { 
     722                                                        set_message_flag(index, action, false); 
     723                                                } 
     724                                        } 
    700725                                        DataLayer.render( BASE_PATH + 'modules/filters/init.ejs', {},list_filters); 
    701726                                }); 
     
    717742                        list_container.find(".button").button().filter(".back").click(function(){ 
    718743                                DataLayer.render( BASE_PATH + 'modules/filters/init.ejs', {},list_filters); 
    719                         }).end().filter(".submit").click(function(){ 
    720                          
    721                         if(list_container.find(".vacation-details-container .filter-textarea").val().length <= 0){ 
    722                                         alert(get_lang('Write a message')); 
    723                                         list_container.find(".vacation-details-container .filter-textarea").focus(); 
    724                         }else{ 
    725                                 $(this).submit(); 
    726                                 DataLayer.commit( 'filter',false,function(){ 
    727                                         DataLayer.render( BASE_PATH + 'modules/filters/init.ejs', {},list_filters); 
    728                                 }); 
    729                         } 
    730                          
     744                        }).end().filter(".submit").click(function(){                     
     745                                if(list_container.find(".vacation-details-container .filter-textarea").val().length <= 0){ 
     746                                                $.Zebra_Dialog(get_lang('Write a message')); 
     747                                                list_container.find(".vacation-details-container .filter-textarea").focus(); 
     748                                }else{ 
     749                                        $(this).submit(); 
     750                                        DataLayer.commit( 'filter',false,function(){ 
     751                                                DataLayer.render( BASE_PATH + 'modules/filters/init.ejs', {},list_filters); 
     752                                        }); 
     753                                } 
    731754                        }); 
    732755                });      
    733                  
    734                  
    735756        }); 
    736757} 
    737758 
     759/* Inicializa os filtros e chama o list_filters */ 
    738760function  init_filters(){ 
    739761        var html = DataLayer.render( BASE_PATH + 'modules/filters/init.ejs', {}); 
  • trunk/prototype/modules/filters/interceptors/FilterMapping.php

    r6377 r6392  
    5858{ 
    5959        var $service; 
    60          
     60        var $msgs_apply = array(); 
    6161        /** 
    6262        * Método que cria o ID da regra que está sendo criada. 
     
    282282                { 
    283283                  $script_rules .= "vacation" . $vacation_action . "\r\n"; 
     284                } 
     285 
     286                foreach ($rules as &$values) {                                           
     287                        if($values['applyMessages']) 
     288                                $this->msgs_apply[] = $values['applyMessages']; 
     289                        $values['applyMessages'] = array(); 
    284290                } 
    285291 
     
    501507                        $this->rules = array(); 
    502508                } 
    503                  
    504509                return( $this->rules ); 
    505510        } 
     
    522527        public function applySieveFilter( &$uri , &$result , &$criteria , $original  ) 
    523528        { 
     529                $rule_apply = array();  
     530                         
     531                $filter = Controller::read($uri); 
     532                $filter_ = $this->parseSieveScript($filter['content']); 
    524533                 
    525                 //if()                   
    526                 //{                                              
    527                         $rule_apply = array();  
     534                foreach ($filter_ as $f_) { 
     535                        if($f_['id'] == $uri['id']) {  
     536                                $rule_apply     = $f_; 
     537                        } 
     538                } 
     539                                 
     540                $actions = array(); 
     541                $actions['type'] = $rule_apply['actions'][0]['type']; 
     542                $actions['parameter'] = $rule_apply['actions'][0]['parameter']; 
     543                /* Hardcoded */ 
     544                $actions['keep'] = false; 
     545 
     546                //$messages = $rule_apply['applyMessages']; 
     547                $messages = $this->msgs_apply[0]; 
     548                $this->msgs_apply = array(); 
    528549                         
    529                         $filter = Controller::read($uri); 
    530                         $filter_ = $this->parseSieveScript($filter['content']); 
    531                          
    532                         foreach ($filter_ as $f_) { 
    533                                 if($f_['id'] == $uri['id']) {  
    534                                         $rule_apply     = $f_; 
    535                                 } 
    536                         } 
    537                                          
    538                         $actions = array(); 
    539                         $actions['type']      = $rule_apply['actions'][0]['type']; 
    540                         $actions['parameter'] = $rule_apply['actions'][0]['parameter']; 
    541                         /* Hardcoded */ 
    542                         $actions['keep']      = false; 
    543  
    544                         $messages_to_apply = array();                    
    545  
    546                         $messages = $rule_apply['applyMessages']; 
    547                         /*         
    548                         $proc = array(); 
    549                         $proc['keep'] = false; 
    550                                   
    551                         */ 
    552                         $imap = Controller::service( 'Imap' ); 
    553                         $imap->apliSieveFilter($messages, $actions);  
    554                         return $result; 
    555                 //} 
     550                $imap = Controller::service( 'Imap' ); 
     551                $imap->apliSieveFilter($messages, $actions);  
     552                return $result; 
    556553        } 
    557554 
     
    596593        { 
    597594                if( !$this->rules ) 
    598                 $this->rules = $this->getRules(); 
     595                        $this->rules = $this->getRules(); 
    599596 
    600597            $uri['id'] = $params['id'] = isset($params['id']) ? $params['id'] : urlencode($params['name']); 
     
    633630                $params['id'] = $uri['id']; 
    634631 
    635                 $update = false; 
    636                  
    637632                $rules = array(); 
    638633 
Note: See TracChangeset for help on using the changeset viewer.