Changeset 6021


Ignore:
Timestamp:
04/24/12 18:28:27 (12 years ago)
Author:
airton
Message:

Ticket #2652 - Adequacao das sincronizacoes realizadas pela tela de filtros de mensagens

Location:
trunk/prototype
Files:
4 edited

Legend:

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

    r5862 r6021  
    2020 
    2121[after.create] 
     22makeId = modules/filters/interceptors/FilterMapping.php 
    2223applySieveFilter = modules/filters/interceptors/FilterMapping.php 
    2324 
    2425 
    25 ;[after.update] 
    26 ;applySieveFilter = modules/filters/interceptors/FilterMapping.php 
     26[after.update] 
     27makeId = modules/filters/interceptors/FilterMapping.php 
    2728 
    2829 
  • trunk/prototype/modules/filters/filter-list.ejs

    r5985 r6021  
    4848<fieldset class="fields-selected-itens ui-corner-all"> 
    4949        <legend>Selecionadas</legend> 
    50         <a href="#" class="button enable"  title="Habilitar regras selecionadas">Habilitar</a> 
    51         <a href="#" class="button disable" title="Desabilitar regras selecionadas">Desabilitar</a> 
    52         <a href="#" class="button delete"  title="Excluir regras selecionadas">Excluir</a> 
     50        <a href="#" class="button allenable"  title="Habilitar regras selecionadas">Habilitar</a> 
     51        <a href="#" class="button alldisable" title="Desabilitar regras selecionadas">Desabilitar</a> 
     52        <a href="#" class="button alldelete"  title="Excluir regras selecionadas">Excluir</a> 
    5353</fieldset> 
  • trunk/prototype/modules/filters/filters.js

    r5995 r6021  
    44        var filters = DataLayer.get("filter"); 
    55        var outoffice_active = false; 
    6         var outoffice = false; 
     6        outoffice = false; 
    77        for(var index in filters){ 
    8                 DataLayer.put( 'filter', filters[index].id, { enabled: (filters[index].enabled == "true" ? true: false)}); 
    98                if(filters[index].id == "vacation") 
    109                        outoffice = true; 
     
    1514                } 
    1615        } 
     16        if(!outoffice_active) 
     17                clean_msg(); 
    1718} 
    1819 
     
    289290var selectedMessages = {}; 
    290291var allMessages = false; 
    291 //list_container = container.find(".rule-list-container"); 
    292 /* 
    293 var raster = function( html ){ 
    294     container = $('body.expressomail-module-container').append( html ).find(".expresso-window-container"); 
    295         list_container = container.find(".rule-list-container"); 
    296         details_container = container.find(".rule-details-container"); 
    297         vacation_container = container.find(".vacation-details-container"); 
    298         form = container.find("form"); 
    299     criterias = details_container.find( 'fieldset input[name="criteriaType[]"]' ); 
    300         actions = details_container.find( 'fieldset input[name="actionType[]"]' ); 
    301         nameObj = details_container.find( 'input[name="name"]' ); 
    302         isExact = details_container.find( 'input[name="isExact"]' ); 
    303     formatter(); 
    304     container = container.dialog({ 
    305             width:700, 
    306             modal: true, 
    307             closeOnEscape:true, 
    308             close:function(event, ui) { 
    309                     event.stopPropagation(); 
    310                     list_container.removeClass('hidden'); 
    311                     details_container.addClass('hidden'); 
    312                     vacation_container.addClass('hidden'); 
    313             }, 
    314                 open: function () { 
    315                         $(".ui-dialog .ui-dialog-titlebar") 
    316                         .append('<a href="#" class="ui-dialog-titlebar-minimize ui-corner-all" role="button"><span class="ui-icon ui-icon-minusthick">minimize</span></a>') 
    317                         .find('.ui-dialog-titlebar-minimize').click(function() { 
    318                                 $(".ui-dialog-buttonpane, .ui-dialog-content").toggle(); 
    319                                 $(".ui-icon-minusthick, .ui-icon-newwin").toggleClass('ui-icon-minusthick').toggleClass('ui-icon-newwin'); 
    320                         }); 
    321                 }, 
    322             autoOpen: false 
    323     }); 
    324     details_container.accordion({autoHeight: false}); 
    325      
    326     DataLayer.render( BASE_PATH + 'api/templates/folderselect.ejs', 'folder:select', function( html ){ 
    327           details_container.find(".select-folderlist").append( html ); 
    328     }); 
    329  
    330  
    331     container.find(".button").button() 
    332      
    333     .filter(".menu-filters > .button") 
    334  
    335     .click(function(){ 
    336  
    337         container.dialog( 'close' ); 
    338  
    339     }) 
    340      
    341     .filter(".cancel") 
    342      
    343     .click(function(){ 
    344  
    345         DataLayer.rollback( 'filter' ); 
    346         return( false ); 
    347  
    348     }) 
    349      
    350     .end().filter(".submit") 
    351      
    352     .click(function(){ 
    353  
    354         DataLayer.commit( 'filter' ); 
    355         return( false ); 
    356  
    357     }); 
    358  
    359     details_container.find( ".menu-container" ) 
    360  
    361         .find(".button.cancel").click(function(event){ 
    362  
    363                 details_container.accordion('activate',0); 
    364  
    365                 showGridButton.removeClass('hidden'); 
    366                 grid.addClass('hidden').jqGrid('GridDestroy'); 
    367            
    368                 list_container.removeClass('hidden'); 
    369                 details_container.addClass('hidden'); 
    370  
    371                 return( false ); 
    372  
    373         }).end() 
    374         .find(".button.submit").click(function(event){ 
    375  
    376                 $(this).submit(); 
    377  
    378                 details_container.accordion('activate',0); 
    379  
    380                 showGridButton.removeClass('hidden'); 
    381                 grid.addClass('hidden').jqGrid('GridDestroy'); 
    382  
    383                 list_container.removeClass('hidden'); 
    384                 details_container.addClass('hidden'); 
    385  
    386                 return( false ); 
    387  
    388         }).end() 
    389         .find(".button.back").click(function(event){ 
    390  
    391                 details_container.accordion('activate',0); 
    392  
    393                 return( false ); 
    394  
    395         }).end() 
    396         .find(".button.forth").click(function(event){ 
    397  
    398                 details_container.accordion('activate',1); 
    399  
    400                 return( false ); 
    401  
    402         }).end() 
    403  
    404     //$( ".expresso-window-container .rule-details-container" ).accordion(); 
    405     // var removeURL = new RegExp("^*.#"); 
    406  
    407     // ------------------------------------------------------------ 
    408     // ------------------------------------------------------------ 
    409  
    410     //jqgrid 
    411     .end().find(".fields-search-messages .button.search") 
    412  
    413     .click(function(){ 
    414  
    415                   var rule = DataLayer.form( form ); 
    416                    
    417                   showGridButton = $(this).parent(); 
    418  
    419                   var connect = rule.isExact ? "AND" : "OR"; 
    420  
    421                   var filter = $.map( rule.criteria, function( criteria, i ){ 
    422  
    423                           if( i === 0 ) 
    424                               return {"0": criteria.field, "1": criteria.operator, "2": criteria.value}; 
    425                           else 
    426                               return {"0": connect,  "1": criteria.field, "2": criteria.operator, "3": criteria.value}; 
    427                   }); 
    428  
    429                   $.ajax( {   
    430                             url: DataLayer.basePath + 'folder/INBOX/message&' +  $.param( {"filter": filter} ), 
    431  
    432                             dataType: 'json', 
    433  
    434                             success: function(data){ 
    435                                
    436                                   allMessages = data; 
    437  
    438                                   grid = showGridButton.addClass('hidden') 
    439                                   .siblings(".fields-search-messages-grid, .fields-search-messages-grid-pager") 
    440                                   .removeClass('hidden').filter(".fields-search-messages-grid").jqGrid({ 
    441  
    442                                           url: DataLayer.basePath + 'folder/INBOX/message&' +  $.param( {"filter": [ "msgNumber", "IN", data ]} ), 
    443                                           datatype: "json", 
    444                                           mtype: 'GET', 
    445                                           colNames:['#', ' ', 'De', 'Assunto', 'Data', 'Tamanho'], 
    446                                           colModel:[ 
    447                                                   {name:'msg_number',index:'msg_number', width:45, hidden:true, sortable:false}, 
    448                                                   {name:'flags',index:'msg_number', width:40, sortable:false, formatter:flags2Class}, 
    449                                                   {name:'from.name',index:'msg_number', width:130, sortable:false}, 
    450                                                   {name:'subject',index:'subject', width:250, sortable:false}, 
    451                                                   {name:'timestamp',index:'timestamp', width:65, align:"center", sortable:false, formatter:date2Time}, 
    452                                                   {name:'size',index:'size', width:50, align:"right", sortable:false, formatter:bytes2Size} 
    453                                           ], 
    454                                           jsonReader : { 
    455                                                     root:"rows", 
    456                                                     page: "page", 
    457                                                     total: "total", 
    458                                                     records: "records", 
    459                                                     repeatitems: false, 
    460                                                     id: "0" 
    461                                           }, 
    462                                           rowNum:10, 
    463                                           rowList:[10,25,50], 
    464                                           pager: '#fields-search-messages-grid-pager', 
    465                                           sortname: 'id', 
    466                                           viewrecords: true, 
    467                                           sortorder: "desc", 
    468                                           multiselect: true, 
    469                                           autowidth: true, 
    470                                           height:40, 
    471                                           loadComplete: function(data) { 
    472                       //                                // aplica o contador 
    473                       //                                jQuery('.timable').each(function (i) { 
    474                       //                                        jQuery(this).countdown({ 
    475                       //                                                since: new Date(parseInt(this.title)),  
    476                       //                                                significant: 1, 
    477                       //                                                layout: 'h&aacute; {d<}{dn} {dl} {d>}{h<}{hn} {hl} {h>}{m<}{mn} {ml} {m>}{s<}{sn} {sl}{s>}',  
    478                       //                                                description: ' atr&aacute;s' 
    479                       //                                        }); 
    480                       //                                }); 
    481                                           }, 
    482                                           onSelectRow: function (id, selected) { 
    483  
    484                                               if( selected ) 
    485                                                   selectedMessages[ id ] = true; 
    486                                               else 
    487                                                   delete selectedMessages[ id ]; 
    488  
    489                                           }, 
    490                                           caption: 'Mensagens que atendem aos crit&eacute;rios' 
    491                                   }); 
    492                             } 
    493                   } ); 
    494  
    495                    
    496     }); 
    497  
    498     vacation_container.find( ".menu-container" ) 
    499         .find(".button.back").click(function(event){ 
    500  
    501                 list_container.removeClass('hidden'); 
    502                 vacation_container.addClass('hidden'); 
    503  
    504                 return( false ); 
    505  
    506         }).end() 
    507         .find(".button.submit").click(function(event){ 
    508  
    509                 $(this).submit(); 
    510            
    511                 list_container.removeClass('hidden'); 
    512                 vacation_container.addClass('hidden'); 
    513                 return( false ); 
    514         });  
    515  
    516 } 
    517  
    518 var reraster = function( html ){ 
    519  
    520         //$(".rule-list-container").next().addClass("hidden"); 
    521          
    522         list_container.find( '.ui-widget' ).remove(); 
    523  
    524         list_container.html( html ).find(".button").button(); 
    525    
    526         formatter(); 
    527 } 
    528  
    529 var formatter = function(){ 
    530  
    531     checkBoxes = container.find(".rule-list").selectable({ 
    532                 selecting: function(event, ui) { 
    533                         $(ui.selecting).find(':checkbox').attr('checked', true); 
    534                 }, 
    535                 unselecting: function(event, ui) { 
    536                         $(ui.unselecting).find(':checkbox').attr('checked', false); 
    537                 } 
    538     }) 
    539     .find(':checkbox').change(function () { 
    540  
    541 //      if ($(this).attr("checked")) 
    542 //          $(this).parents('.rule').addClass('ui-selected'); 
    543 //      else 
    544             $(this).parents('.rule').toggleClass('ui-selected'); 
    545  
    546     }); 
    547  
    548     list_container.children() 
    549  
    550     .filter( ".fields-add" ) 
    551  
    552         .find(".button.add").click(function(){ 
    553  
    554                 list_container.addClass('hidden'); 
    555                 details_container.removeClass('hidden'); 
    556                 form.get(0).reset(); 
    557  
    558                 return( false ); 
    559         }) 
    560         .filter(".vacation").click(function(){ 
    561  
    562                 details_container.addClass('hidden'); 
    563                 vacation_container.removeClass('hidden'); 
    564                 form.get(0).reset(); 
    565  
    566                 return( false ); 
    567  
    568         }).end().end() 
    569  
    570     .end().filter( ".fields-selected-itens" ) 
    571  
    572     .find(".button.enable").click(function(){ 
    573  
    574             var values = []; 
    575        
    576             checkBoxes.filter(':checked').parents(".rule-list").find('.title').each(function(){ 
    577  
    578                 values[ values.length ] = { id: this.innerHTML, enabled: true }; 
    579  
    580             }); 
    581  
    582             DataLayer.put( 'filter', values ); 
    583  
    584     }).end() 
    585  
    586     .find(".button.disable").click(function(){ 
    587        
    588             var values = []; 
    589        
    590             checkBoxes.filter(':checked').parents(".rule-list").find('.title').each(function(){ 
    591  
    592                 values[ values.length ] = { id: this.innerHTML, enabled: false }; 
    593  
    594             }); 
    595  
    596             DataLayer.put( 'filter', values ); 
    597  
    598     }).end() 
    599  
    600     .find(".button.delete").click(function(){ 
    601        
    602             checkBoxes.filter(':checked').parents(".rule-list").find('.title').each(function(i, o){ 
    603  
    604                  DataLayer.remove( 'filter', o.html() ); 
    605  
    606             }); 
    607  
    608     }).end() 
    609      
    610  
    611     .end().find( ".menu-control .button" ).filter(".update").button({ 
    612                 icons: { 
    613                         primary: "ui-icon-pencil" 
    614                 }, 
    615                 text: false 
    616         }).end() 
    617  
    618         .filter(".enable, .disable").click( function(event) { 
    619  
    620                 var id = $(this).parents("li.rule").find('.title').html(); 
    621  
    622                 DataLayer.put( 'filter', id, { enabled: !$(this).is('.enable') } ); 
    623         }) 
    624  
    625         .filter(".enable").button({ 
    626                 icons: { 
    627                         primary: "ui-icon-circle-check" 
    628                 }, 
    629                 text: false 
    630         }).end() 
    631  
    632         .filter(".disable").button({ 
    633                 icons: { 
    634                         primary: "ui-icon-circle-close" 
    635                 }, 
    636                 text: false 
    637         }).end().end() 
    638          
    639         .filter(".close").button({ 
    640                 icons: { 
    641                         primary: "ui-icon-close" 
    642                 }, 
    643                 text: false 
    644         }).click( function(event) { 
    645                 $(event.target) 
    646                 .parents("li.rule").find('.title') 
    647                 .each( function(){ 
    648  
    649                     DataLayer.remove( 'filter', $(this).html() ); 
    650  
    651                 }).end().remove(); 
    652         }).end() 
    653          
    654         .filter(".update").click(function(event){ 
    655  
    656                 var id = ( event.target.href || event.target.parentNode.href ).replace( new RegExp("^.*#"), "" ); 
    657  
    658                 var data = DataLayer.get( 'filter', id ); 
    659  
    660                 if( id === "vacation" ) 
    661                 { 
    662                     $('[name="vacation"]').val( data.actions[0].parameter ); 
    663  
    664                     list_container.addClass('hidden'); 
    665                     vacation_container.removeClass('hidden'); 
    666                     return; 
    667                 } 
    668  
    669                 showDetails( data ); 
    670  
    671                 list_container.addClass('hidden'); 
    672                 details_container.removeClass('hidden'); 
    673         }).end() 
    674          
    675         .removeClass('ui-button-icon-only'); 
    676 }; 
    677 // ------------------------------------------------------------ 
    678 // ------------------------------------------------------------     
    679 */  
    680292 
    681293function block_user_email(email) {  
     
    717329 
    718330function list_filters(html){ 
    719         /** TODO - Mudar quando API abstrair atualizações no cache */ 
    720         DataLayer.remove('filter', false); 
    721         var filters = DataLayer.get("filter"); 
    722         var outoffice_active = false; 
    723         var outoffice = false; 
    724         for(var index in filters){ 
    725                 DataLayer.put( 'filter', filters[index].id, { enabled: (filters[index].enabled == "true" ? true: false)}); 
    726                 if(filters[index].id == "vacation") 
    727                         outoffice = true; 
    728                 if(filters[index].id == "vacation" && filters[index].enabled == "true"){ 
    729                         write_msg(get_lang("Attention, you are in out of office mode."), true);  
    730                         outoffice_active = true; 
    731                         break; 
    732                 } 
    733         } 
    734         DataLayer.commit( 'filter' ); 
    735         if(!outoffice_active){ 
    736                 clean_msg(); 
    737         } 
     331        outOfficeVerify(); 
    738332        if(html){ 
    739333                if( ! $(".filters-windows").length ) 
     
    852446                text: false 
    853447        }).click(function(){ 
    854                 var id = $(this).parents("li.rule").find('.id').val(); 
     448                var id = $(this).parents("li.rule").find('.id').val();           
    855449                DataLayer.put( 'filter', id, { enabled: false  }); 
    856450                DataLayer.commit("filter", false,function(){ 
     
    900494        }).end().removeClass("ui-button-icon-only"); 
    901495         
    902         $(".button.enable").click(function(){ 
     496        $(".button.allenable").click(function(){ 
    903497                container.find('.rule-list').find('.rule').find('.select').find(':checked').parents('.rule').find('.title').each(function(i,o){ 
    904498                        DataLayer.put( 'filter', o.innerHTML, { enabled: true  }); 
     
    909503        }); 
    910504         
    911         $(".button.disable").click(function(){ 
     505        $(".button.alldisable").click(function(){ 
    912506                container.find('.rule-list').find('.rule').find('.select').find(':checked').parents('.rule').find('.title').each(function(i,o){ 
    913507                        DataLayer.put( 'filter', o.innerHTML, { enabled: false  }); 
     
    920514         
    921515         
    922         $(".button.delete").click(function(){ 
     516        $(".button.alldelete").click(function(){ 
    923517                $.Zebra_Dialog(get_lang("Are you sure to delete the filters?"),{ 
    924518                        'type':     'question', 
  • trunk/prototype/modules/filters/interceptors/FilterMapping.php

    r6009 r6021  
    5757class FilterMapping 
    5858{ 
    59          
    6059        var $service; 
     60         
     61        /** 
     62        * Método que cria o ID da regra que está sendo criada. 
     63        * 
     64        * @license    http://www.gnu.org/copyleft/gpl.html GPL 
     65        * @author     Consórcio Expresso Livre - 4Linux (www.4linux.com.br) e Prognus Software Livre (www.prognus.com.br) 
     66        * @sponsor    Caixa EconÃŽmica Federal 
     67        * @author     Airton Bordin Junior <airton@prognus.com.br> 
     68        * @author         Gustavo Pereira dos Santos <gustavo@prognus.com.br>    
     69        * @author         Natan Fonseca <natan@prognus.com.br>   
     70        * @param      <$uri>  
     71        * @param      <$result>  
     72        * @param      <$criteria>  
     73        * @param      <$original>  
     74        * @access     <public> 
     75        */ 
     76        public function makeId(&$uri , &$result , &$criteria , $original) { 
     77                $result['id'] = $uri['id']; 
     78        } 
    6179         
    6280         
     
    452470                //if()                   
    453471                //{                                              
    454                         $result['id'] = $uri['id']; 
    455472                        $rule_apply = array();  
    456473                         
Note: See TracChangeset for help on using the changeset viewer.