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

Revision 6126, 24.3 KB checked in by airton, 12 years ago (diff)

Ticket #2704 - Implementar a validacao nos campos que faltam na tela de filtros de mensagens

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