Changeset 8232 for branches/2.5/prototype/modules/filters
- Timestamp:
- 10/08/13 16:20:46 (11 years ago)
- Location:
- branches/2.5/prototype/modules/filters
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2.5/prototype/modules/filters/edit-filter.ejs
r7703 r8232 28 28 29 29 </select> 30 <input type="text" name="criteriaValue[]" />30 <input type="text" name="criteriaValue[]" value="<%= data.from %>" /> 31 31 <input type="hidden" name="criteriaType[]" value="from"/> 32 32 </fieldset> … … 53 53 54 54 </select> 55 <input type="text" name="criteriaValue[]" />55 <input type="text" name="criteriaValue[]" value="<%= data.subject %>" /> 56 56 <input type="hidden" name="criteriaType[]" value="subject"/> 57 57 </fieldset> … … 128 128 %> 129 129 </select> 130 <input type="checkbox" name="actionType[]" value="alertMessage" class="alertMessage"/> 131 <label><%= get_lang("Alert message filter by sender")%></label> 130 <% 131 if(preferences['use_alert_filter_criteria'] == "1") 132 {%> 133 <input type="checkbox" name="actionType[]" value="alertMessage" class="alertMessage"/> 134 <label><%= get_lang("Alert message filter by sender")%></label> 135 <%}%> 132 136 </fieldset> 133 137 <fieldset> -
branches/2.5/prototype/modules/filters/filters.css
r7612 r8232 47 47 48 48 .rule-list .rule .menu-control { 49 max-width: 100px;49 max-width: 80px; 50 50 float: right; 51 margin -top: -50px;51 margin: -50px 5px; 52 52 white-space: nowrap; 53 53 } 54 54 55 .rule-list .rule .menu-control .select { vertical-align: bottom; } 55 56 .rule-list .rule .menu-control .select input { margin: 5px 0 0 1px; } … … 122 123 } 123 124 .rule .menu-control .ui-button.disable,.rule .menu-control .ui-button.enable, .rule .menu-control .ui-button.update, .rule .menu-control .ui-button.close { top:5px; } 125 126 .rule .menu-control .ui-button.hidden { display: none; } 127 124 128 .filter-manager-window .ui-accordion-icons .ui-accordion-header a { padding-left: 2.2em; } 125 129 -
branches/2.5/prototype/modules/filters/filters.js
r7863 r8232 2 2 * Retorna as regras por remetente e que o usuário deseja ser avisado 3 3 */ 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; 4 function 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; 18 22 } 19 23 … … 401 405 }); 402 406 403 404 fromRules = getFromAlertRules(); 407 if(preferences['use_alert_filter_criteria'] == "1") 408 { 409 fromRules = getFromAlertRules(); 410 } 405 411 406 412 var BASE_PATH = '../prototype/'; … … 439 445 } 440 446 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 } 441 459 DataLayer.put( 'filter', idd, 442 460 { name: email, isExact: false, 443 461 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"}}, 445 463 enabled: true, 446 464 id: email, … … 461 479 462 480 DataLayer.codec( 'message', 'jqGrid', { 481 482 encoder: function( data ){ 483 484 return( data ); 485 486 } 487 }); 488 489 DataLayer.codec( 'message', 'jqGridSearch', { 463 490 464 491 encoder: function( data ){ … … 491 518 var criterias_ = new Array(); 492 519 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 495 522 for (i in criteria_) 496 523 if(criteria_[i] != "") … … 605 632 * Lista os filtros para o usuário 606 633 */ 607 function list_filters(html) {634 function list_filters(html) { 608 635 outOfficeVerify(); 609 for (var index in selectedMessages) { 636 for (var index in selectedMessages) 637 { 610 638 delete selectedMessages[index]; 611 639 } 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 651 645 var list = DataLayer.render( BASE_PATH + 'modules/filters/filter-list.ejs', DataLayer.get("filter:detail", true)); 652 646 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 654 651 list_container.find(".rule-list").selectable({ 655 652 selecting: function(event, ui) { … … 660 657 } 661 658 }); 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 }); 662 671 663 672 list_container.find( ".menu-control .button" ).filter(".update").button({ … … 716 725 DataLayer.render( BASE_PATH + 'modules/filters/init.ejs', {},list_filters); 717 726 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); 718 729 }); 719 730 … … 868 879 869 880 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. 905 882 }); 906 883 list_container.parent().find(".button.add.vacation").click(function(){ … … 932 909 } 933 910 911 /* 912 Inicializa o container do diálogo de gerenciamento de filtros. 913 */ 914 function 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 */ 927 function 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 */ 973 function 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 } 934 1027 935 1028 /* Inicializa os filtros e chama o list_filters … … 955 1048 } 956 1049 } 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 } -
branches/2.5/prototype/modules/filters/interceptors/FilterMapping.php
r7726 r8232 550 550 $actions['type'] = $rule_apply['actions'][0]['type']; 551 551 $actions['parameter'] = $rule_apply['actions'][0]['parameter']; 552 /* Hardcoded */ 553 $actions['keep'] = false; 552 553 $actions['keep'] = is_array($rule_apply['actions'][1]); 554 if ($actions['keep']) 555 $actions['value'] = $rule_apply['actions'][0]['parameter']; 554 556 555 557 //$messages = $rule_apply['applyMessages'];
Note: See TracChangeset
for help on using the changeset viewer.