source: sandbox/2.4.1-1/prototype/modules/filters/filters.js @ 6292

Revision 6292, 25.7 KB checked in by airton, 12 years ago (diff)

Ticket #2764 - Implementacao de alerta ao usuario para criterio atendido nos filtros de mensagens

Line 
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        for (var index in filters) {
9                alertMessage = filters[index]['alertMessage'];         
10                for(var criterias in filters[index]['actions']) {
11                        if (filters[index]['actions'][criterias]['type'] == 'fileinto' && alertMessage == 'true')
12                                fromRules[fromRules.length] = filters[index]['actions'][criterias]['parameter'];
13                }
14        }
15        return fromRules;
16}
17
18/*
19 * Verifica se a regra Fora de escritório está ativa
20 */
21function outOfficeVerify() {   
22        DataLayer.remove('filter', false);
23        var filters = DataLayer.get("filter");
24        var outoffice_active = false;
25        outoffice = false;
26        for(var index in filters){
27                if(filters[index].id == "vacation")
28                        outoffice = true;
29                if(filters[index].id == "vacation" && filters[index].enabled == "true"){
30                        write_msg(get_lang("Attention, you are in out of office mode."), true);
31                        outoffice_active = true;
32                        break;
33                }
34        }
35        if(!outoffice_active)
36                clean_msg();
37}
38
39/*
40 * Valida os campos do formulário da tela de filtros para salvar.
41 */
42valid_save = function(){
43        var accord = list_container.find(".rule-details-container").accordion({autoHeight: false});
44        if(list_container.find('[name="name"]').attr("disabled") != "disabled")
45        {
46                if($.trim(list_container.find('[name="name"]').val()) == ""){
47                        $.Zebra_Dialog(get_lang("No name filled"),{
48                                'onClose':  function(caption) {
49                                        list_container.find('[name="name"]').focus();
50                                }
51                        });
52                        accord.accordion('activate',0);
53                        return false;
54                }else if($.trim(list_container.find('[name="name"]').val()) == "vacation"){
55                        $.Zebra_Dialog(get_lang("Invalid name, 'vacation' is a reserved word"),{
56                                'onClose':  function(caption) {
57                                        list_container.find('[name="name"]').val("").focus();
58                                }
59                        });
60                        accord.accordion('activate',0);
61                        return false;
62                }else{
63                        filter_list = DataLayer.get("filter", true);
64                        var error = false;
65                        $.each(filter_list, function(index, value){
66                                if(filter_list[index].name == list_container.find('[name="name"]').val()){
67                                        $.Zebra_Dialog(get_lang("There is already a filter with this name"),{
68                                                'onClose':  function(caption) {
69                                                        list_container.find('[name="name"]').val("").focus();
70                                                }
71                                        });
72                                        accord.accordion('activate',0);
73                                        error = true;
74                                        return;
75                                }       
76                        });
77                        if(error){
78                                return false;
79                        }
80                }
81        }
82        var criteria = "";
83        var criteria_list = list_container.find('[name="criteriaValue[]"]');
84        var er_num = /^[0-9]+$/;
85       
86        if($(".sizeRule").val() != "" && er_num.test($(".sizeRule").val()) == false) {
87                $.Zebra_Dialog(get_lang("Size rule must be a number"),{
88                        'onClose':  function(caption) {
89                                list_container.find('[name="actionType[]"]:checked').parent().find("input:text, textarea").focus();
90                        }
91                });
92                accord.accordion('activate',0);
93                return false;
94        }
95        $.each(criteria_list, function(index, value){
96                criteria += $.trim($(criteria_list[index]).val());
97        });
98        if(criteria == ""){
99                $.Zebra_Dialog(get_lang("No criteria filled"),{
100                        'onClose':  function(caption) {
101                                list_container.find('[name="criteriaValue[]"]:first').focus();
102                        }
103                });
104                accord.accordion('activate',0);
105                return false;
106        }
107        if(list_container.find('[name="actionType[]"]:checked').parent().find("input:text, textarea").length){
108                if($.trim(list_container.find('[name="actionType[]"]:checked').parent().find("input:text, textarea").val()) == ""){
109                        $.Zebra_Dialog(get_lang("Fill the action value"),{
110                                'onClose':  function(caption) {
111                                        list_container.find('[name="actionType[]"]:checked').parent().find("input:text, textarea").focus();
112                                }
113                        });
114                        return false;
115                }
116                var er_mail = RegExp(/^[A-Za-z0-9_\-\.]+@[A-Za-z0-9_\-\.]{2,}\.[A-Za-z0-9]{2,}(\.[A-Za-z0-9])?/);
117                if(er_mail.test($.trim(list_container.find('[value="redirect"]:checked').parent().find("input:text, textarea").val())) == false){
118                        $.Zebra_Dialog(get_lang("Invalid mail"),{
119                                'onClose':  function(caption) {
120                                        list_container.find('[name="actionType[]"]:checked').parent().find("input:text, textarea").focus();
121                                }
122                        });
123                        return false;
124                }
125        }
126        return true;
127};
128
129bytes2Size = function(bytes) {
130        var sizes = ['B', 'KB', 'MB', 'GB', 'TB'];
131        if (bytes === 0) return 'n/a';
132        var i = parseInt(Math.floor(Math.log(bytes) / Math.log(1024)));
133        var size = (i<2) ? Math.round((bytes / Math.pow(1024, i))) : Math.round((bytes / Math.pow(1024, i)) * 100)/100;
134        return  size + ' ' + sizes[i];
135};
136
137flags2Class = function(cellvalue) {
138        var flags_enum = cellvalue.split(',');
139        var classes = '';
140        for (var i=0; i<flags_enum.length; i++){
141                classes += '<span class="icon-'+flags_enum[i].toLowerCase()+'"> </span>';
142        }
143        return classes;
144};
145
146date2Time = function (timestamp) {
147        var date = new Date();
148        if ((date.getTime() - timestamp) < (24*60*60*1000)) {
149                return '<span class="timable" title="'+timestamp+'"> </span>';
150        } else {
151                date = new Date(timestamp);
152                var b = date.toISOString().split("T")[0].split("-");
153                var c = b[2] + "/" + b[1] + "/" + b[0];
154                return '<span class="datable">' + c + '</span>';
155        }
156};
157
158keys = function( object ){
159 
160  var array = [];
161 
162  for( var key in object )
163       array[ array.length ] = key;
164 
165  return( array );
166
167}
168
169/*
170 * Preenche o formulário de filtros com as informações originais para edição
171 */
172showDetails = function( filter ){
173 
174    form.get(0).reset();
175
176    nameObj.val( filter.name );
177        nameObj.attr("disabled", "disabled");
178    for( var i = 0; i < filter.criteria.length; i++ ){
179                criterias.filter( '[value="' + filter.criteria[i].field + '"]' )
180                .siblings( '[name="criteriaOperator[]"]' ).val( filter.criteria[i].operator ).end()
181                .siblings( '[name="criteriaValue[]"]' ).val( filter.criteria[i].value );
182    }
183    for( var i = 0; i < filter.actions.length; i++ ){
184                actions.filter( '[value="' + filter.actions[i].type + '"]' ).attr("checked", "True");
185                actions.filter( '[value="' + filter.actions[i].type + '"]' ).val( filter.actions[i].type )
186                .siblings( '[name="actionParameter[]"]' ).val( filter.actions[i].parameter );
187                if(filter.actions[i].type == "redirect")
188                        actions.siblings('[name="addressRedirect"]').val(filter.actions[i].parameter);
189                if(filter.actions[i].type == "reject") 
190                        actions.siblings('[name="messageReject"]').val(filter.actions[i].parameter);
191                if(filter.actions[i].type == "fileinto" || filter.actions[i].type == "setflag")
192                        actions.parent().find('[value="'+filter.actions[i].parameter+'"]').attr("selected", "selected");
193    }
194        isExact.filter('[value="'+(filter.isExact != "false"? "and" : "or")+'"]').attr("checked", "True");
195       
196        if (filter.alertMessage == 'true') $('.alertMessage').attr('checked', 'True');
197}
198
199/* --- ------ --- */
200
201DataLayer.codec( "filter", "detail", {
202  decoder: function( form ){
203          if( form.vacation )
204          return {
205                criteria: [{ value: "vacation", operator: "", field: "vacation" }],
206                actions: [{ parameter: form.vacation, type: "vacation" }],
207                id: "vacation",
208                name: "vacation",
209                isExact: false,
210                applyMessages : "",
211                enabled : true
212      }
213
214        var apply_messages_ = keys(selectedMessages);
215        delete selectedMessages;
216
217    return {
218                //id: form.name,
219                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;'),
220                isExact: ( form.isExact === "and" ),
221                criteria: $.map( form.criteriaOperator || [], function( criteriaOperator, i ){ 
222                        return (!form.criteriaValue[i]) ? null:
223                        {
224                                        value:  form.criteriaValue[i].replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;'),
225                                        operator: criteriaOperator,
226                                        field:  form.criteriaType[i].replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;')
227                        };
228                }),
229                actions: $.map( form.actionType || [], function( type, i ){
230                        var the_parameter = form.actionParameter[i];
231                       
232                        !the_parameter ? the_parameter = form.actionParameter[i+1] : "";
233                        if (type == 'alertMessage') {
234                                //if(!$('[value="alertMessage"]').parent().hasClass("hidden")){
235                                        type = 'addflag';
236                                        the_parameter = '$FilteredMessage';
237                                //}else{
238                                //      return;
239                                //}
240                        }
241                        if (type == 'fileinto') {
242                                the_parameter = form.valueFileInto;
243                        }
244                        if (type == 'reject') {
245                                the_parameter = form.messageReject;
246                        }
247                        if (type == 'fileintoInbox') {
248                                if(!$('[value="fileintoInbox"]').parent().hasClass("hidden")){
249                                        type = 'fileinto';
250                                        the_parameter = 'INBOX';
251                                }else{
252                                        return;
253                                }
254                        }
255                        if (type == 'fileintoTrash') {
256                                type = 'fileinto';
257                                the_parameter = 'INBOX/Trash';
258                        }
259                        if (type == 'redirect') {
260                                the_parameter = form.addressRedirect;
261                        }
262                        if (type == 'setflag') {
263                                the_parameter = form.valueSetFlag;
264                        }
265                        return (!type) ? null:
266                              {parameter: the_parameter, type: type };
267
268                }),
269                enabled : true,
270                alertMessage: $('.alertMessage').is(':checked'),
271                //applyMessages: allMessages? !$.isEmptyObject( selectedMessages ) ?
272                //keys( selectedMessages ) : allMessages : ""
273                applyMessages: apply_messages_
274                //applyMessages: ""
275    };
276  },
277 
278  encoder: function( filters ){
279        var rules = [];
280
281        for( var id in filters )
282              rules[ rules.length ] = filters[id];
283
284        return { rules: rules };
285
286  }
287 
288});
289
290DataLayer.codec( "folder", "select", {
291 
292  decoder:function(){
293
294     
295   
296  },
297  encoder:function( data ){
298      var tree1 = [], tree2 = [], tree3 = [];
299
300      for (var i=0; i<data.length; i++) {
301
302              if (/^INBOX/.test(data[i].id)) {
303                      if (!unorphanize(tree1, data[i])) {
304                              data[i].children = [];
305                              tree1.push(data[i]);
306                      }
307              }
308              else if (/^user/.test(data[i].id)) {
309                      if (!unorphanize(tree2, data[i])) {
310                              data[i].children = [];
311                              tree2.push(data[i]);
312                      }
313              }
314              else if (/^local_messages/.test(data[i].id)) {
315                      if (!unorphanize(tree3, data[i])) {
316                              data[i].children = [];
317                              tree3.push(data[i]);
318                      }
319              }
320
321      }
322     
323      return {folders: [ tree1, tree2, tree3 ]};
324
325  }
326
327});
328
329fromRules = getFromAlertRules();
330
331var BASE_PATH = '../prototype/';
332
333DataLayer.basePath = BASE_PATH + "REST.php?q=";
334DataLayer.dispatchPath = BASE_PATH;
335
336var selectedMessages = {};
337var allMessages = false;
338
339
340/*
341 * Bloqueia usuário por email - utilizado na tela de mensagens do ExpressoMail
342 */
343function block_user_email(email) {
344        var idd = email;
345        /** TODO - Mudar quando API abstrair atualizações no cache */
346        DataLayer.remove('filter', false);
347        var filters = DataLayer.get('filter');
348        for(var index in filters){
349                if(filters[index].name == email) {
350                        if(confirm(get_lang("This user is already blocked. Would you like to unlock it?"))) {
351                                DataLayer.remove( 'filter', filters[index].id );
352                                DataLayer.commit("filter", false, function(){
353                                        $.Zebra_Dialog(get_lang("Lock User") + " " + email + " " + get_lang("removed"));
354                                        list_filters();
355                                });
356                                return true;
357                        }else
358                                return true;
359                }
360        }
361        if(confirm(get_lang("Want to block the user") + " " + email + "?")){
362                DataLayer.put( 'filter', idd,
363                                        { name: email, isExact: false,
364                                                criteria:{ 0: {value: email, operator: "=", field: "from"} },
365                                                actions: { 0: {parameter: "INBOX" + cyrus_delimiter + "Spam", type: "fileinto"}},
366                                                enabled: true,
367                                                id: email,
368                                                block: true
369                                        });
370                DataLayer.commit("filter", false, function(){
371                        $.Zebra_Dialog(get_lang("User") + " " + email + " " + get_lang("blocked"));
372                        list_filters();
373                });
374               
375        }
376}
377
378
379/*
380 * Mostra o grid de mensagens para aplicar a regra nas mensagens da caixa de entrada.
381 */
382function showGridMessages(thiss) {
383        var criteria_list = list_container.find('[name="criteriaValue[]"]');
384        var criteria_operator_list = list_container.find('[name="criteriaOperator[]"]');
385        var criteria_value = "";
386        var criteria = "";
387        $.each(criteria_list, function(index, value){
388                criteria += $.trim($(criteria_list[index]).val()) + ",";
389        });
390        var criteria_ = criteria.split(",");
391        var criteria_operator  = "";
392        $.each(criteria_operator_list, function(index, value){
393                criteria_operator += $.trim($(criteria_list[index]).val()) != "" ? index + "," : ",";
394                criteria_value    += $.trim($(criteria_operator_list[index]).val()) + ",";
395        });
396        var criteria_operator_  = criteria_operator.split(",");
397        var criteria_value_     = criteria_value.split(",");
398        var options = ["from", "to", "subject", "body", "size"];
399        var criterias_ = new Array();
400        var j = 0;             
401        for (i in criteria_) {
402                if(criteria_[i] != "") {
403                        (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]};
404                        j++;
405                }       
406        }
407        showGridButton = thiss.parent();
408        $.ajax({ 
409                url: DataLayer.basePath + 'folder/INBOX/message&' +  $.param( {"filter": criterias_} ),
410                dataType: 'json',
411                success: function(data){
412                        allMessages = data;
413
414                        var parametro =  { "filter": ( data != false ? [ "msgNumber", "IN", data ] : criterias_ ) };
415                       
416                        if (typeof grid !== "undefined") {
417                                grid.jqGrid( 'setGridParam', { url: DataLayer.basePath + 'folder/INBOX/message&' +  $.param( parametro ) } ).trigger( 'reloadGrid' );
418                                //return;
419                        }
420                        grid = showGridButton.siblings(".fields-search-messages-grid, .fields-search-messages-grid-pager")
421                        .removeClass('hidden').filter(".fields-search-messages-grid").trigger( 'reloadGrid' ).jqGrid({
422                                //url: DataLayer.basePath + 'folder/INBOX/message&' +  $.param( {"filter": [ "msgNumber", "IN", data ]} ),
423                                url: DataLayer.basePath + 'folder/INBOX/message&' +  $.param( parametro ),
424                                datatype: "json",
425                                mtype: 'GET',
426                                colNames:['#', 'De', 'Assunto', 'Data', 'Tamanho'],
427                                colModel:[
428                                        {name:'msg_number',index:'msg_number', width:45, hidden:true, sortable:false},
429                                        {name:'from.email',index:'msg_number', width:130, sortable:false},
430                                        {name:'subject',index:'subject', width:250, sortable:false},
431                                        {name:'timestamp',index:'timestamp', width:65, align:"center", sortable:false, formatter:date2Time},
432                                        {name:'size',index:'size', width:50, align:"right", sortable:false, formatter:bytes2Size}
433                                ],
434                                jsonReader : {
435                                        root:"rows",
436                                        page: "page",
437                                        total: "total",
438                                        records: "records",
439                                        repeatitems: false,
440                                        id: "0"
441                                },
442                                rowNum:10,
443                                //rowList:[10,25,50],
444                                rowList:[10],
445                                pager: '#fields-search-messages-grid-pager',
446                                sortname: 'id',
447                                viewrecords: true,
448                                sortorder: "desc",
449                                multiselect: true,
450                                autowidth: true,
451                                reloadAfterEdit: true,
452                                reloadAfterSubmit: true,
453                                height:200,
454                                loadComplete: function(data) {
455                          //                            // aplica o contador
456                          //                            jQuery('.timable').each(function (i) {
457                          //                                    jQuery(this).countdown({
458                          //                                            since: new Date(parseInt(this.title)),
459                          //                                            significant: 1,
460                          //                                            layout: 'h&aacute; {d<}{dn} {dl} {d>}{h<}{hn} {hl} {h>}{m<}{mn} {ml} {m>}{s<}{sn} {sl}{s>}',
461                          //                                            description: ' atr&aacute;s'
462                          //                                    });
463                          //                            });
464                                },
465                                onSelectRow: function (id, selected) {
466                                        if( selected )
467                                        {
468                                                selectedMessages[ id ] = true;
469                                        }
470                                        else
471                                        {
472                                                delete selectedMessages[ id ];
473                                        }
474                                },
475                                caption: 'Mensagens que atendem aos crit&eacute;rios'
476                        }); // end jqGrid
477                } // end success
478        }); // end ajax
479}
480
481
482/*
483 * Lista os filtros para o usuário
484 */
485function list_filters(html){
486        outOfficeVerify();
487        if(html){
488                if( ! $(".filters-windows").length )
489                        container = $('.expressomail-module-container').append("<div class='filters-windows'></div>").find(".filters-windows").html( html ).find(".expresso-window-container");
490                list_container = $('.expressomail-module-container').find(".rule-list-container");
491        }
492        list_container = $(".expresso-window-filters").dialog({
493            width:700,
494            modal: true,
495                resizable: false,
496            closeOnEscape:true,
497            close:function(event, ui) {
498                    event.stopPropagation();
499                        if(list_container.find(".cancel").length)
500                                list_container.find(".cancel").trigger('click');       
501                        $(".dialog-head-buttonpane").hide();
502            },
503                open: function () {
504                        $(".ui-dialog .ui-dialog-titlebar")
505                        .append('<a href="#" class="ui-dialog-titlebar-minimize ui-corner-all" role="button"><span class="ui-icon ui-icon-minusthick">minimize</span></a>')
506                        .find('.ui-dialog-titlebar-minimize').click(function() {
507                                $(".ui-dialog-buttonpane, .ui-dialog-content").toggle();
508                                $(".ui-icon-minusthick, .ui-icon-newwin").toggleClass('ui-icon-minusthick').toggleClass('ui-icon-newwin');
509                        });
510                        $(".dialog-head-buttonpane").show();
511                },
512            autoOpen: false,
513                buttons: [{
514                        text : get_lang("Close"),
515                        click : function() {
516                                $( this ).dialog( "close" );
517                        }
518                }]
519    });
520        $(".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>");
521        $(".dialog-head-buttonpane").css("padding", "5px").
522        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();
523       
524        $(".ui-dialog-buttonpane.ui-widget-content").css("background-color", "#E0EEEE");
525        var list = DataLayer.render( BASE_PATH + 'modules/filters/filter-list.ejs', DataLayer.get("filter:detail", true));
526        list_container.html(list).find(".button").button();
527       
528        list_container.find(".rule-list").selectable({
529                selecting: function(event, ui) {
530                        $(ui.selecting).find(':checkbox').attr('checked', true);
531                },
532                unselecting: function(event, ui) {
533                        $(ui.unselecting).find(':checkbox').attr('checked', false);
534                }
535        });
536       
537        list_container.find( ".menu-control .button" ).filter(".update").button({
538                icons: {
539                        primary: "ui-icon-pencil"
540                },
541                text: false
542        }).click(function(){
543                var id = $(this).parents("li.rule").find('.id').val();
544                var filters = DataLayer.get( 'filter', true);
545                for(var i =0; i < filters.length; i++){
546                        if(filters[i].id == id){
547                                filters = filters[i];
548                                break;
549                        }       
550                }
551                DataLayer.render( BASE_PATH + 'modules/filters/edit-filter.ejs', {folders : DataLayer.get("folder", true), delimiter: cyrus_delimiter},function(html){
552                        var details_container = $(".expresso-window-filters").html(html);
553                        if(filters.name != "vacation"){
554                                form = container.find("form");
555                                criterias = details_container.find( 'fieldset input[name="criteriaType[]"]' );
556                                actions = details_container.find( 'fieldset input[name="actionType[]"]' );
557                                nameObj = details_container.find( 'input[name="name"]' );
558                                isExact = details_container.find( 'input[name="isExact"]' );
559                                showDetails(filters);
560                                var accord = list_container.find(".rule-details-container").accordion({autoHeight: false});
561                                list_container.find(".button").button().filter(".forth").click(function(){
562                                        accord.accordion('activate',1);
563                                }).end().filter(".forth2").click(function(){
564                                        accord.accordion('activate',2);
565                                }).end().filter(".back").click(function(){
566                                        accord.accordion('activate',0);
567                                }).end().filter(".back2").click(function(){
568                                        accord.accordion('activate',1);
569                                }).end().filter(".cancel").click(function(){
570                                        DataLayer.render( BASE_PATH + 'modules/filters/init.ejs', {},list_filters);
571                                }).end().filter(".submit").click(function(){
572                                        if(nameObj)
573                                                nameObj.attr("disabled", "false");
574                                        if(valid_save())
575                                                $(this).submit();
576                                        else
577                                                return;
578                                        DataLayer.commit( 'filter', false,function(){
579                                                DataLayer.render( BASE_PATH + 'modules/filters/init.ejs', {},list_filters);
580                                        });
581                                }).end().filter('.button.search').click(function() {                           
582                                /* Valida se o usuário preencheu as informações */
583                                if(valid_save())
584                                        showGridMessages($(this));
585                                else
586                                        return;
587                        })
588                        }else{
589                                list_container.find(".vacation-details-container").removeClass("hidden");
590                                list_container.find(".rule-details-container").addClass("hidden");
591                                list_container.find(".button").button().filter(".back").click(function(){
592                                        DataLayer.render( BASE_PATH + 'modules/filters/init.ejs', {},list_filters);
593                                }).end().filter(".submit").click(function(){
594                                        $(this).submit();
595                                        DataLayer.commit( 'filter', false,function(){
596                                                DataLayer.render( BASE_PATH + 'modules/filters/init.ejs', {},list_filters);
597                                        });
598                                });
599                                details_container.find('[name="vacation"]').val(filters.actions[0].parameter);
600                        }
601                });
602        }).end()
603        .filter(".enable").button({
604                icons: {
605                        primary: "ui-icon-circle-close"
606                },
607                text: false
608        }).click(function(){
609                var id = $(this).parents("li.rule").find('.id').val();         
610                DataLayer.put( 'filter', id, { enabled: false  });
611                DataLayer.commit("filter", false,function(){
612                        DataLayer.render( BASE_PATH + 'modules/filters/init.ejs', {},list_filters);
613                });
614        }).end()
615
616        .filter(".disable").button({
617                icons: {
618                        primary: "ui-icon-circle-check"
619                },
620                text: false
621        }).click(function(){
622                var id = $(this).parents("li.rule").find('.id').val();
623                DataLayer.put( 'filter', id, { enabled: true });
624                DataLayer.commit("filter", false,function(){
625                        DataLayer.render( BASE_PATH + 'modules/filters/init.ejs', {},list_filters);
626                });
627        }).end()
628       
629        .filter(".close").button({
630                icons: {
631                        primary: "ui-icon-close"
632                },
633                text: false
634        }).click(function(event){
635                var filter_name = $(event.target).parents("li.rule").find('.id').val();
636                var filter_screen_name = $(event.target).parents("li.rule").find('.title').html();
637                $.Zebra_Dialog(get_lang("Are you sure to delete the filter") + ": <strong>"+filter_screen_name+"</strong>",{
638                        'type':     'question',
639                        'title':    get_lang("Exclusion Confirmation"),
640                        'buttons':  [get_lang('Yes'), get_lang('No')],
641                        'onClose':  function(caption) {
642                                if(caption == get_lang('Yes')){
643                                /** TODO - Mudar quando API abstrair atualizações no cache */
644                                        DataLayer.remove('filter', false);
645                                        DataLayer.get('filter');
646                                        DataLayer.remove( 'filter', filter_name);
647                                        DataLayer.commit("filter", false,function(){
648                                                DataLayer.render( BASE_PATH + 'modules/filters/init.ejs', {},list_filters);
649                                        });
650                                }else{
651                                        $(event.target).removeClass("ui-selected").parent().removeClass("ui-selected");
652                                }
653                        }
654                });
655        }).end().removeClass("ui-button-icon-only");
656       
657        $(".button.allenable").click(function(){
658                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  });
660                });
661                DataLayer.commit("filter", false, function(){
662                        DataLayer.render( BASE_PATH + 'modules/filters/init.ejs', {},list_filters);
663                });
664        });
665       
666        $(".button.alldisable").click(function(){
667                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  });
669                });
670                DataLayer.commit("filter", false, function(){
671                        DataLayer.render( BASE_PATH + 'modules/filters/init.ejs', {},list_filters);
672                });
673        });
674       
675       
676       
677        $(".button.alldelete").click(function(){
678                $.Zebra_Dialog(get_lang("Are you sure to delete the filters?"),{
679                        'type':     'question',
680                        'title':    get_lang("Exclusion Confirmation"),
681                        'buttons':  [get_lang('Yes'), get_lang('No')],
682                        'onClose':  function(caption) {
683                                if(caption == get_lang('Yes')){
684                                /** TODO - Mudar quando API abstrair atualizações no cache */
685                                        DataLayer.remove('filter', false);
686                                        DataLayer.get('filter');
687                                        container.find('.rule-list').find('.rule').find('.select').find(':checked').parents('.rule').find('.title').each(function(i,o){
688                                                DataLayer.remove( 'filter', o.innerHTML );
689                                        });
690                                        DataLayer.commit("filter", false,function(){
691                                                DataLayer.render( BASE_PATH + 'modules/filters/init.ejs', {},list_filters);
692                                        });
693                                }else{
694                                        return true;
695                                }
696                        }
697                });
698        });
699       
700        var aa = 0;
701       
702        list_container.parent().find(".button.add:first").click(function(){
703                list_container.parent().find(".dialog-head-buttonpane").addClass("hidden");
704                DataLayer.render( BASE_PATH + 'modules/filters/edit-filter.ejs', {folders : DataLayer.get("folder", true), delimiter: cyrus_delimiter},function(html){
705                        list_container.html(html);
706                        var accord = list_container.find(".rule-details-container").accordion({autoHeight: false});
707                        list_container.find(".button").button().filter(".forth").click(function(){
708                                accord.accordion('activate',1);
709                        }).end().filter(".forth2").click(function(){
710                                accord.accordion('activate',2);
711                        }).end().filter(".back").click(function(){
712                                accord.accordion('activate',0);
713                        }).end().filter(".back2").click(function(){
714                                accord.accordion('activate',1);
715                        }).end().filter(".cancel").click(function(){
716                                DataLayer.render( BASE_PATH + 'modules/filters/init.ejs', {},list_filters);
717                        }).end().filter(".submit").click(function() {
718                                if(valid_save())
719                                        $(this).submit();
720                                else
721                                        return;
722                                DataLayer.commit( 'filter',false,function(){
723                                        DataLayer.render( BASE_PATH + 'modules/filters/init.ejs', {},list_filters);
724                                });
725                        }).end().filter('.button.search').click(function() {                           
726                                if(valid_save())
727                                        showGridMessages($(this));
728                                else
729                                        return;
730                        }); // end function click
731                });     // end DataLayer.render
732        });
733        list_container.parent().find(".button.add.vacation").click(function(){
734                list_container.parent().find(".dialog-head-buttonpane").addClass("hidden");
735                DataLayer.render( BASE_PATH + 'modules/filters/edit-filter.ejs', {folders : DataLayer.get("folder", true), delimiter: cyrus_delimiter},function(html){
736                        list_container.html(html);
737                        list_container.find(".vacation-details-container").removeClass("hidden");
738                        list_container.find(".rule-details-container").addClass("hidden");
739                        list_container.find(".button").button().filter(".back").click(function(){
740                                DataLayer.render( BASE_PATH + 'modules/filters/init.ejs', {},list_filters);
741                        }).end().filter(".submit").click(function(){
742                                $(this).submit();
743                                DataLayer.commit( 'filter',false,function(){
744                                        DataLayer.render( BASE_PATH + 'modules/filters/init.ejs', {},list_filters);
745                                });
746                        });
747                });     
748        });
749}
750
751/*
752 * Inicia a funcionalidade de filtros de mensagens
753 */
754function  init_filters(){
755        var html = DataLayer.render( BASE_PATH + 'modules/filters/init.ejs', {});
756        list_filters(html);
757}
Note: See TracBrowser for help on using the repository browser.