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

Revision 5542, 23.9 KB checked in by gustavo, 12 years ago (diff)

Ticket #2088 - Melhorias no editor de regras de filtro de mensagens do Expresso

Line 
1 
2bytes2Size = function(bytes) {
3        var sizes = ['B', 'KB', 'MB', 'GB', 'TB'];
4        if (bytes === 0) return 'n/a';
5        var i = parseInt(Math.floor(Math.log(bytes) / Math.log(1024)));
6        var size = (i<2) ? Math.round((bytes / Math.pow(1024, i))) : Math.round((bytes / Math.pow(1024, i)) * 100)/100;
7        return  size + ' ' + sizes[i];
8};
9
10flags2Class = function(cellvalue) {
11        var flags_enum = cellvalue.split(',');
12        var classes = '';
13        for (var i=0; i<flags_enum.length; i++){
14                classes += '<span class="icon-'+flags_enum[i].toLowerCase()+'"> </span>';
15        }
16        return classes;
17};
18
19date2Time = function (timestamp) {
20        var date = new Date();
21        if ((date.getTime() - timestamp) < (24*60*60*1000)) {
22                return '<span class="timable" title="'+timestamp+'"> </span>';
23        } else {
24                date = new Date(timestamp);
25                var b = date.toISOString().split("T")[0].split("-");
26                var c = b[2] + "/" + b[1] + "/" + b[0];
27                return '<span class="datable">' + c + '</span>';
28        }
29};
30
31unorphanize = function(root, element) {
32        var ok = false;
33        for (var i=0; i<root.length; i++) {
34                if (root[i].id == element.parentFolder) {
35                        element.children = [];
36                        root[i].children.push(element);
37                        return true;
38                } else if (ok = unorphanize(root[i].children, element)) {
39                        break;
40                }
41        }
42
43        return ok;
44};
45
46keys = function( object ){
47 
48  var array = [];
49 
50  for( var key in object )
51       array[ array.length ] = key;
52 
53  return( array );
54
55}
56
57showDetails = function( filter ){
58 
59    form.get(0).reset();
60
61    nameObj.val( filter.name );
62        nameObj.attr("disabled", "disabled");
63    for( var i = 0; i < filter.criteria.length; i++ ){
64
65        criterias.filter( '[value="' + filter.criteria[i].field + '"]' )
66        .siblings( '[name="criteriaOperator[]"]' ).val( filter.criteria[i].operator ).end()
67        .siblings( '[name="criteriaValue[]"]' ).val( filter.criteria[i].value );
68
69    }
70
71       
72    for( var i = 0; i < filter.actions.length; i++ ){
73                actions.filter( '[value="' + filter.actions[i].type + '"]' ).attr("checked", "True");
74                actions.filter( '[value="' + filter.actions[i].type + '"]' ).val( filter.actions[i].type )
75                .siblings( '[name="actionParameter[]"]' ).val( filter.actions[i].parameter );
76                if(filter.actions[i].type == "redirect")
77                        actions.siblings('[name="addressRedirect"]').val(filter.actions[i].parameter);
78                if(filter.actions[i].type == "reject") 
79                        actions.siblings('[name="messageReject"]').val(filter.actions[i].parameter);
80    }
81 
82    //isExact.val( filter.isExact != "false"? "and" : "or" );
83        isExact.filter('[value="'+(filter.isExact != "false"? "and" : "or")+'"]').attr("checked", "True");
84}
85
86/* --- ------ --- */
87
88DataLayer.codec( "filter", "detail", {
89 
90  decoder: function( form ){
91      if( form.vacation )
92          return {
93
94                criteria: [{ value: "vacation", operator: "", field: "vacation" }],
95                actions: [{ parameter: form.vacation, type: "vacation" }],
96                id: "vacation",
97                name: "vacation",
98                isExact: false
99
100      }
101
102      var haha = {
103                //id: form.name,
104                name: form.name ? form.name : nameObj.val(),
105                isExact: ( form.isExact === "and" ),
106                criteria: $.map( form.criteriaOperator || [], function( criteriaOperator, i ){ 
107                        return (!form.criteriaValue[i]) ? null:
108                                {value:  form.criteriaValue[i],
109                                  operator: criteriaOperator,
110                                  field:  form.criteriaType[i]};
111
112                }),
113                actions: $.map( form.actionType || [], function( type, i ){
114                        var the_parameter = form.actionParameter[i];
115                       
116                        !the_parameter ? the_parameter = form.actionParameter[i+1] : "";
117                        if (type == 'fileinto') {
118                                the_parameter = form.valueFileInto;
119                        }
120                        if (type == 'reject') {
121                                the_parameter = form.messageReject;
122                        }
123                        if (type == 'fileintoInbox') {
124                                type = 'fileinto';
125                                the_parameter = 'INBOX';
126                        }
127                        if (type == 'fileintoTrash') {
128                                type = 'fileinto';
129                                the_parameter = 'INBOX/Trash';
130                        }
131                        if (type == 'redirect') {
132                                the_parameter = form.addressRedirect;
133                        }
134                        if (type == 'setflag') {
135                                the_parameter = form.valueSetFlag;
136                        }
137                       
138                        return (!type) ? null:
139                              {parameter: the_parameter, type: type };
140
141                }),
142                enabled : "enabled",
143                applyMessages: allMessages? !$.isEmptyObject( selectedMessages ) ?
144                keys( selectedMessages ) : allMessages : ""
145               
146      };
147          return haha;
148      //        'vacation' => ""
149  },
150 
151  encoder: function( filters ){
152       
153        var rules = [];
154
155        for( var id in filters )
156              rules[ rules.length ] = filters[id];
157
158        return { rules: rules };
159
160  }
161});
162
163DataLayer.codec( "folder", "select", {
164 
165  decoder:function(){
166
167     
168   
169  },
170  encoder:function( data ){
171 
172      var tree1 = [], tree2 = [], tree3 = [];
173
174      for (var i=0; i<data.length; i++) {
175
176              if (/^INBOX/.test(data[i].id)) {
177                      if (!unorphanize(tree1, data[i])) {
178                              data[i].children = [];
179                              tree1.push(data[i]);
180                      }
181              }
182              else if (/^user/.test(data[i].id)) {
183                      if (!unorphanize(tree2, data[i])) {
184                              data[i].children = [];
185                              tree2.push(data[i]);
186                      }
187              }
188              else if (/^local_messages/.test(data[i].id)) {
189                      if (!unorphanize(tree3, data[i])) {
190                              data[i].children = [];
191                              tree3.push(data[i]);
192                      }
193              }
194
195      }
196     
197      return {folders: [ tree1, tree2, tree3 ]};
198
199  }
200
201});
202/*
203DataLayer.listen( "filter", function( status ){
204 
205    DataLayer.render( BASE_PATH + 'modules/filters/filter-list.ejs', 'filter:detail', reraster );
206
207});
208*/
209
210
211var BASE_PATH = '../prototype/';
212
213DataLayer.basePath = BASE_PATH + "REST.php?q=";
214DataLayer.dispatchPath = BASE_PATH;
215
216var selectedMessages = {};
217var allMessages = false;
218//list_container = container.find(".rule-list-container");
219/*
220var raster = function( html ){
221        //alert("método raster\nParâmetro a seguir");
222        //alert(html);
223    container = $('body.expressomail-module-container').append( html ).find(".expresso-window-container");
224    //alert("método raster 1");
225        //alert(container);
226        list_container = container.find(".rule-list-container");
227    //alert("método raster 2");
228        details_container = container.find(".rule-details-container");
229    //alert("método raster 3");
230        vacation_container = container.find(".vacation-details-container");
231    //alert("método raster 4");
232        form = container.find("form");
233   
234        //alert("método raster 5");
235    criterias = details_container.find( 'fieldset input[name="criteriaType[]"]' );
236    //alert("método raster 6");
237        actions = details_container.find( 'fieldset input[name="actionType[]"]' );
238    //alert("método raster 7");
239        nameObj = details_container.find( 'input[name="name"]' );
240    //alert("método raster 8");
241        isExact = details_container.find( 'input[name="isExact"]' );
242        //alert("método raster 9");
243    formatter();
244    //alert("método raster 10");
245    container = container.dialog({
246            width:700,
247            modal: true,
248            closeOnEscape:true,
249            close:function(event, ui) {
250                    event.stopPropagation();
251                    list_container.removeClass('hidden');
252                    details_container.addClass('hidden');
253                    vacation_container.addClass('hidden');
254            },
255                open: function () {
256                        $(".ui-dialog .ui-dialog-titlebar")
257                        .append('<a href="#" class="ui-dialog-titlebar-minimize ui-corner-all" role="button"><span class="ui-icon ui-icon-minusthick">minimize</span></a>')
258                        .find('.ui-dialog-titlebar-minimize').click(function() {
259                                $(".ui-dialog-buttonpane, .ui-dialog-content").toggle();
260                                $(".ui-icon-minusthick, .ui-icon-newwin").toggleClass('ui-icon-minusthick').toggleClass('ui-icon-newwin');
261                        });
262                },
263            autoOpen: false
264    });
265    //alert("método raster 11");
266    details_container.accordion({autoHeight: false});
267   
268        //alert("método raster 12");
269    DataLayer.render( BASE_PATH + 'api/templates/folderselect.ejs', 'folder:select', function( html ){
270          details_container.find(".select-folderlist").append( html );
271    });
272
273        //alert("método raster 13");
274    container.find(".button").button()
275   
276    .filter(".menu-filters > .button")
277
278    .click(function(){
279
280        container.dialog( 'close' );
281
282    })
283   
284    .filter(".cancel")
285   
286    .click(function(){
287
288        DataLayer.rollback( 'filter' );
289        return( false );
290
291    })
292   
293    .end().filter(".submit")
294   
295    .click(function(){
296
297        DataLayer.commit( 'filter' );
298        return( false );
299
300    });
301        //alert("método raster 14");
302    details_container.find( ".menu-container" )
303
304        .find(".button.cancel").click(function(event){
305
306                details_container.accordion('activate',0);
307
308                showGridButton.removeClass('hidden');
309                grid.addClass('hidden').jqGrid('GridDestroy');
310         
311                list_container.removeClass('hidden');
312                details_container.addClass('hidden');
313
314                return( false );
315
316        }).end()
317        .find(".button.submit").click(function(event){
318
319                $(this).submit();
320
321                details_container.accordion('activate',0);
322
323                showGridButton.removeClass('hidden');
324                grid.addClass('hidden').jqGrid('GridDestroy');
325
326                list_container.removeClass('hidden');
327                details_container.addClass('hidden');
328
329                return( false );
330
331        }).end()
332        .find(".button.back").click(function(event){
333
334                details_container.accordion('activate',0);
335
336                return( false );
337
338        }).end()
339        .find(".button.forth").click(function(event){
340
341                details_container.accordion('activate',1);
342
343                return( false );
344
345        }).end()
346
347    //$( ".expresso-window-container .rule-details-container" ).accordion();
348    // var removeURL = new RegExp("^*.#");
349
350    // ------------------------------------------------------------
351    // ------------------------------------------------------------
352
353    //jqgrid
354    .end().find(".fields-search-messages .button.search")
355
356    .click(function(){
357
358                  var rule = DataLayer.form( form );
359                 
360                  showGridButton = $(this).parent();
361
362                  var connect = rule.isExact ? "AND" : "OR";
363
364                  var filter = $.map( rule.criteria, function( criteria, i ){
365
366                          if( i === 0 )
367                              return {"0": criteria.field, "1": criteria.operator, "2": criteria.value};
368                          else
369                              return {"0": connect,  "1": criteria.field, "2": criteria.operator, "3": criteria.value};
370                  });
371
372                  $.ajax( { 
373                            url: DataLayer.basePath + 'folder/INBOX/message&' +  $.param( {"filter": filter} ),
374
375                            dataType: 'json',
376
377                            success: function(data){
378                             
379                                  allMessages = data;
380
381                                  grid = showGridButton.addClass('hidden')
382                                  .siblings(".fields-search-messages-grid, .fields-search-messages-grid-pager")
383                                  .removeClass('hidden').filter(".fields-search-messages-grid").jqGrid({
384
385                                          url: DataLayer.basePath + 'folder/INBOX/message&' +  $.param( {"filter": [ "msgNumber", "IN", data ]} ),
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                                          pager: '#fields-search-messages-grid-pager',
408                                          sortname: 'id',
409                                          viewrecords: true,
410                                          sortorder: "desc",
411                                          multiselect: true,
412                                          autowidth: true,
413                                          height:40,
414                                          loadComplete: function(data) {
415                      //                                // aplica o contador
416                      //                                jQuery('.timable').each(function (i) {
417                      //                                        jQuery(this).countdown({
418                      //                                                since: new Date(parseInt(this.title)),
419                      //                                                significant: 1,
420                      //                                                layout: 'h&aacute; {d<}{dn} {dl} {d>}{h<}{hn} {hl} {h>}{m<}{mn} {ml} {m>}{s<}{sn} {sl}{s>}',
421                      //                                                description: ' atr&aacute;s'
422                      //                                        });
423                      //                                });
424                                          },
425                                          onSelectRow: function (id, selected) {
426
427                                              if( selected )
428                                                  selectedMessages[ id ] = true;
429                                              else
430                                                  delete selectedMessages[ id ];
431
432                                          },
433                                          caption: 'Mensagens que atendem aos crit&eacute;rios'
434                                  });
435                            }
436                  } );
437
438                 
439    });
440    //alert("método raster 15");
441    vacation_container.find( ".menu-container" )
442        .find(".button.back").click(function(event){
443
444                list_container.removeClass('hidden');
445                vacation_container.addClass('hidden');
446
447                return( false );
448
449        }).end()
450        .find(".button.submit").click(function(event){
451
452                $(this).submit();
453         
454                list_container.removeClass('hidden');
455                vacation_container.addClass('hidden');
456                return( false );
457        });
458        //alert("método raster 16");   
459}
460
461var reraster = function( html ){
462
463        //$(".rule-list-container").next().addClass("hidden");
464       
465        list_container.find( '.ui-widget' ).remove();
466
467        list_container.html( html ).find(".button").button();
468 
469        formatter();
470}
471
472var formatter = function(){
473
474    checkBoxes = container.find(".rule-list").selectable({
475                selecting: function(event, ui) {
476                        $(ui.selecting).find(':checkbox').attr('checked', true);
477                },
478                unselecting: function(event, ui) {
479                        $(ui.unselecting).find(':checkbox').attr('checked', false);
480                }
481    })
482    .find(':checkbox').change(function () {
483
484//      if ($(this).attr("checked"))
485//          $(this).parents('.rule').addClass('ui-selected');
486//      else
487            $(this).parents('.rule').toggleClass('ui-selected');
488
489    });
490
491    list_container.children()
492
493    .filter( ".fields-add" )
494
495        .find(".button.add").click(function(){
496
497                list_container.addClass('hidden');
498                details_container.removeClass('hidden');
499                form.get(0).reset();
500
501                return( false );
502        })
503        .filter(".vacation").click(function(){
504
505                details_container.addClass('hidden');
506                vacation_container.removeClass('hidden');
507                form.get(0).reset();
508
509                return( false );
510
511        }).end().end()
512
513    .end().filter( ".fields-selected-itens" )
514
515    .find(".button.enable").click(function(){
516
517            var values = [];
518     
519            checkBoxes.filter(':checked').parents(".rule-list").find('.title').each(function(){
520
521                values[ values.length ] = { id: this.innerHTML, enabled: true };
522
523            });
524
525            DataLayer.put( 'filter', values );
526
527    }).end()
528
529    .find(".button.disable").click(function(){
530     
531            var values = [];
532     
533            checkBoxes.filter(':checked').parents(".rule-list").find('.title').each(function(){
534
535                values[ values.length ] = { id: this.innerHTML, enabled: false };
536
537            });
538
539            DataLayer.put( 'filter', values );
540
541    }).end()
542
543    .find(".button.delete").click(function(){
544     
545            checkBoxes.filter(':checked').parents(".rule-list").find('.title').each(function(i, o){
546
547                 DataLayer.remove( 'filter', o.html() );
548
549            });
550
551    }).end()
552   
553
554    .end().find( ".menu-control .button" ).filter(".update").button({
555                icons: {
556                        primary: "ui-icon-pencil"
557                },
558                text: false
559        }).end()
560
561        .filter(".enable, .disable").click( function(event) {
562
563                var id = $(this).parents("li.rule").find('.title').html();
564
565                DataLayer.put( 'filter', id, { enabled: !$(this).is('.enable') } );
566        })
567
568        .filter(".enable").button({
569                icons: {
570                        primary: "ui-icon-circle-check"
571                },
572                text: false
573        }).end()
574
575        .filter(".disable").button({
576                icons: {
577                        primary: "ui-icon-circle-close"
578                },
579                text: false
580        }).end().end()
581       
582        .filter(".close").button({
583                icons: {
584                        primary: "ui-icon-close"
585                },
586                text: false
587        }).click( function(event) {
588                $(event.target)
589                .parents("li.rule").find('.title')
590                .each( function(){
591
592                    DataLayer.remove( 'filter', $(this).html() );
593
594                }).end().remove();
595        }).end()
596       
597        .filter(".update").click(function(event){
598
599                var id = ( event.target.href || event.target.parentNode.href ).replace( new RegExp("^.*#"), "" );
600
601                var data = DataLayer.get( 'filter', id );
602
603                if( id === "vacation" )
604                {
605                    $('[name="vacation"]').val( data.actions[0].parameter );
606
607                    list_container.addClass('hidden');
608                    vacation_container.removeClass('hidden');
609                    return;
610                }
611
612                showDetails( data );
613
614                list_container.addClass('hidden');
615                details_container.removeClass('hidden');
616        }).end()
617       
618        .removeClass('ui-button-icon-only');
619};
620
621//DataLayer.render(BASE_PATH + 'modules/filters/filters.ejs', {}, 'filter:detail', reraster, true);
622//var vamo_ver = DataLayer.render(BASE_PATH + 'modules/filters/filters.ejs', {});
623//raster(vamo_ver);
624//alert(vamo_ver);
625var v = DataLayer.render( BASE_PATH + 'modules/filters/filters.ejs', {});
626raster(v);
627                details_container.accordion('activate',0);
628
629                showGridButton.removeClass('hidden');
630                grid.addClass('hidden').jqGrid('GridDestroy');
631         
632                list_container.removeClass('hidden');
633                details_container.addClass('hidden');
634               
635DataLayer.render( BASE_PATH + 'modules/filters/filter-list.ejs', 'filter:detail', reraster );
636//var v = DataLayer.get("filter:detail");
637
638//alert(v);
639// ------------------------------------------------------------
640// ------------------------------------------------------------   
641*/
642function list_filters(html){
643        if(html){
644                if( ! $(".filters-windows").length )
645                        container = $('body.expressomail-module-container').append("<div class='filters-windows'></div>").find(".filters-windows").html( html ).find(".expresso-window-container");
646                list_container = $('body.expressomail-module-container').find(".rule-list-container");
647        }
648        list_container = $(".expresso-window-filters").dialog({
649            width:700,
650            modal: true,
651                resizable: false,
652            closeOnEscape:true,
653            close:function(event, ui) {
654                    event.stopPropagation();
655                        if($(".cancel").length)
656                                $(".cancel").trigger('click');
657                    //DataLayer.render( BASE_PATH + 'modules/filters/init.ejs', {},list_filters);
658            },
659                open: function () {
660                        $(".ui-dialog .ui-dialog-titlebar")
661                        .append('<a href="#" class="ui-dialog-titlebar-minimize ui-corner-all" role="button"><span class="ui-icon ui-icon-minusthick">minimize</span></a>')
662                        .find('.ui-dialog-titlebar-minimize').click(function() {
663                                $(".ui-dialog-buttonpane, .ui-dialog-content").toggle();
664                                $(".ui-icon-minusthick, .ui-icon-newwin").toggleClass('ui-icon-minusthick').toggleClass('ui-icon-newwin');
665                        });
666                },
667            autoOpen: false,
668                buttons: [{
669                        text : "Fechar",
670                        click : function() {
671                                $( this ).dialog( "close" );
672                        }
673                }]
674    });
675        $(".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>");
676        $(".dialog-head-buttonpane").css("padding", "5px").
677        find(".header-buttonpane").html("<a href='#' class='button add' title='Adicionar nova regra'>Nova regra</a><a href='#' class='button add vacation' title='Adicionar regra 'Fora do escritorio''>Fora do escritorio</a>").find(".button").button();
678       
679        $(".ui-dialog-buttonpane.ui-widget-content").css("background-color", "#E0EEEE");
680        var zu = DataLayer.render( BASE_PATH + 'modules/filters/filter-list.ejs', DataLayer.get("filter:detail", true));
681//      DataLayer.render( BASE_PATH + 'modules/filters/filter-list.ejs', 'filter:detail',function(html){
682                list_container.html(zu).find(".button").button();
683               
684                list_container.find(".rule-list").selectable({
685                        selecting: function(event, ui) {
686                                $(ui.selecting).find(':checkbox').attr('checked', true);
687                        },
688                        unselecting: function(event, ui) {
689                                $(ui.unselecting).find(':checkbox').attr('checked', false);
690                        }
691                });
692               
693                $( ".menu-control .button" ).filter(".update").button({
694                        icons: {
695                                primary: "ui-icon-pencil"
696                        },
697                        text: false
698                }).click(function(){
699                        var id = $(this).parents("li.rule").find('.title').html();
700                        var filters = DataLayer.get( 'filter', true);
701                        for(var i =0; i < filters.length; i++){
702                                if(filters[i].id == id){
703                                        filters = filters[i];
704                                        break;
705                                }       
706                        }
707                        DataLayer.render( BASE_PATH + 'modules/filters/edit-filter.ejs', {folders : DataLayer.get("folder", true)},function(html){
708                                var details_container = $(".expresso-window-filters").html(html);
709                                if(filters.name != "vacation"){
710                                        form = container.find("form");
711                                        criterias = details_container.find( 'fieldset input[name="criteriaType[]"]' );
712                                        actions = details_container.find( 'fieldset input[name="actionType[]"]' );
713                                        nameObj = details_container.find( 'input[name="name"]' );
714                                        isExact = details_container.find( 'input[name="isExact"]' );
715                                        showDetails(filters);
716                                        var accord = $(".rule-details-container").accordion({autoHeight: false});
717                                        $(".button").button().filter(".forth").click(function(){
718                                                accord.accordion('activate',1);
719                                        }).end().filter(".back").click(function(){
720                                                accord.accordion('activate',0);
721                                        }).end().filter(".cancel").click(function(){
722                                                DataLayer.render( BASE_PATH + 'modules/filters/init.ejs', {},list_filters);
723                                        }).end().filter(".submit").click(function(){
724                                                if(nameObj)
725                                                        nameObj.attr("disabled", "false");
726                                                $(this).submit();
727                                                DataLayer.commit( 'filter' );
728                                                DataLayer.render( BASE_PATH + 'modules/filters/init.ejs', {},list_filters);
729                                        });
730                                }else{
731                                        $(".vacation-details-container").removeClass("hidden");
732                                        $(".rule-details-container").addClass("hidden");
733                                        $(".button").button().filter(".back").click(function(){
734                                                DataLayer.render( BASE_PATH + 'modules/filters/init.ejs', {},list_filters);
735                                        }).end().filter(".submit").click(function(){
736                                                $(this).submit();
737                                                DataLayer.commit( 'filter' );
738                                                DataLayer.render( BASE_PATH + 'modules/filters/init.ejs', {},list_filters);
739                                        });
740                                        details_container.find('[name="vacation"]').val(filters.actions[0].parameter);
741                                }
742                        });
743                }).end()
744                .filter(".enable").button({
745                        icons: {
746                                primary: "ui-icon-circle-check"
747                        },
748                        text: false
749                }).click(function(){
750                        var id = $(this).parents("li.rule").find('.title').html();
751                        DataLayer.put( 'filter', id, { enabled: "disable"  });
752                        DataLayer.commit("filter");
753                        DataLayer.render( BASE_PATH + 'modules/filters/init.ejs', {},list_filters);
754                }).end()
755
756                .filter(".disable").button({
757                        icons: {
758                                primary: "ui-icon-circle-close"
759                        },
760                        text: false
761                }).click(function(){
762                        var id = $(this).parents("li.rule").find('.title').html();
763                        DataLayer.put( 'filter', id, { enabled: "enabled" });
764                        DataLayer.commit("filter");
765                        DataLayer.render( BASE_PATH + 'modules/filters/init.ejs', {},list_filters);
766                }).end()
767               
768                .filter(".close").button({
769                        icons: {
770                                primary: "ui-icon-close"
771                        },
772                        text: false
773                }).click(function(){
774                        $(event.target)
775                        .parents("li.rule").find('.title')
776                        .each( function(){
777                                DataLayer.remove( 'filter', $(this).html() );
778                        });
779                        DataLayer.commit("filter");
780                        DataLayer.render( BASE_PATH + 'modules/filters/init.ejs', {},list_filters);
781                }).end().removeClass("ui-button-icon-only");
782               
783                $(".button.add:first").click(function(){
784                        $(".dialog-head-buttonpane").addClass("hidden");
785                        DataLayer.render( BASE_PATH + 'modules/filters/edit-filter.ejs', {folders : DataLayer.get("folder", true)},function(html){
786                                $(".expresso-window-filters").html(html);
787                                var accord = $(".rule-details-container").accordion({autoHeight: false});
788                                $(".button").button().filter(".forth").click(function(){
789                                        accord.accordion('activate',1);
790                                }).end().filter(".back").click(function(){
791                                        accord.accordion('activate',0);
792                                }).end().filter(".cancel").click(function(){
793                                        DataLayer.render( BASE_PATH + 'modules/filters/init.ejs', {},list_filters);
794                                }).end().filter(".submit").click(function(){
795                                        $(this).submit();
796                                        DataLayer.commit( 'filter' );
797                                        DataLayer.render( BASE_PATH + 'modules/filters/init.ejs', {},list_filters);
798                                });
799                                //$(".rule-edit-container").html(html);
800                        });     
801                });
802                $(".button.add.vacation").click(function(){
803                        $(".dialog-head-buttonpane").addClass("hidden");
804                        DataLayer.render( BASE_PATH + 'modules/filters/edit-filter.ejs', {folders : DataLayer.get("folder", true)},function(html){
805                                $(".expresso-window-filters").html(html);
806                                $(".vacation-details-container").removeClass("hidden");
807                                $(".rule-details-container").addClass("hidden");
808                                $(".button").button().filter(".back").click(function(){
809                                        DataLayer.render( BASE_PATH + 'modules/filters/init.ejs', {},list_filters);
810                                }).end().filter(".submit").click(function(){
811                                        $(this).submit();
812                                        DataLayer.commit( 'filter' );
813                                        DataLayer.render( BASE_PATH + 'modules/filters/init.ejs', {},list_filters);
814                                });
815                                //$('[name="vacation"]').elastic().unbind('blur');
816                                //$(".back").click(function(){
817                                //$(".rule-edit-container").html(html);
818                        });     
819                });
820//      });
821}
822
823DataLayer.render( BASE_PATH + 'modules/filters/init.ejs', {},list_filters);
Note: See TracBrowser for help on using the repository browser.