source: trunk/prototype/modules/filters/filters.js @ 6348

Revision 6348, 24.8 KB checked in by airton, 12 years ago (diff)

Ticket #2815 - Inconsistencia com filtros de mensagens com anexos

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