Ignore:
Timestamp:
07/11/12 11:45:10 (12 years ago)
Author:
niltonneto
Message:

Ticket #0000 - Copiadas as alterações do Trunk. Versão final da 2.4.1.

Location:
branches/2.4
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/2.4

  • branches/2.4/prototype/modules/filters/filters.js

    r6646 r6754  
    1 /* Verifica se a regra fora de escritório está ativa */ 
     1/*  
     2 * Retorna as regras por remetente e que o usuário deseja ser avisado  
     3 */ 
     4function getFromAlertRules() {  
     5        var filters = DataLayer.get("filter"); 
     6        fromRules = []; 
     7        var alertMessage; 
     8        var active; 
     9        for (var index in filters) { 
     10                alertMessage = filters[index]['alertMessage'];           
     11                active = filters[index]['enabled']; 
     12                for(var criterias in filters[index]['actions']) { 
     13                        if (filters[index]['actions'][criterias]['type'] == 'fileinto' && alertMessage == 'true' && active == 'true') 
     14                                fromRules[fromRules.length] = filters[index]['actions'][criterias]['parameter']; 
     15                } 
     16        } 
     17        return fromRules; 
     18} 
     19 
     20/*  
     21 * Verifica se a regra Fora de escritório está ativa 
     22 */ 
    223function outOfficeVerify() {     
    324        DataLayer.remove('filter', false); 
     
    930                        outoffice = true; 
    1031                if(filters[index].id == "vacation" && filters[index].enabled == "true"){ 
    11                         write_msg(get_lang("Attention, you are in out of office mode."), true);  
     32                        write_msg(get_lang("Attention, you are in out of office mode."), true); 
    1233                        outoffice_active = true; 
    1334                        break; 
     
    1839} 
    1940 
    20  
    21 /* Valida as informações do formulário de filtro de mensagens */ 
     41/*  
     42 * Valida os campos do formulário da tela de filtros para salvar. 
     43 */ 
    2244valid_save = function(){ 
    2345        var accord = list_container.find(".rule-details-container").accordion({autoHeight: false}); 
     
    5375                                        error = true; 
    5476                                        return; 
    55                                 }        
     77                                } 
    5678                        }); 
    5779                        if(error){ 
     
    6385        var criteria_list = list_container.find('[name="criteriaValue[]"]'); 
    6486        var er_num = /^[0-9]+$/; 
    65          
     87 
    6688        if($(".sizeRule").val() != "" && er_num.test($(".sizeRule").val()) == false) { 
    6789                $.Zebra_Dialog(get_lang("Size rule must be a number"),{ 
     
    7496        } 
    7597        $.each(criteria_list, function(index, value){ 
    76                 criteria += $.trim($(criteria_list[index]).val()); 
     98                if(($(criteria_list[index]).val() != "" && index != 5) || ($(criteria_list[index]).is(':checked'))){ 
     99                        criteria += $.trim($(criteria_list[index]).val()); 
     100                } 
    77101        }); 
    78102        if(criteria == ""){ 
     
    101125                                } 
    102126                        }); 
     127                        return false; 
     128                } 
     129        } 
     130        /*Validação ao salvar filtro com alerta*/ 
     131        var criteria_operator_list = list_container.find('[name="criteriaOperator[]"]'); 
     132        if(list_container.find('.alertMessage').is(':checked')){ 
     133                if($(criteria_list[0]).val() != "" && $('.select-folderlist').find('[type="radio"]').is(':checked') && $(criteria_operator_list[0]).find('option:selected').val() != "!*"){ 
     134                        var hasValue = false; 
     135                        $.each(criteria_list, function(index, value){ 
     136                                if(($(criteria_list[index]).val() != "" && index != 0 && index != 5) || ($(criteria_list[index]).is(':checked'))){ 
     137                                        if($('.fields-isexact').find(':checked').val() == 'or'){ 
     138                                                hasValue = true; 
     139                                        } 
     140                                } 
     141                        }); 
     142                        if(hasValue){ 
     143                                $.Zebra_Dialog('<strong>'+get_lang('Filter with alert')+'</strong><br>'+get_lang('If more than one criterion for the filter, the "Meeting all the criteria" must be selected')); 
     144                                return false; 
     145                        }  
     146                }else{ 
     147                        $.Zebra_Dialog('<strong>'+get_lang('Filter with alert')+'</strong><br>'+get_lang('The filter should be set as a criteria "Sender" and action "Archive folder"')); 
    103148                        return false; 
    104149                } 
     
    132177date2Time = function (timestamp) { 
    133178        var date = new Date(); 
     179        if( typeof timestamp === "string" ) 
     180            timestamp = parseInt( timestamp, 10 ); 
    134181        if ((date.getTime() - timestamp) < (24*60*60*1000)) { 
    135182                return '<span class="timable" title="'+timestamp+'"> </span>'; 
     
    143190 
    144191keys = function( object ){ 
    145    
     192 
    146193  var array = []; 
    147    
     194 
    148195  for( var key in object ) 
    149196       array[ array.length ] = key; 
    150    
     197 
    151198  return( array ); 
    152199 
    153200} 
    154201 
    155 /* Mostra os detalhes do filtro para edição */ 
     202/*  
     203 * Preenche o formulário de filtros com as informações originais para edição 
     204 */ 
    156205showDetails = function( filter ){ 
    157    
     206 
    158207    form.get(0).reset(); 
    159208 
     
    175224                if(filter.actions[i].type == "redirect") 
    176225                        actions.siblings('[name="addressRedirect"]').val(filter.actions[i].parameter); 
    177                 if(filter.actions[i].type == "reject")   
     226                if(filter.actions[i].type == "reject") 
    178227                        actions.siblings('[name="messageReject"]').val(filter.actions[i].parameter); 
    179228                if(filter.actions[i].type == "fileinto" || filter.actions[i].type == "setflag") 
    180229                        actions.parent().find('[value="'+filter.actions[i].parameter+'"]').attr("selected", "selected"); 
    181230    } 
    182         isExact.filter('[value="'+(filter.isExact != "false"? "and" : "or")+'"]').attr("checked", "True");       
     231        isExact.filter('[value="'+(filter.isExact != "false"? "and" : "or")+'"]').attr("checked", "True"); 
     232         
     233        if (filter.alertMessage == 'true') $('.alertMessage').attr('checked', 'True'); 
    183234} 
    184235 
    185236 
    186237DataLayer.codec( "filter", "detail", { 
    187    
     238 
    188239  decoder: function( form ){ 
    189       if( form.vacation ) 
     240          if( form.vacation ) 
    190241          return { 
    191242                criteria: [{ value: "vacation", operator: "", field: "vacation" }], 
     
    199250 
    200251        var apply_messages_ = keys(selectedMessages); 
    201          
     252 
    202253        action = ''; 
    203          
     254 
    204255    return { 
    205256                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;'), 
    206257                isExact: ( form.isExact === "and" ), 
    207                 criteria: $.map( form.criteriaOperator || [], function( criteriaOperator, i ){   
     258                criteria: $.map( form.criteriaOperator || [], function( criteriaOperator, i ){ 
    208259                        return (!form.criteriaValue[i]) ? null: 
    209                         {  
     260                        { 
    210261                                        value:  form.criteriaValue[i].replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;'), 
    211262                                        operator: criteriaOperator, 
     
    215266                actions: $.map( form.actionType || [], function( type, i ){ 
    216267                        var the_parameter = form.actionParameter[i]; 
    217                          
     268 
    218269                        !the_parameter ? the_parameter = form.actionParameter[i+1] : ""; 
     270 
     271                        if (type == 'alertMessage') {  
     272                                //if(!$('[value="alertMessage"]').parent().hasClass("hidden")){ 
     273                                        type = 'addflag'; 
     274                                        the_parameter = '$FilteredMessage'; 
     275                                //}else{ 
     276                                //      return; 
     277                                //} 
     278                        }  
    219279                        if (type == 'fileinto') {  
    220280                                the_parameter = form.valueFileInto; 
     
    223283                                the_parameter = form.messageReject; 
    224284                        } 
    225                         if (type == 'fileintoInbox') {  
     285                        if (type == 'fileintoInbox') { 
    226286                                if(!$('[value="fileintoInbox"]').parent().hasClass("hidden")){ 
    227287                                        type = 'fileinto'; 
     
    238298                                the_parameter = form.addressRedirect; 
    239299                        } 
    240                         if (type == 'setflag') {  
     300                        if (type == 'setflag') { 
    241301                                the_parameter = form.valueSetFlag; 
    242302                                action = form.valueSetFlag; 
     
    247307                }), 
    248308                enabled : true, 
     309                alertMessage: $('.alertMessage').is(':checked'), 
     310                //applyMessages: allMessages? !$.isEmptyObject( selectedMessages ) ? 
     311                //keys( selectedMessages ) : allMessages : "" 
    249312                applyMessages: apply_messages_  
     313                //applyMessages: "" 
    250314    }; 
    251315  }, 
    252    
     316 
    253317  encoder: function( filters ){ 
    254318        var rules = []; 
     
    260324 
    261325  } 
    262    
     326 
    263327}); 
    264328 
    265329/* Codec do datalayer */ 
    266330DataLayer.codec( "folder", "select", { 
    267    
     331 
    268332  decoder:function(){ 
    269      
     333 
    270334  }, 
    271335  encoder:function( data ){ 
    272   
     336 
    273337      var tree1 = [], tree2 = [], tree3 = []; 
    274338 
     
    295359 
    296360      } 
    297        
     361 
    298362      return {folders: [ tree1, tree2, tree3 ]}; 
    299363 
     
    301365 
    302366}); 
     367 
     368 
     369fromRules = getFromAlertRules(); 
    303370 
    304371var BASE_PATH = '../prototype/'; 
     
    310377var allMessages = false; 
    311378 
    312 /* Bloqueio de usuários na tela de mensagem do ExpressoMail */ 
    313 function block_user_email(email) {  
     379/*  
     380 * Bloqueia usuário por email - utilizado na tela de mensagens do ExpressoMail 
     381 */ 
     382function block_user_email(email) { 
    314383        delete selectedMessages; 
    315384        var idd = urlencode(email); 
     
    324393                                        $.Zebra_Dialog(get_lang("Lock User") + " " + email + " " + get_lang("removed")); 
    325394                                        list_filters(); 
     395                                        getFromAlertRules(); 
    326396                                }); 
    327397                                return true; 
     
    331401        } 
    332402        if(confirm(get_lang("Want to block the user") + " " + email + "?")){ 
    333                 DataLayer.put( 'filter', idd,  
    334                                         { name: email, isExact: false,  
     403                DataLayer.put( 'filter', idd, 
     404                                        { name: email, isExact: false, 
    335405                                                criteria:{ 0: {value: email, operator: "=", field: "from"} }, 
    336                                                 actions: { 0: {parameter: "INBOX" + cyrus_delimiter + "Spam", type: "fileinto"}},  
    337                                                 enabled: true,  
     406                                                actions: { 0: {parameter: "INBOX" + cyrus_delimiter + "Spam", type: "fileinto"}}, 
     407                                                enabled: true, 
    338408                                                id: email, 
    339                                                 block: true  
     409                                                block: true 
    340410                                        }); 
    341411                DataLayer.commit("filter", false, function(){ 
    342412                        $.Zebra_Dialog(get_lang("User") + " " + email + " " + get_lang("blocked")); 
    343413                        list_filters(); 
    344                 }); 
    345                  
     414                        getFromAlertRules(); 
     415                }); 
     416 
    346417        } 
    347418} 
    348419 
    349 /* Gerencia o grid das mensagens da caixa de entrada */ 
     420 
     421DataLayer.codec( 'message', 'jqGrid', { 
     422 
     423      encoder: function( data ){ 
     424 
     425          return( data ); 
     426 
     427      } 
     428}); 
     429 
     430/* Gerencia o grid das mensagens da caixa de entrada  
     431 * Mostra o grid de mensagens para aplicar a regra nas mensagens da caixa de entrada. 
     432 */ 
    350433function showGridMessages(thiss) { 
    351434        var criteria_list = list_container.find('[name="criteriaValue[]"]'); 
     
    366449        var options = ["from", "to", "subject", "body", "size"]; 
    367450        var criterias_ = new Array(); 
    368         var j = 0;               
    369         for (i in criteria_) { 
    370                 if(criteria_[i] != "") { 
    371                         (j == 0) ? criterias_[j] = {"0": options[i], "1": criteria_value_[i], "2": criteria_[i]} : criterias_[j] = {"0": "OR", "1": options[i], "2": criteria_value_[i], "3": criteria_[i]};  
    372                         j++; 
    373                 }        
    374         } 
     451 
     452        for (i in criteria_) 
     453                if(criteria_[i] != "") 
     454                    criterias_.push( criterias_.length ?  {"0": "OR", "1": options[i], "2": criteria_value_[i], "3": criteria_[i]} : {"0": options[i], "1": criteria_value_[i], "2": criteria_[i]} ); 
     455 
    375456        showGridButton = thiss.parent(); 
    376 //      .html('buscando mensagens...'); 
    377         showGridButton.siblings("#filtergrid-container").block({   
    378                                                         message: '<div id="loading-content"><div class="image"></div></div>',   
    379                                                         css: {   
    380                                                                 backgroundImage: 'url('+BASE_PATH+'modules/attach_message/images/loading.gif)',   
    381                                                                 backgroundRepeat: 'no-repeat',  
    382                                                                 backgroundPosition: 'center',  
    383                                                                 backgroundColor: 'transparent',  
    384                                                                 width: '32px',  
    385                                                                 height: '32px',  
    386                                                                 border:'none'   
    387                                                         },  
    388                                                         overlayCSS: {   
    389                                                                 backgroundColor: '#CCC',   
    390                                                                 opacity:         0.5  
    391                                                         }   
    392                                                 });  
    393  
    394         $.ajax({   
    395                 url: DataLayer.basePath + 'folder/INBOX/message&' +  $.param( {"filter": criterias_} ), 
    396                 dataType: 'json', 
    397                 success: function(data){ 
    398                         allMessages = data; 
    399  
    400                         var parametro =  { "filter": ( data != false ? [ "msgNumber", "IN", data ] : criterias_ ) }; 
    401                          
    402                         if (typeof grid !== "undefined") {  
    403                                 grid.jqGrid( 'setGridParam', { url: DataLayer.basePath + 'folder/INBOX/message&' +  $.param( parametro ) } ).trigger( 'reloadGrid' );  
    404                                 //return; 
    405                         } 
    406                         grid = showGridButton.siblings("#filtergrid-container").removeClass('empty-container') 
    407                         .html('<table class="hidden fields-search-messages-grid" id="fields-search-messages-grid"><tr><td/></tr></table><div class="hidden fields-search-messages-grid-pager" id="fields-search-messages-grid-pager"></div>') 
    408                         .children(".fields-search-messages-grid, .fields-search-messages-grid-pager").removeClass('hidden').filter(".fields-search-messages-grid").trigger( 'reloadGrid' ).jqGrid({ 
    409                                 //url: DataLayer.basePath + 'folder/INBOX/message&' +  $.param( {"filter": [ "msgNumber", "IN", data ]} ), 
    410                                 url: DataLayer.basePath + 'folder/INBOX/message&' +  $.param( parametro ), 
    411                                 datatype: "json", 
    412                                 mtype: 'GET', 
    413                                 colNames:['#', 'De', 'Assunto', 'Data', 'Tamanho'], 
    414                                 colModel:[ 
    415                                         {name:'msg_number',index:'msg_number', width:45, hidden:true, sortable:false}, 
    416                                         {name:'from.email',index:'msg_number', width:130, sortable:false}, 
    417                                         {name:'subject',index:'subject', width:250, sortable:false}, 
    418                                         {name:'timestamp',index:'timestamp', width:65, align:"center", sortable:false, formatter:date2Time}, 
    419                                         {name:'size',index:'size', width:50, align:"right", sortable:false, formatter:bytes2Size} 
    420                                 ], 
    421                                 jsonReader : { 
    422                                         root:"rows", 
    423                                         page: "page", 
    424                                         total: "total", 
    425                                         records: "records", 
    426                                         repeatitems: false, 
    427                                         id: "0" 
    428                                 }, 
    429                                 rowNum:10, 
    430                                 //rowList:[10,25,50], 
    431                                 rowList:[10], 
    432                                 pager: '#fields-search-messages-grid-pager', 
    433                                 sortname: 'id', 
    434                                 viewrecords: true, 
    435                                 sortorder: "desc", 
    436                                 multiselect: true, 
    437                                 autowidth: true, 
    438                                 reloadAfterEdit: true, 
    439                                 reloadAfterSubmit: true, 
    440                                 height:200, 
    441                                 loadComplete: function(data) { 
    442                           //                            // aplica o contador 
    443                           //                            jQuery('.timable').each(function (i) { 
    444                           //                                    jQuery(this).countdown({ 
    445                           //                                            since: new Date(parseInt(this.title)),  
    446                           //                                            significant: 1, 
    447                           //                                            layout: 'h&aacute; {d<}{dn} {dl} {d>}{h<}{hn} {hl} {h>}{m<}{mn} {ml} {m>}{s<}{sn} {sl}{s>}',  
    448                           //                                            description: ' atr&aacute;s' 
    449                           //                                    }); 
    450                           //                            }); 
    451                                 }, 
    452                                 onSelectRow: function (id, selected) { 
    453                                         if( selected )  
    454                                         { 
    455                                                 selectedMessages[ id ] = true; 
    456                                         } 
    457                                         else 
    458                                         { 
    459                                                 delete selectedMessages[ id ]; 
    460                                         } 
    461                                 }, 
    462                                 onSelectAll: function (id, selected) {                                   
    463                                         for (i in id) { 
    464                                                 if(selected) 
    465                                                         selectedMessages[id[i]] = true; 
    466                                                 else 
    467                                                         delete selectedMessages[id[i]];  
    468                                         } 
    469                                 }, 
    470                                 caption: 'Mensagens que atendem aos crit&eacute;rios' 
    471                         }); // end jqGrid 
    472                 } // end success 
    473         }); // end ajax 
     457 
     458        showGridButton.siblings("#filtergrid-container").block({ 
     459                                                        message: '<div id="loading-content"><div class="image"></div></div>', 
     460                                                        css: { 
     461                                                                backgroundImage: 'url('+BASE_PATH+'modules/attach_message/images/loading.gif)', 
     462                                                                backgroundRepeat: 'no-repeat', 
     463                                                                backgroundPosition: 'center', 
     464                                                                backgroundColor: 'transparent', 
     465                                                                width: '32px', 
     466                                                                height: '32px', 
     467                                                                border:'none' 
     468                                                        }, 
     469                                                        overlayCSS: { 
     470                                                                backgroundColor: '#CCC', 
     471                                                                opacity:         0.5 
     472                                                        } 
     473                                                }); 
     474 
     475        var data = DataLayer.get( 'message', { filter: criterias_, criteria: { properties: { context: { folder: 'INBOX' } } } }, true ); 
     476 
     477        DataLayer.register( 'criterias', 'message:jqGrid', function( crit ){ 
     478 
     479                    crit.properties = { context: { folder: 'INBOX' } }; 
     480 
     481                    return { filter: [ "msgNumber", "IN", data ], criteria: crit }; 
     482        }); 
     483 
     484        allMessages = data; 
     485 
     486        if (typeof grid !== "undefined") { 
     487                grid.jqGrid( 'setGridParam', { url: 'message:jqGrid', postData: data } ).trigger( 'reloadGrid' ); 
     488                //return; 
     489        } 
     490        grid = showGridButton.siblings("#filtergrid-container").removeClass('empty-container') 
     491        .html('<table class="hidden fields-search-messages-grid" id="fields-search-messages-grid"><tr><td/></tr></table><div class="hidden fields-search-messages-grid-pager" id="fields-search-messages-grid-pager"></div>') 
     492        .children(".fields-search-messages-grid, .fields-search-messages-grid-pager").removeClass('hidden').filter(".fields-search-messages-grid").trigger( 'reloadGrid' ).jqGrid({ 
     493                url: 'message:jqGrid', 
     494                datatype: "json", 
     495                mtype: 'GET', 
     496                colNames:['#', 'De', 'Assunto', 'Data', 'Tamanho'], 
     497                colModel:[ 
     498                        {name:'msg_number',index:'msg_number', width:45, hidden:true, sortable:false}, 
     499                        {name:'from.email',index:'msg_number', width:130, sortable:false}, 
     500                        {name:'subject',index:'subject', width:250, sortable:false}, 
     501                        {name:'timestamp',index:'timestamp', width:65, align:"center", sortable:false, formatter:date2Time}, 
     502                        {name:'size',index:'size', width:50, align:"right", sortable:false, formatter:bytes2Size} 
     503                ], 
     504                jsonReader : { 
     505                        root:"rows", 
     506                        page: "page", 
     507                        total: "total", 
     508                        records: "records", 
     509                        repeatitems: false, 
     510                        id: "0" 
     511                }, 
     512                rowNum:10, 
     513                //rowList:[10,25,50], 
     514                rowList:[10], 
     515                pager: '#fields-search-messages-grid-pager', 
     516                sortname: 'id', 
     517                viewrecords: true, 
     518                sortorder: "desc", 
     519                multiselect: true, 
     520                autowidth: true, 
     521                reloadAfterEdit: true, 
     522                reloadAfterSubmit: true, 
     523                height:200, 
     524                loadComplete: function(data) { 
     525          //                            // aplica o contador 
     526          //                            jQuery('.timable').each(function (i) { 
     527          //                                    jQuery(this).countdown({ 
     528          //                                            since: new Date(parseInt(this.title)), 
     529          //                                            significant: 1, 
     530          //                                            layout: 'h&aacute; {d<}{dn} {dl} {d>}{h<}{hn} {hl} {h>}{m<}{mn} {ml} {m>}{s<}{sn} {sl}{s>}', 
     531          //                                            description: ' atr&aacute;s' 
     532          //                                    }); 
     533          //                            }); 
     534                }, 
     535                onSelectRow: function (id, selected) { 
     536                        if( selected ) 
     537                        { 
     538                                selectedMessages[ id ] = true; 
     539                        } 
     540                        else 
     541                        { 
     542                                delete selectedMessages[ id ]; 
     543                        } 
     544                }, 
     545                onSelectAll: function (id, selected) { 
     546                        for (i in id) { 
     547                                if(selected) 
     548                                        selectedMessages[id[i]] = true; 
     549                                else 
     550                                        delete selectedMessages[id[i]]; 
     551                        } 
     552                }, 
     553                caption: 'Mensagens que atendem aos crit&eacute;rios' 
     554        }); // end jqGrid 
    474555} 
    475556 
    476557/* Gerencia a listagem de filtros do usuário */ 
     558/*  
     559 * Lista os filtros para o usuário 
     560 */ 
    477561function list_filters(html){ 
    478562        outOfficeVerify(); 
     
    486570        } 
    487571        list_container = $(".expresso-window-filters").dialog({ 
     572                title: get_lang('Filters'), 
    488573            width:700, 
    489574            modal: true, 
     
    493578                    event.stopPropagation(); 
    494579                        if(list_container.find(".cancel").length) 
    495                                 list_container.find(".cancel").trigger('click');         
     580                                list_container.find(".cancel").trigger('click'); 
    496581                        $(".dialog-head-buttonpane").hide(); 
    497582            }, 
     
    516601        $(".dialog-head-buttonpane").css("padding", "5px"). 
    517602        find(".header-buttonpane").html("<a href='#' class='button add' title='"+get_lang("Add new rule")+"'>"+get_lang("New rule")+"</a>"+(!outoffice ? "<a href='#' class='button add vacation' title='"+get_lang("Add rule out of office")+"'>"+get_lang("Out of office")+"</a>" : "")).find(".button").button(); 
    518          
     603 
    519604        $(".ui-dialog-buttonpane.ui-widget-content").css("background-color", "#E0EEEE"); 
    520605        var list = DataLayer.render( BASE_PATH + 'modules/filters/filter-list.ejs', DataLayer.get("filter:detail", true)); 
    521606        list_container.html(list).find(".button").button(); 
    522          
     607 
    523608        list_container.find(".rule-list").selectable({ 
    524609                selecting: function(event, ui) { 
     
    529614                } 
    530615        }); 
    531          
     616 
    532617        list_container.find( ".menu-control .button" ).filter(".update").button({ 
    533618                icons: { 
     
    542627                                filters = filters[i]; 
    543628                                break; 
    544                         }        
     629                        } 
    545630                } 
    546631                DataLayer.render( BASE_PATH + 'modules/filters/edit-filter.ejs', {folders : DataLayer.get("folder", true), delimiter: cyrus_delimiter},function(html){ 
     
    571656                                        else 
    572657                                                return; 
    573                                         DataLayer.commit( 'filter', false,function(){                                            
    574                                                 if($('#gbox_fields-search-messages-grid').length > 0 && action != '') {  
     658                                        DataLayer.commit( 'filter', false,function(data){ 
     659                                                if(filters['alertMessage'] == "true"){ 
     660                                                        if(filters['alertMessage'] != $('.alertMessage').is(':checked').toString()){ 
     661                                                                /**RETIRA FLAG*/ 
     662                                                                removeMessagesFlag(filters['id']); 
     663                                                        } 
     664                                                } 
     665                                                if($('#gbox_fields-search-messages-grid').length > 0 && action != '') { 
    575666                                                        for (var index in selectedMessages) { 
    576667                                                                set_message_flag(index, action, false); 
     
    578669                                                } 
    579670                                                DataLayer.render( BASE_PATH + 'modules/filters/init.ejs', {},list_filters); 
     671                                                getFromAlertRules(); 
    580672                                        }); 
    581                                 }).end().filter('.button.search').click(function() {                             
     673                                }).end().filter('.button.search').click(function() { 
    582674                                        /* Valida se o usuário preencheu as informações */ 
    583675                                        if(valid_save()) 
     
    595687                                        DataLayer.commit( 'filter', false,function(){ 
    596688                                                DataLayer.render( BASE_PATH + 'modules/filters/init.ejs', {},list_filters); 
     689                                                getFromAlertRules(); 
    597690                                        }); 
    598691                                }); 
     
    607700                text: false 
    608701        }).click(function(){ 
    609                 var id = $(this).parents("li.rule").find('.id').val();           
     702                var id = $(this).parents("li.rule").find('.id').val(); 
    610703                DataLayer.put( 'filter', id, { enabled: false  }); 
     704                /**RETIRA FLAG*/ 
     705                removeMessagesFlag(id); 
    611706                DataLayer.commit("filter", false,function(){ 
    612707                        DataLayer.render( BASE_PATH + 'modules/filters/init.ejs', {},list_filters); 
     708                        getFromAlertRules(); 
    613709                }); 
    614710        }).end() 
     
    624720                DataLayer.commit("filter", false,function(){ 
    625721                        DataLayer.render( BASE_PATH + 'modules/filters/init.ejs', {},list_filters); 
     722                        getFromAlertRules(); 
    626723                }); 
    627724        }).end() 
    628          
     725 
    629726        .filter(".close").button({ 
    630727                icons: { 
     
    644741                                        DataLayer.remove('filter', false); 
    645742                                        DataLayer.get('filter'); 
     743                                        /**RETIRA FLAG*/ 
     744                                        removeMessagesFlag(filter_name); 
    646745                                        DataLayer.remove( 'filter', filter_name); 
     746 
    647747                                        DataLayer.commit("filter", false,function(){ 
    648748                                                DataLayer.render( BASE_PATH + 'modules/filters/init.ejs', {},list_filters); 
     749                                                getFromAlertRules(); 
    649750                                        }); 
    650751                                }else{ 
     
    654755                }); 
    655756        }).end().removeClass("ui-button-icon-only"); 
    656          
     757 
    657758        $(".button.allenable").click(function(){ 
    658759                container.find('.rule-list').find('.rule').find('.select').find(':checked').parents('.rule').find('.title').each(function(i,o){ 
    659                         DataLayer.put( 'filter', o.innerHTML, { enabled: true  }); 
     760                        DataLayer.put( 'filter', urlencode(o.innerHTML), { enabled: true  }); 
    660761                }); 
    661762                DataLayer.commit("filter", false, function(){ 
    662763                        DataLayer.render( BASE_PATH + 'modules/filters/init.ejs', {},list_filters); 
    663                 }); 
    664         }); 
    665          
     764                        getFromAlertRules(); 
     765                }); 
     766        }); 
     767 
    666768        $(".button.alldisable").click(function(){ 
    667769                container.find('.rule-list').find('.rule').find('.select').find(':checked').parents('.rule').find('.title').each(function(i,o){ 
    668                         DataLayer.put( 'filter', o.innerHTML, { enabled: false  }); 
     770                        DataLayer.put( 'filter', urlencode(o.innerHTML), { enabled: false  }); 
     771                        /**RETIRA FLAG*/ 
     772                        removeMessagesFlag(o.innerHTML); 
    669773                }); 
    670774                DataLayer.commit("filter", false, function(){ 
    671775                        DataLayer.render( BASE_PATH + 'modules/filters/init.ejs', {},list_filters); 
    672                 }); 
    673         }); 
    674          
     776                        getFromAlertRules(); 
     777                }); 
     778        }); 
     779 
    675780        $(".button.alldelete").click(function(){ 
    676781                $.Zebra_Dialog(get_lang("Are you sure to delete the filters?"),{ 
     
    683788                                        DataLayer.remove('filter', false); 
    684789                                        DataLayer.get('filter'); 
    685                                         container.find('.rule-list').find('.rule').find('.select').find(':checked').parents('.rule').find('.title').each(function(i,o){                                          
    686                                                 removeMessagesFlag(urlencode(o.innerHTML));       
    687                                                 filter_Name = urlencode(o.innerHTML.replace(".", "_"));  
    688                                                 DataLayer.remove( 'filter', (filter_Name) ); 
     790                                        container.find('.rule-list').find('.rule').find('.select').find(':checked').parents('.rule').find('.title').each(function(i,o){ 
     791                                                /**RETIRA FLAG*/ 
     792                                                removeMessagesFlag(urlencode(o.innerHTML));      
     793                                                filter_Name = urlencode(o.innerHTML.replace(".", "_")); 
     794                                                DataLayer.remove( 'filter', (filter_Name) ); 
    689795                                        }); 
    690796                                        DataLayer.commit("filter", false,function(){ 
    691797                                                DataLayer.render( BASE_PATH + 'modules/filters/init.ejs', {},list_filters); 
     798                                                getFromAlertRules(); 
    692799                                        }); 
    693800                                }else{ 
     
    697804                }); 
    698805        }); 
    699          
     806 
    700807        var aa = 0; 
    701          
     808 
    702809        list_container.parent().find(".button.add:first").click(function(){ 
    703810                list_container.parent().find(".dialog-head-buttonpane").addClass("hidden"); 
     
    721828                                        return; 
    722829                                DataLayer.commit( 'filter',false,function(){ 
    723                                         if($('#gbox_fields-search-messages-grid').length > 0 && action != '') {  
     830                                        if($('#gbox_fields-search-messages-grid').length > 0 && action != '') { 
    724831                                                for (var index in selectedMessages) { 
    725832                                                        set_message_flag(index, action, false); 
     
    727834                                        } 
    728835                                        DataLayer.render( BASE_PATH + 'modules/filters/init.ejs', {},list_filters); 
     836                                        getFromAlertRules(); 
    729837                                }); 
    730                         }).end().filter('.button.search').click(function() {                             
     838                        }).end().filter('.button.search').click(function() { 
    731839                                if(valid_save()) 
    732840                                        showGridMessages($(this)); 
     
    737845        }); 
    738846        list_container.parent().find(".button.add.vacation").click(function(){ 
    739          
     847 
    740848                list_container.parent().find(".dialog-head-buttonpane").addClass("hidden"); 
    741849                DataLayer.render( BASE_PATH + 'modules/filters/edit-filter.ejs', {folders : DataLayer.get("folder", true), delimiter: cyrus_delimiter},function(html){ 
     
    745853                        list_container.find(".button").button().filter(".back").click(function(){ 
    746854                                DataLayer.render( BASE_PATH + 'modules/filters/init.ejs', {},list_filters); 
    747                         }).end().filter(".submit").click(function(){                     
     855                        }).end().filter(".submit").click(function(){ 
    748856                                if(list_container.find(".vacation-details-container .filter-textarea").val().length <= 0){ 
    749857                                                $.Zebra_Dialog(get_lang('Write a message')); 
     
    753861                                        DataLayer.commit( 'filter',false,function(){ 
    754862                                                DataLayer.render( BASE_PATH + 'modules/filters/init.ejs', {},list_filters); 
     863                                                getFromAlertRules(); 
    755864                                        }); 
    756865                                } 
    757866                        }); 
    758                 });      
     867                }); 
    759868        }); 
    760869} 
    761870 
    762 /* Inicializa os filtros e chama o list_filters */ 
     871 
     872/* Inicializa os filtros e chama o list_filters  
     873 * Inicia a funcionalidade de filtros de mensagens 
     874 */ 
    763875function  init_filters(){ 
    764876        var html = DataLayer.render( BASE_PATH + 'modules/filters/init.ejs', {}); 
    765877        list_filters(html); 
    766878} 
     879 
     880/* 
     881 * Ao excluir filtro, desabilitar filtro ou retirar a ação Alerta de um filtro 
     882 * esta função é chamada para retirar as flags que caracterizam uma mensagem como alertada pelos Filtros por Remetente  
     883 */ 
     884function removeMessagesFlag(id){ 
     885        var filters_c = DataLayer.get('filter', urlencode(id)); 
     886        var folder = ''; 
     887        var from = '';   
     888        if(filters_c['actions']) 
     889        for(var i=0; i < filters_c['actions'].length; i++){ 
     890                if(filters_c['actions'][i].type == 'fileinto'){ 
     891                        folder = filters_c['actions'][i].parameter; 
     892                } 
     893        } 
     894        $.each(fromRules, function(index, value) { 
     895                if(value == folder){ 
     896                        for(var i=0; i < filters_c['criteria'].length; i++){ 
     897                                if(filters_c['criteria'][i].field == 'from'){ 
     898                                        from = filters_c['criteria'][i].value; 
     899                                } 
     900                        } 
     901                        cExecute ("$this.imap_functions.removeFlagMessagesFilter&folder="+folder+"&from="+from, function(){});  
     902                        return false; 
     903                } 
     904        }); 
     905} 
Note: See TracChangeset for help on using the changeset viewer.