Ignore:
Timestamp:
10/08/13 16:20:46 (11 years ago)
Author:
douglas
Message:

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

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2.5/prototype/modules/filters/filters.js

    r7863 r8232  
    22 * Retorna as regras por remetente e que o usuário deseja ser avisado  
    33 */ 
    4 function 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; 
     4function getFromAlertRules() { 
     5    fromRules = []; 
     6    if(preferences['use_alert_filter_criteria'] == "1") 
     7    { 
     8        var filters = DataLayer.get("filter"); 
     9        var alertMessage; 
     10        var active; 
     11        for (var index in filters) { 
     12            alertMessage = filters[index]['alertMessage']; 
     13            active = filters[index]['enabled']; 
     14            for(var criterias in filters[index]['actions']) { 
     15                if (filters[index]['actions'][criterias]['type'] == 'fileinto' && alertMessage == 'true' && active == 'true') 
     16                    fromRules[fromRules.length] = filters[index]['actions'][criterias]['parameter']; 
     17            } 
     18        } 
     19 
     20    } 
     21    return fromRules; 
    1822} 
    1923 
     
    401405}); 
    402406 
    403  
    404 fromRules = getFromAlertRules(); 
     407if(preferences['use_alert_filter_criteria'] == "1") 
     408{ 
     409    fromRules = getFromAlertRules(); 
     410} 
    405411 
    406412var BASE_PATH = '../prototype/'; 
     
    439445        } 
    440446        if(confirm(get_lang("Want to block the user") + " " + email + "?")){ 
     447        var has_folder_spam = false; 
     448        var folder_spam = "INBOX"+cyrus_delimiter+"Spam"; 
     449        $.each(cp_tree1, function(index, value){ 
     450            if(value.id == folder_spam){ 
     451                has_folder_spam = true; 
     452                return; 
     453            } 
     454        }); 
     455        if(!has_folder_spam){ 
     456            connector.loadScript('TreeS'); 
     457            create_new_folder("Spam","INBOX"); 
     458        } 
    441459                DataLayer.put( 'filter', idd, 
    442460                                        { name: email, isExact: false, 
    443461                                                criteria:{ 0: {value: email, operator: "=", field: "from"} }, 
    444                                                 actions: { 0: {parameter: "INBOX" + cyrus_delimiter + "Spam", type: "fileinto"}}, 
     462                                                actions: { 0: {parameter: folder_spam, type: "fileinto"}}, 
    445463                                                enabled: true, 
    446464                                                id: email, 
     
    461479 
    462480DataLayer.codec( 'message', 'jqGrid', { 
     481 
     482      encoder: function( data ){ 
     483 
     484          return( data ); 
     485 
     486      } 
     487}); 
     488 
     489DataLayer.codec( 'message', 'jqGridSearch', { 
    463490 
    464491      encoder: function( data ){ 
     
    491518        var criterias_ = new Array(); 
    492519 
    493     var isExact = (list_container.find('[name="isExact"]:checked').val() == 'and') ? 'yes' : 'no';  
    494   
     520    var isExact = (list_container.find('[name="isExact"]:checked').val() == 'and') ? 'yes' : 'no'; 
     521 
    495522        for (i in criteria_) 
    496523                if(criteria_[i] != "") 
     
    605632 * Lista os filtros para o usuário 
    606633 */ 
    607 function list_filters(html){ 
     634function list_filters(html) {  
    608635        outOfficeVerify(); 
    609         for (var index in selectedMessages) { 
     636        for (var index in selectedMessages)  
     637        { 
    610638                delete selectedMessages[index]; 
    611639        } 
    612         if(html){ 
    613                 if( ! $(".filters-windows").length ) 
    614                         container = $('.expressomail-module-container').append("<div class='filters-windows'></div>").find(".filters-windows").html( html ).find(".expresso-window-container"); 
    615                 list_container = $('.expressomail-module-container').find(".rule-list-container"); 
    616         } 
    617         list_container = $(".expresso-window-filters").dialog({ 
    618                 title: get_lang('Filters'), 
    619             width:700, 
    620             modal: true, 
    621                 resizable: false, 
    622             closeOnEscape:true, 
    623             close:function(event, ui) { 
    624                     event.stopPropagation(); 
    625                         if(list_container.find(".cancel").length) 
    626                                 list_container.find(".cancel").trigger('click'); 
    627                         $(".dialog-head-buttonpane").hide(); 
    628             }, 
    629                 open: function () { 
    630                         $(".ui-dialog .ui-dialog-titlebar") 
    631                         .append('<a href="#" class="ui-dialog-titlebar-minimize ui-corner-all" role="button"><span class="ui-icon ui-icon-minusthick">minimize</span></a>') 
    632                         .find('.ui-dialog-titlebar-minimize').click(function() { 
    633                                 $(".ui-dialog-buttonpane, .ui-dialog-content").toggle(); 
    634                                 $(".ui-icon-minusthick, .ui-icon-newwin").toggleClass('ui-icon-minusthick').toggleClass('ui-icon-newwin'); 
    635                         }); 
    636                         $(".dialog-head-buttonpane").show(); 
    637                 }, 
    638             autoOpen: false, 
    639                 buttons: [{ 
    640                         text : get_lang("Close"), 
    641                         click : function() { 
    642                                 $( this ).dialog( "close" ); 
    643                         } 
    644                 }] 
    645     }); 
    646         $(".ui-dialog-titlebar").after("<div class='dialog-head-buttonpane ui-dialog-buttonpane ui-widget-content ui-helper-clearfix' style='background-color: rgb(224, 238, 238); '><div class='ui-dialog-buttonset header-buttonpane'></div></div>"); 
    647         $(".dialog-head-buttonpane").css("padding", "5px"). 
    648         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(); 
    649  
    650         $(".ui-dialog-buttonpane.ui-widget-content").css("background-color", "#E0EEEE"); 
     640  
     641        initialize_container(html); // Inicializa o container do diálogo de filtros  
     642  
     643        list_container = create_filter_dialog(); // Cria a estrutura básica do diálogo  
     644         
    651645        var list = DataLayer.render( BASE_PATH + 'modules/filters/filter-list.ejs', DataLayer.get("filter:detail", true)); 
    652646        list_container.html(list).find(".button").button(); 
    653  
     647    list_container.find(".alldelete").button("disable"); 
     648    list_container.find(".alldisable").button("disable"); 
     649    list_container.find(".allenable").button("disable"); 
     650     
    654651        list_container.find(".rule-list").selectable({ 
    655652                selecting: function(event, ui) { 
     
    660657                } 
    661658        }); 
     659 
     660    list_container.find(".rule-list li").click(function(){ 
     661        if(list_container.find(".select").children("input:checked").length){ 
     662            list_container.find(".alldelete").button("enable"); 
     663            list_container.find(".alldisable").button("enable"); 
     664            list_container.find(".allenable").button("enable"); 
     665        } else { 
     666            list_container.find(".alldelete").button("disable"); 
     667            list_container.find(".alldisable").button("disable"); 
     668            list_container.find(".allenable").button("disable"); 
     669        } 
     670    }); 
    662671 
    663672        list_container.find( ".menu-control .button" ).filter(".update").button({ 
     
    716725                                                DataLayer.render( BASE_PATH + 'modules/filters/init.ejs', {},list_filters); 
    717726                                                getFromAlertRules(); 
     727                                                if (get_current_folder() == "INBOX") 
     728                                                        cExecute ("$this.imap_functions.get_range_msgs2&folder=INBOX&msg_range_begin=1&msg_range_end="+preferences.max_email_per_page+"&sort_box_type=SORTARRIVAL&search_box_type=ALL&sort_box_reverse=1", handler_draw_box); 
    718729                                        }); 
    719730 
     
    868879 
    869880        list_container.parent().find(".button.add:first").click(function(){ 
    870                 list_container.parent().find(".dialog-head-buttonpane").addClass("hidden"); 
    871                 DataLayer.render( BASE_PATH + 'modules/filters/edit-filter.ejs', {folders : DataLayer.get("folder", true), delimiter: cyrus_delimiter},function(html){ 
    872                         list_container.html(html); 
    873                         var accord = list_container.find(".rule-details-container").accordion({autoHeight: false}); 
    874                         list_container.find(".button").button().filter(".forth").click(function(){ 
    875                                 accord.accordion('activate',1); 
    876                         }).end().filter(".forth2").click(function(){ 
    877                                 accord.accordion('activate',2); 
    878                         }).end().filter(".back").click(function(){ 
    879                                 accord.accordion('activate',0); 
    880                         }).end().filter(".back2").click(function(){ 
    881                                 accord.accordion('activate',1); 
    882                         }).end().filter(".cancel").click(function(){ 
    883                                 DataLayer.render( BASE_PATH + 'modules/filters/init.ejs', {},list_filters); 
    884                         }).end().filter(".submit").click(function() { 
    885                                 if(valid_save()) 
    886                                         $(this).submit(); 
    887                                 else 
    888                                         return; 
    889                                 DataLayer.commit( 'filter',false,function(){ 
    890                                         if($('#gbox_fields-search-messages-grid').length > 0 && action != '') { 
    891                                                 for (var index in selectedMessages) { 
    892                                                         set_message_flag(index, action, false); 
    893                                                 } 
    894                                         } 
    895                                         DataLayer.render( BASE_PATH + 'modules/filters/init.ejs', {},list_filters); 
    896                                         getFromAlertRules(); 
    897                                 }); 
    898                         }).end().filter('.button.search').click(function() { 
    899                                 if(valid_save()) 
    900                                         showGridMessages($(this)); 
    901                                 else 
    902                                         return; 
    903                         }); // end function click 
    904                 });     // end DataLayer.render 
     881                render_new_rule(); // Renderiza a tela de criação de nova regra de filtragem.  
    905882        }); 
    906883        list_container.parent().find(".button.add.vacation").click(function(){ 
     
    932909} 
    933910 
     911/*  
     912        Inicializa o container do diálogo de gerenciamento de filtros.  
     913*/  
     914function initialize_container (html) {  
     915        if(html)  
     916        {  
     917                if(!$(".filters-windows").length)   
     918                {  
     919                        container = $('.expressomail-module-container').append("<div class='filters-windows'></div>").find(".filters-windows").html(html).find(".expresso-window-container");  
     920                }  
     921        }  
     922}  
     923  
     924/*  
     925        Cria a estrutura básica do diálogo de gerenciamento de filtros.  
     926*/  
     927function create_filter_dialog () {  
     928        var dialog = $(".expresso-window-filters").dialog(  
     929        {  
     930                title: get_lang('Filters'),  
     931                width: 700,  
     932                modal: true,  
     933                resizable: false,  
     934                closeOnEscape: true,  
     935                close: function(event, ui)  
     936                {  
     937                        event.stopPropagation();  
     938                        if(list_container.find(".cancel").length) list_container.find(".cancel").trigger('click');  
     939                        $(".dialog-head-buttonpane").hide();  
     940                },  
     941                open: function()  
     942                {  
     943                        $(".ui-dialog .ui-dialog-titlebar").append('<a href="#" class="ui-dialog-titlebar-minimize ui-corner-all" role="button"><span class="ui-icon ui-icon-minusthick">minimize</span></a>').find('.ui-dialog-titlebar-minimize').click(function()  
     944                        {  
     945                                $(".ui-dialog-buttonpane, .ui-dialog-content").toggle();  
     946                                $(".ui-icon-minusthick, .ui-icon-newwin").toggleClass('ui-icon-minusthick').toggleClass('ui-icon-newwin');  
     947                        });  
     948                        $(".dialog-head-buttonpane").show();  
     949                },  
     950                autoOpen: false,  
     951                buttons: [  
     952                {  
     953                        text: get_lang("Close"),  
     954                        click: function()  
     955                        {  
     956                                $(this).dialog("close");  
     957                        }  
     958                }]  
     959        });  
     960  
     961        $(".ui-dialog-titlebar").after("<div class='dialog-head-buttonpane ui-dialog-buttonpane ui-widget-content ui-helper-clearfix' style='background-color: rgb(224, 238, 238); '><div class='ui-dialog-buttonset header-buttonpane'></div></div>");  
     962        $(".dialog-head-buttonpane").css("padding", "5px").  
     963        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();  
     964        $(".ui-dialog-buttonpane.ui-widget-content").css("background-color", "#E0EEEE");  
     965  
     966        return dialog;  
     967}  
     968  
     969/*  
     970        Renderiza a tela de adição de uma nova regra de filtragem,   
     971        dentro do diálogo de gerenciamento de filtros.  
     972*/  
     973function render_new_rule (from, subject) {  
     974        list_container.parent().find(".dialog-head-buttonpane").addClass("hidden");  
     975        var data = {  
     976                folders: DataLayer.get("folder", true),  
     977                delimiter: cyrus_delimiter,  
     978                from: from,  
     979                subject: subject ? html_entities(subject) : subject  
     980        }  
     981  
     982        DataLayer.render(BASE_PATH + 'modules/filters/edit-filter.ejs', data, function(html)  
     983        {  
     984                list_container.html(html);  
     985                var accord = list_container.find(".rule-details-container").accordion(  
     986                {  
     987                        autoHeight: false  
     988                });  
     989                list_container.find(".button").button().filter(".forth").click(function()  
     990                {  
     991                        accord.accordion('activate', 1);  
     992                }).end().filter(".forth2").click(function()  
     993                {  
     994                        accord.accordion('activate', 2);  
     995                }).end().filter(".back").click(function()  
     996                {  
     997                        accord.accordion('activate', 0);  
     998                }).end().filter(".back2").click(function()  
     999                {  
     1000                        accord.accordion('activate', 1);  
     1001                }).end().filter(".cancel").click(function()  
     1002                {  
     1003                        DataLayer.render(BASE_PATH + 'modules/filters/init.ejs', {}, list_filters);  
     1004                }).end().filter(".submit").click(function()  
     1005                {  
     1006                        if(valid_save()) $(this).submit();  
     1007                        else return;  
     1008                        DataLayer.commit('filter', false, function()  
     1009                        {  
     1010                                if($('#gbox_fields-search-messages-grid').length > 0 && action != '')  
     1011                                {  
     1012                                        for(var index in selectedMessages)  
     1013                                        {  
     1014                                                set_message_flag(index, action, false);  
     1015                                        }  
     1016                                }  
     1017                                DataLayer.render(BASE_PATH + 'modules/filters/init.ejs', {}, list_filters);  
     1018                                getFromAlertRules();  
     1019                        });  
     1020                }).end().filter('.button.search').click(function()  
     1021                {  
     1022                        if(valid_save()) showGridMessages($(this));  
     1023                        else return;  
     1024                }); // end function click  
     1025        }); // end DataLayer.render  
     1026} 
    9341027 
    9351028/* Inicializa os filtros e chama o list_filters  
     
    9551048                } 
    9561049        } 
    957         $.each(fromRules, function(index, value) { 
    958                 if(value == folder){ 
    959                         for(var i=0; i < filters_c['criteria'].length; i++){ 
    960                                 if(filters_c['criteria'][i].field == 'from'){ 
    961                                         from = filters_c['criteria'][i].value; 
    962                                 } 
    963                         } 
    964                         cExecute ("$this.imap_functions.removeFlagMessagesFilter&folder="+folder+"&from="+from, function(){});  
    965                         return false; 
    966                 } 
    967         }); 
    968 } 
     1050 
     1051    if(preferences['use_alert_filter_criteria'] == "1") 
     1052    { 
     1053        $.each(fromRules, function(index, value) { 
     1054            if(value == folder){ 
     1055                for(var i=0; i < filters_c['criteria'].length; i++){ 
     1056                    if(filters_c['criteria'][i].field == 'from'){ 
     1057                        from = filters_c['criteria'][i].value; 
     1058                    } 
     1059                } 
     1060                cExecute ("$this.imap_functions.removeFlagMessagesFilter&folder="+folder+"&from="+from, function(){}); 
     1061                return false; 
     1062            } 
     1063        }); 
     1064    } 
     1065} 
Note: See TracChangeset for help on using the changeset viewer.