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

RevLine 
[5950]1function outOfficeVerify() {   
2        DataLayer.remove('filter', false);
3        var filters = DataLayer.get("filter");
4        var outoffice_active = false;
[6021]5        outoffice = false;
[5950]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        }
[6021]15        if(!outoffice_active)
16                clean_msg();
[5950]17}
18
[5591]19valid_save = function(){
[5662]20        var accord = list_container.find(".rule-details-container").accordion({autoHeight: false});
[5598]21        if(list_container.find('[name="name"]').attr("disabled") != "disabled")
[5591]22        {
[5598]23                if($.trim(list_container.find('[name="name"]').val()) == ""){
[5801]24                        $.Zebra_Dialog(get_lang("No name filled"),{
[5662]25                                'onClose':  function(caption) {
26                                        list_container.find('[name="name"]').focus();
27                                }
28                        });
29                        accord.accordion('activate',0);
[5591]30                        return false;
[5598]31                }else if($.trim(list_container.find('[name="name"]').val()) == "vacation"){
[5801]32                        $.Zebra_Dialog(get_lang("Invalid name, 'vacation' is a reserved word"),{
[5662]33                                'onClose':  function(caption) {
34                                        list_container.find('[name="name"]').val("").focus();
35                                }
36                        });
37                        accord.accordion('activate',0);
[5591]38                        return false;
39                }else{
40                        filter_list = DataLayer.get("filter", true);
41                        var error = false;
42                        $.each(filter_list, function(index, value){
[5598]43                                if(filter_list[index].name == list_container.find('[name="name"]').val()){
[5801]44                                        $.Zebra_Dialog(get_lang("There is already a filter with this name"),{
[5662]45                                                'onClose':  function(caption) {
46                                                        list_container.find('[name="name"]').val("").focus();
47                                                }
48                                        });
49                                        accord.accordion('activate',0);
[5591]50                                        error = true;
51                                        return;
52                                }       
53                        });
54                        if(error){
55                                return false;
56                        }
57                }
58        }
59        var criteria = "";
[5598]60        var criteria_list = list_container.find('[name="criteriaValue[]"]');
[6126]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        }
[5591]72        $.each(criteria_list, function(index, value){
73                criteria += $.trim($(criteria_list[index]).val());
74        });
[6144]75        if(criteria == ""){
[5801]76                $.Zebra_Dialog(get_lang("No criteria filled"),{
[5662]77                        'onClose':  function(caption) {
78                                list_container.find('[name="criteriaValue[]"]:first').focus();
79                        }
80                });
81                accord.accordion('activate',0);
[5591]82                return false;
83        }
[5598]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()) == ""){
[5801]86                        $.Zebra_Dialog(get_lang("Fill the action value"),{
[5662]87                                'onClose':  function(caption) {
88                                        list_container.find('[name="actionType[]"]:checked').parent().find("input:text, textarea").focus();
89                                }
90                        });
[5591]91                        return false;
92                }
[6126]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                }
[5591]102        }
103        return true;
104};
105
[5341]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 );
[5539]151        nameObj.attr("disabled", "disabled");
[5341]152    for( var i = 0; i < filter.criteria.length; i++ ){
[6348]153                if(filter.criteria[i].field == 'hasAttachment') {
154                        $(".hasAttachment").attr("checked", "True");
155                        continue;
156                }
[5630]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 );
[5341]160    }
161    for( var i = 0; i < filter.actions.length; i++ ){
[5539]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);
[5632]169                if(filter.actions[i].type == "fileinto" || filter.actions[i].type == "setflag")
170                        actions.parent().find('[value="'+filter.actions[i].parameter+'"]').attr("selected", "selected");
[5341]171    }
[5539]172    //isExact.val( filter.isExact != "false"? "and" : "or" );
[6348]173        isExact.filter('[value="'+(filter.isExact != "false"? "and" : "or")+'"]').attr("checked", "True");     
[5341]174}
175
176/* --- ------ --- */
177
178DataLayer.codec( "filter", "detail", {
179 
180  decoder: function( form ){
181      if( form.vacation )
182          return {
[5539]183                criteria: [{ value: "vacation", operator: "", field: "vacation" }],
184                actions: [{ parameter: form.vacation, type: "vacation" }],
[5341]185                id: "vacation",
186                name: "vacation",
[5627]187                isExact: false,
188                applyMessages : "",
[5902]189                enabled : true
[5341]190      }
191
[6143]192        var apply_messages_ = keys(selectedMessages);
193        delete selectedMessages;
[5862]194
[6143]195    return {
[5539]196                //id: form.name,
[6168]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;'),
[5341]198                isExact: ( form.isExact === "and" ),
[5539]199                criteria: $.map( form.criteriaOperator || [], function( criteriaOperator, i ){ 
[5341]200                        return (!form.criteriaValue[i]) ? null:
[6143]201                        {
[6168]202                                        value:  form.criteriaValue[i].replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;'),
[6143]203                                        operator: criteriaOperator,
[6168]204                                        field:  form.criteriaType[i].replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;')
[6143]205                        };
[5341]206                }),
207                actions: $.map( form.actionType || [], function( type, i ){
[5539]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') {
[5591]218                                if(!$('[value="fileintoInbox"]').parent().hasClass("hidden")){
219                                        type = 'fileinto';
220                                        the_parameter = 'INBOX';
221                                }else{
222                                        return;
223                                }
[5539]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                        }
[5341]235                        return (!type) ? null:
[5539]236                              {parameter: the_parameter, type: type };
[5341]237
238                }),
[5902]239                enabled : true,
[5862]240                //applyMessages: allMessages? !$.isEmptyObject( selectedMessages ) ?
241                //keys( selectedMessages ) : allMessages : ""
242                applyMessages: apply_messages_
243                //applyMessages: ""
[6143]244    };
[5341]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  }
[5862]256 
[5341]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
[5630]299
300
301
[5341]302var BASE_PATH = '../prototype/';
303
304DataLayer.basePath = BASE_PATH + "REST.php?q=";
305DataLayer.dispatchPath = BASE_PATH;
306
307var selectedMessages = {};
308var allMessages = false;
309
[5630]310function block_user_email(email) {
311        //var id = "block_"+email;
312        var idd = email;
[5762]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);
[5654]317        for(var index in filters){
318                if(filters[index].name == email) {
[5801]319                        if(confirm(get_lang("This user is already blocked. Would you like to unlock it?"))) {
[5655]320                                DataLayer.remove( 'filter', filters[index].id );
[5762]321                                DataLayer.commit("filter", false, function(){
[5801]322                                        $.Zebra_Dialog(get_lang("Lock User") + " " + email + " " + get_lang("removed"));
[5762]323                                        list_filters();
324                                });
[5654]325                                return true;
[5662]326                        }else
327                                return true;
[5654]328                }
329        }
[5801]330        if(confirm(get_lang("Want to block the user") + " " + email + "?")){
[5762]331                DataLayer.put( 'filter', idd,
[5630]332                                        { name: email, isExact: false,
333                                                criteria:{ 0: {value: email, operator: "=", field: "from"} },
[6176]334                                                actions: { 0: {parameter: "INBOX" + cyrus_delimiter + "Spam", type: "fileinto"}},
[5630]335                                                enabled: true,
336                                                id: email,
337                                                block: true
338                                        });
[5762]339                DataLayer.commit("filter", false, function(){
[5801]340                        $.Zebra_Dialog(get_lang("User") + " " + email + " " + get_lang("blocked"));
[5762]341                        list_filters();
342                });
343               
344        }
[5630]345}
346
[6048]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',
[6143]391                                colNames:['#', 'De', 'Assunto', 'Data', 'Tamanho'],
[6048]392                                colModel:[
393                                        {name:'msg_number',index:'msg_number', width:45, hidden:true, sortable:false},
[6143]394                                        {name:'from.email',index:'msg_number', width:130, sortable:false},
[6048]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
[5539]447function list_filters(html){
[6284]448
449
[6021]450        outOfficeVerify();
[5539]451        if(html){
452                if( ! $(".filters-windows").length )
[5761]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");
[5539]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();
[5598]463                        if(list_container.find(".cancel").length)
[5627]464                                list_container.find(".cancel").trigger('click');       
465                        $(".dialog-head-buttonpane").hide();
[5539]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                        });
[5627]474                        $(".dialog-head-buttonpane").show();
[5539]475                },
476            autoOpen: false,
477                buttons: [{
[5801]478                        text : get_lang("Close"),
[5539]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").
[5801]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();
[5539]487       
488        $(".ui-dialog-buttonpane.ui-widget-content").css("background-color", "#E0EEEE");
[5598]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();
[5543]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       
[5598]501        list_container.find( ".menu-control .button" ).filter(".update").button({
[5543]502                icons: {
503                        primary: "ui-icon-pencil"
504                },
505                text: false
506        }).click(function(){
[5627]507                var id = $(this).parents("li.rule").find('.id').val();
[5543]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                }
[5801]515                DataLayer.render( BASE_PATH + 'modules/filters/edit-filter.ejs', {folders : DataLayer.get("folder", true), delimiter: cyrus_delimiter},function(html){
[5543]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);
[5598]524                                var accord = list_container.find(".rule-details-container").accordion({autoHeight: false});
525                                list_container.find(".button").button().filter(".forth").click(function(){
[5539]526                                        accord.accordion('activate',1);
[5930]527                                }).end().filter(".forth2").click(function(){
528                                        accord.accordion('activate',2);
[5539]529                                }).end().filter(".back").click(function(){
530                                        accord.accordion('activate',0);
[5930]531                                }).end().filter(".back2").click(function(){
532                                        accord.accordion('activate',1);
[5539]533                                }).end().filter(".cancel").click(function(){
534                                        DataLayer.render( BASE_PATH + 'modules/filters/init.ejs', {},list_filters);
535                                }).end().filter(".submit").click(function(){
[5543]536                                        if(nameObj)
537                                                nameObj.attr("disabled", "false");
[5591]538                                        if(valid_save())
539                                                $(this).submit();
540                                        else
541                                                return;
[5662]542                                        DataLayer.commit( 'filter', false,function(){
543                                                DataLayer.render( BASE_PATH + 'modules/filters/init.ejs', {},list_filters);
544                                        });
[6048]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                        })
[5543]552                        }else{
[5598]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(){
[5539]556                                        DataLayer.render( BASE_PATH + 'modules/filters/init.ejs', {},list_filters);
557                                }).end().filter(".submit").click(function(){
558                                        $(this).submit();
[5662]559                                        DataLayer.commit( 'filter', false,function(){
560                                                DataLayer.render( BASE_PATH + 'modules/filters/init.ejs', {},list_filters);
561                                        });
[5539]562                                });
[5543]563                                details_container.find('[name="vacation"]').val(filters.actions[0].parameter);
564                        }
[5539]565                });
[5543]566        }).end()
567        .filter(".enable").button({
568                icons: {
[5648]569                        primary: "ui-icon-circle-close"
[5543]570                },
571                text: false
572        }).click(function(){
[6021]573                var id = $(this).parents("li.rule").find('.id').val();         
[5601]574                DataLayer.put( 'filter', id, { enabled: false  });
[5627]575                DataLayer.commit("filter", false,function(){
576                        DataLayer.render( BASE_PATH + 'modules/filters/init.ejs', {},list_filters);
577                });
[5543]578        }).end()
579
580        .filter(".disable").button({
581                icons: {
[5648]582                        primary: "ui-icon-circle-check"
[5543]583                },
584                text: false
585        }).click(function(){
[5627]586                var id = $(this).parents("li.rule").find('.id').val();
[5601]587                DataLayer.put( 'filter', id, { enabled: true });
[5627]588                DataLayer.commit("filter", false,function(){
589                        DataLayer.render( BASE_PATH + 'modules/filters/init.ejs', {},list_filters);
590                });
[5543]591        }).end()
592       
593        .filter(".close").button({
594                icons: {
595                        primary: "ui-icon-close"
596                },
597                text: false
[5648]598        }).click(function(event){
[5662]599                var filter_name = $(event.target).parents("li.rule").find('.id').val();
[5902]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>",{
[5662]602                        'type':     'question',
[5801]603                        'title':    get_lang("Exclusion Confirmation"),
[5662]604                        'buttons':  [get_lang('Yes'), get_lang('No')],
605                        'onClose':  function(caption) {
606                                if(caption == get_lang('Yes')){
[5762]607                                /** TODO - Mudar quando API abstrair atualizações no cache */
608                                        DataLayer.remove('filter', false);
609                                        DataLayer.get('filter');
[5662]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                        }
[5543]618                });
619        }).end().removeClass("ui-button-icon-only");
620       
[6021]621        $(".button.allenable").click(function(){
[5987]622                container.find('.rule-list').find('.rule').find('.select').find(':checked').parents('.rule').find('.title').each(function(i,o){
[5995]623                        DataLayer.put( 'filter', o.innerHTML, { enabled: true  });
[5987]624                });
625                DataLayer.commit("filter", false, function(){
626                        DataLayer.render( BASE_PATH + 'modules/filters/init.ejs', {},list_filters);
627                });
628        });
[5985]629       
[6021]630        $(".button.alldisable").click(function(){
[5987]631                container.find('.rule-list').find('.rule').find('.select').find(':checked').parents('.rule').find('.title').each(function(i,o){
[5995]632                        DataLayer.put( 'filter', o.innerHTML, { enabled: false  });
[5987]633                });
634                DataLayer.commit("filter", false, function(){
635                        DataLayer.render( BASE_PATH + 'modules/filters/init.ejs', {},list_filters);
636                });
637        });
638       
639       
640       
[6021]641        $(".button.alldelete").click(function(){
[5985]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       
[5930]664        var aa = 0;
665       
[5598]666        list_container.parent().find(".button.add:first").click(function(){
667                list_container.parent().find(".dialog-head-buttonpane").addClass("hidden");
[5801]668                DataLayer.render( BASE_PATH + 'modules/filters/edit-filter.ejs', {folders : DataLayer.get("folder", true), delimiter: cyrus_delimiter},function(html){
[5598]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(){
[5543]672                                accord.accordion('activate',1);
[5930]673                        }).end().filter(".forth2").click(function(){
674                                accord.accordion('activate',2);
[5543]675                        }).end().filter(".back").click(function(){
676                                accord.accordion('activate',0);
[5930]677                        }).end().filter(".back2").click(function(){
678                                accord.accordion('activate',1);
[5543]679                        }).end().filter(".cancel").click(function(){
680                                DataLayer.render( BASE_PATH + 'modules/filters/init.ejs', {},list_filters);
[5862]681                        }).end().filter(".submit").click(function() {
[5591]682                                if(valid_save())
683                                        $(this).submit();
684                                else
685                                        return;
[5627]686                                DataLayer.commit( 'filter',false,function(){
687                                        DataLayer.render( BASE_PATH + 'modules/filters/init.ejs', {},list_filters);
688                                });
[5862]689                        }).end().filter('.button.search').click(function() {                           
690                                if(valid_save())
[6048]691                                        showGridMessages($(this));
[5862]692                                else
693                                        return;
694                        }); // end function click
695                });     // end DataLayer.render
[5543]696        });
[5598]697        list_container.parent().find(".button.add.vacation").click(function(){
[6284]698       
[5598]699                list_container.parent().find(".dialog-head-buttonpane").addClass("hidden");
[5801]700                DataLayer.render( BASE_PATH + 'modules/filters/edit-filter.ejs', {folders : DataLayer.get("folder", true), delimiter: cyrus_delimiter},function(html){
[5598]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(){
[5543]705                                DataLayer.render( BASE_PATH + 'modules/filters/init.ejs', {},list_filters);
706                        }).end().filter(".submit").click(function(){
[6284]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{
[5543]712                                $(this).submit();
[5627]713                                DataLayer.commit( 'filter',false,function(){
714                                        DataLayer.render( BASE_PATH + 'modules/filters/init.ejs', {},list_filters);
715                                });
[6284]716                        }
717                       
[5543]718                        });
719                });     
[6284]720               
721               
[5543]722        });
[5539]723}
[6284]724
725
726
[5782]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.