source: trunk/expressoMail1_2/js/jscode/filter.js @ 2955

Revision 2955, 23.5 KB checked in by amuller, 14 years ago (diff)

Ticket #1109 - Refaz a tela de regras com melhorias na visualização

Line 
1
2        function charCounter(form)
3        {
4                if (form.value.length >= 300)
5                {
6                        alert(get_lang("You have exceeded the number of allowed characters"));
7                        return false;
8                }
9        }
10
11        function cfilter(){
12
13                this.criticalError = false;
14                this.mode_in   = "";
15                this.rulest              = new Array;
16                this.rulesVoip   = new Array;
17                this.out_officeR = "";
18                this.out_officeF = false;
19                this.email_deny  = new Array;
20                this.ac_form     = "";
21                this.ind                 = "";
22                this.email_deny  = new Array;
23                this.email_ld    = "";
24                this.values = new Array("",
25                                        ",checkBox1",
26                                        ",select_size=1",
27                                        ",checkBox1,select_size=1",
28                                        ",select_rules=1",
29                                        ",checkBox1,select_rules=1",                           
30                                        ",select_size=1,select_rules=1",                               
31                                        ",checkBox1,select_size=1,select_rules=1",
32                                        ",checkBox2",                           
33                                        ",checkBox1,checkBox2",                         
34                                        ",checkBox2,select_size=1",
35                                        ",ckeckBox1,checkBox2,select_size=1",
36                                        ",checkBox2,select_rules=1",                                                                                                                                                           
37                                        ",checkBox1,checkBox2,select_rules=1",                         
38                                        ",checkBox2,select_size=1,select_rules=1",                             
39                                        ",checkBox1,checkBox2,select_size=1,select_rules=1");
40               
41        }
42
43       
44        cfilter.prototype.load_rules = function( posHandler, param )
45        {
46                var _this = this;
47                var cont1 = parseInt(0);
48                var cont2 = parseInt(0);
49                               
50                if( _this.rulest.length == 0 )
51                {
52                        var handler_sieve = function(data)
53                        {
54                                if (data.toString().indexOf('Error:') == 0)
55                                {
56                                        _this.criticalError = true;
57                                        alert(get_lang('The filters service is out of service, try again later...'));
58                                }
59                                else
60                                try{
61                                if(data.rule.length > 0){
62                                        for(var i=0 ; i < data.rule.length; i++)
63                                        {
64                                                var fields = data.rule[i].split("&&");
65                                                if( fields[6] == 'notify' && fields[7] == preferences.voip_email_redirect )
66                                                        _this.rulesVoip[cont1++] = data.rule[i];
67                                                else
68                                                        _this.rulest[cont2++] = data.rule[i];
69                                        }
70                                }
71                                _this.out_officeR = data.vacation[0];
72                                _this.out_officeR = _this.out_officeR ? trim(_this.out_officeR.toString().replace("\n","")) : "";
73                                if(data.mode.length > 0){_this.mode_in = data.mode[0];}
74                        }
75                                catch(e){
76                                        _this.criticalError = true;
77                                        alert(get_lang('The filters service is out of service, try again later...'));
78                                }
79                                if (typeof(posHandler) == 'function')
80                                        posHandler(param);
81                        }
82                        if(Element('form_status') != null)
83                                Element('form_status').innerHTML = "<span style='background:#cc4444;'>&nbsp;&nbsp;<font color='WHITE'>Aguarde...</font>&nbsp;</span>";
84                        cExecute("expressoMail1_2.ScriptS.init_a",handler_sieve);
85                        _this.get_email();
86            }
87        }
88       
89        cfilter.prototype.form_m = function(){
90                Element('form_body').innerHTML = "";
91                Element('form_buttons').style.display = '';
92                filters.mount_list();
93                this.ac_form = "";             
94        }
95       
96        cfilter.prototype.form_out = function(){
97                Element('form_body').innerHTML = "";
98                Element('form_body').innerHTML = this.forms_();
99                Element('div_vacation').style.display = "";
100                this.ac_form = "old_out";               
101                this.r_rules_out();             
102        }
103       
104        cfilter.prototype.form_r = function(pos,type)
105        {
106                Element('form_body').innerHTML = "";
107                Element('form_body').innerHTML = this.forms_();
108                this.ind = pos;         
109               
110                if( type === 'voip')
111                {
112                        this.ac_form = "old_voip";
113                        Element('div_voipFilter').style.display = "";
114                        this.r_rules_form(pos, type);   
115                }
116                else
117                {
118                        this.ac_form = "old_rule";
119                        Element('div_rule').style.display = "";
120                        this.r_rules_form(pos, type);
121                }
122        }
123       
124        cfilter.prototype.get_email = function()
125        {
126                var _this = this;
127                var handler_get_email = function(data)
128                {
129                        _this.email_ld = data ? data : "";
130                }
131                cExecute("expressoMail1_2.user.get_email",handler_get_email);
132        }
133       
134        cfilter.prototype.sel_boxes = function()
135        {
136                var nm_folders = tree_folders.getNodesList(cyrus_delimiter);
137                if(document.getElementById("select_mailboxes") != null){
138                        var sel_nm = document.getElementById("select_mailboxes");
139                        if(sel_nm.length > 0 ){
140                                for(var i=0; i < sel_nm.options.length; i++){
141                                        sel_nm.options[i] = null;
142                                        i--;
143                                }
144                        }
145                        for(var i=0; i < nm_folders.length; i++){
146                                if(nm_folders[i].id != "root" && !proxy_mensagens.is_local_folder(nm_folders[i].id)){
147                                        var opt = new Option(nm_folders[i].caption,nm_folders[i].id,false,true);
148                                        sel_nm[sel_nm.length] = opt;
149                                }
150                        }
151                        sel_nm[0].selected = true;
152                }
153        }
154
155        cfilter.prototype.box_select = function(param){
156                var aux = this.BoxSelection[param].split(",");
157                var ele1 = document.getElementById(aux[0]);
158                var ele2 = document.getElementById(aux[1]);
159                var noption = "";
160                if(param == 0 || param == 1){
161                        if(ele1.selectedIndex != -1){
162                                noption = new Option(ele1.value,ele1.value,false,false);
163                                ele2.options[ele2.length] = noption;
164                                ele1.options[ele1.selectedIndex] = null;
165                                ele1.selectedIndex = 0;
166                        }
167                }
168        }
169
170        cfilter.prototype.r_rules_form = function(ind, type)
171        {
172                var fields = new Array;
173                var _this = this;
174               
175                // hide buttons
176                Element('form_buttons').style.display = 'none';
177               
178                if( type === 'voip')
179                {
180                        fields = _this.rulesVoip[ind].split("&&");
181                        document.getElementById("field9").value = fields[5];                   
182                }
183                else
184                {
185                        this.sel_boxes();
186                        if(this.rulest.length == 0){
187                                return false;
188                        }
189                        fields = _this.rulest[ind].split("&&");
190                        document.getElementById("field1").value = fields[3];
191                        document.getElementById("field2").value = fields[4];
192                        document.getElementById("field3").value = fields[5];
193                        document.getElementById("field4").value = fields[11];                           
194                       
195                        switch(fields[6]){
196                                case "folder":
197                                        document.getElementById("radio1").checked  = true;
198                                        var name_mb = fields[7];
199                                        var sel_mb = document.getElementById("select_mailboxes");
200                                        for(var i=0; i < sel_mb.options.length; i++){if((sel_mb.options[i].value) ==  name_mb){sel_mb.options[i].selected = true;}}
201                                        break;
202                                case "address":
203                                        document.getElementById("radio2").checked   = true;
204                                        document.getElementById("field5").value         = fields[7];
205                                        break;
206                                case "reject":
207                                         document.getElementById("radio3").checked  = true;
208                                         var text0 = fields[7].split("\\n");                                   
209                                         for(var i=0; i < text0.length; i++){document.getElementById("field6").value += text0[i] + "\n";}
210                                         break;
211                                case "discard":
212                                        document.getElementById("radio4").checked       = true;
213                                        break;
214                        }
215                        var mark_values = this.values[fields[8]].split(",");
216                        for(var i=0; i < mark_values.length; i++){
217                                if( mark_values[i] == "checkBox1" || mark_values[i] == "checkBox2"){
218                                        document.getElementById(mark_values[i]).checked = true;
219                                }
220                                if( mark_values[i] == "select_size=1" || mark_values[i] == "select_rules=1"){
221                                        var mark_val = mark_values[i].split("=");
222                                        document.getElementById(mark_val[0]).options[mark_val[1]].selected = true;
223                                }
224                        }
225                }
226        }
227
228        cfilter.prototype.r_rules_out = function(){
229       
230                var _this = this;
231                if(_this.out_officeR.length == 0){
232                        return false;
233                }
234               
235                // hide buttons
236                Element('form_buttons').style.display = 'none';
237       
238                var aux = _this.out_officeR.split("&&");
239                var days   = aux[1];
240                var emails = aux[2];
241                var mens   = aux[3];           
242                var p_emails = new Array;
243                var d_emails = new Array;
244                               
245                var p_aux = emails.split(", ");
246                for(var i=0; i < p_aux.length; i++){
247                        p_emails[i] = p_aux[i].substr(0,(p_aux[i].length - 1));
248                        p_emails[i] = p_emails[i].substr(1,(p_aux[i].length));
249                }
250                for(var i=0; i < _this.email_ld.length; i++){
251                        d_emails[i] = _this.email_ld[i];
252                }
253
254                diff = function(vet, comp){
255                        var sel1 = new Array;
256                        for(var i=0; i < vet.length; i++){
257                                for(var j=0; j < comp.length; j++){
258                                        if(vet[i] == comp[j]){
259                                                comp.splice(j,1);
260                                                j--;
261                                        }
262                                }
263                        }
264                };     
265                diff(p_emails,d_emails);
266                var text    = mens.split("\\n");
267                for(var i=0; i < text.length; i++){document.getElementById("field8").value += text[i] + " ";}
268                for(var i=0; i < _this.email_ld.length; i++){
269                        d_emails[i] = _this.email_ld[i];
270                }
271
272        }
273
274        /*
275         * Corrige bug 65, solução: desabilitar radio3 e field6 e desmarcar radio3 (ação de rejeição)
276         * quando a caixa de seleção para manter o e-mail na caixa de entrada do usuário for selecionada
277         */
278        cfilter.prototype.disable_radio =  function()
279        {
280                radio4 = Element('radio4');
281                radio3 = Element('radio3');
282                cb2 = Element('checkBox2');
283                field6 = Element('field6')
284
285                if (cb2.checked)
286                {
287                        radio3.disabled = true;
288                        radio4.disabled = true;
289                        field6.disabled = true;
290
291                        if (radio3.checked)
292                        {
293                                radio3.checked = false;
294                        }
295                }
296                else
297                {
298                        radio3.disabled = false;
299                        radio4.disabled = false;
300                        field6.disabled = false;
301                }
302
303        }
304
305        cfilter.prototype.forms_ = function()
306        {
307                         var form = "";
308                                 form = "<div id='div_rule' style='display:none'><table id='table_rule' border='0' cellpading='0' cellspacing='0' width='100%'>"+
309/*                                              "<tr><td colspan='2'><input type='checkBox' id='checkBox1' name='checkb'>"+get_lang('Also check message against next rule') + "</td></tr>"+*/
310                                                "<tr><td colspan='2'><b>"+get_lang("Criteria")+":</b></td></tr><tr>"+
311                                                "<td rowspan='4' width='20%'>"+get_lang('Find items')+":<br><select id='select_rules' name='select_rules'>"+
312                                                "<option value='1'>"+get_lang("If any criterion is met")+"</option><option value='0'>"+get_lang("If all criteria is met")+"</option>"+
313                                                "</select></td><td>"+get_lang('The field \"%1\" of the message it contains',get_lang('From'))+".: <input type='text' id='field1' name='field1' size='35' maxlength='200'></td>"+
314                                                "</tr><tr><td>"+get_lang('The field \"%1\" of the message it contains', get_lang('To'))+".: <input type='text' id='field2' name='field2' size='35' maxlength='200'></td>"+
315                                                "</tr><tr><td>"+get_lang('The field \"%1\" of the message it contains', get_lang('Subject'))+".: <input type='text' id='field3' name='field3' size='35' maxlength='200'></td>"+
316                                                "</tr><tr><td>"+get_lang('The size of the message is')+".: &nbsp<select id='select_size' name='select_size'>"+
317                                                "<option value='1'>"+get_lang("Greater than")+"</option><option value='0'>"+get_lang("Less than")+"</option>"+                                           
318                                                "</select>&nbsp;<input type='text' id='field4' name='field4' size='8' maxlength='8'> Kb</td>"+
319                                                "</tr><tr><td colspan='2'><hr size='1' width='100%'><b>"+get_lang("Action")+":</b></td></tr>"+
320                                                "</table><table id='table_rule1' border='0' cellpading='0' cellspacing='0' width='100%'>"+
321                                                "<tr><td colspan='2'><input type='checkBox' id='checkBox2' onclick='filter.disable_radio();' name='checkb'>"+get_lang('Keep a copy of the message at your Inbox')+ "</td><tr>"+
322
323                                                "<tr><td width='50%'><input type='radio' id='radio1' name='radio' value='folder'>"+get_lang('Store at')+".:</td>"+
324                                                "<td width='50%'><select id='select_mailboxes' name='select_mailboxes'></select></td>"+
325                                                "</tr><tr><td width='50%'><input type='radio' id='radio2' name='radio' value='address'>"+get_lang('Forward to the address')+".:</td>"+
326                                                "<td width='50%'><input type='text' id='field5' name='field5' size='35' maxlength='70'></td>"+
327                                                "</tr><tr><td width='50%'><input type='radio' id='radio3' name='radio' value='reject'>"+get_lang('Send a rejection message')+".:</td>"+
328                                                "<td width='50%'><textarea id='field6' onkeypress='return charCounter(this);' name='field6' rows='3' cols='25'></textarea></td>"+
329                                                "</tr><tr><td colspan='2'><input type='radio' id='radio4' name='radio' value='discard'>"+get_lang('Erase the message')+"</td>"+
330
331                                                "</tr></table></div><div id='div_vacation' style='display:none'>"+
332                                                "<table id='table_vacation' border='0' cellpading='0' cellspacing='0' width='100%'>"+
333                                                "<tr><td colspan='3'><br><b>"+get_lang('out office')+"</b></td></tr>"+
334                                                //"<tr><td colspan='3'><br>"+get_lang('Subject')+".: <input type='text' id='field7' name='field7' size='35' maxlength='200'/></td></tr>"+
335                                                "<tr><td colspan='3'><br>"+get_lang('With the following message')+".:</td>"+
336                                                "</tr><tr><td colspan='3'><textarea id='field8' onkeypress='return charCounter(this);' rows='8' cols='50'></textarea></td></tr></table></div>" +
337                                                "<div id='div_voipFilter' style='display:none'>" +
338                                                "<br/><table id='table_voipFilter'>" +
339                                                "<tr><td>"+get_lang("Type the subject of the message for receiving a phone warning")+" .:"+
340                                                "</td></tr><tr><td><input type='text' id='field9' size='50' maxlength='200'>" +
341                                                "</td></tr><br/></table></div>" +
342                                                "<span align='right'><input type='button' value="+get_lang("Back")+" onclick='filter.form_m()'></span>"+
343                                                "<span align='right'><input type='button' value="+get_lang("Save")+" onclick='filter.saved_rules()'></span>";
344                return form;
345        }
346
347        cfilter.prototype.enabled_disabled = function(param){
348
349                // Rules
350                if(Element("rule_0") != null){
351                        for(var i=0; i < this.rulest.length; i++){
352                                if(Element("rule_"+i).checked){
353                                        var aux_rul = this.rulest[i].split("&&");
354                                        if(aux_rul[2] != param){
355                                                aux_rul[2] = param;                                     
356                                                var rl = "";
357                                                for(var j=0; j < aux_rul.length; j++){
358                                                        rl += aux_rul[j] + "&&";
359                                                }
360                                                rl = rl.substr(0,(rl.length - 2));
361                                                this.rulest[i] = rl;                                   
362                                        }
363                                }
364                        }
365                }
366                // Out Office
367                if(Element("out_0") != null){
368                        if(Element("out_0").checked){
369                                var aux_out = this.out_officeR.split("&&");
370                                if(param == "ENABLED")
371                                        aux_out[4] = "on ";
372                                else
373                                        aux_out[4] = "off";
374                                var out = "";
375                                for(var i=0; i < aux_out.length; i++){
376                                        out += aux_out[i] + "&&";
377                                }                               
378                                out = out.substr(0,(out.length - 2));
379                                this.out_officeR = out;
380                        }
381                }
382
383                // Voip
384                if(Element("voip_rule_0") != null){
385                        for(var i=0; i < this.rulesVoip.length; i++){
386                                if(Element("voip_rule_"+i).checked){
387                                        var aux_rul = this.rulesVoip[i].split("&&");
388                                        if(aux_rul[2] != param){
389                                                aux_rul[2] = param;                                     
390                                                var rl = "";
391                                                for(var j=0; j < aux_rul.length; j++){
392                                                        rl += aux_rul[j] + "&&";
393                                                }
394                                                rl = rl.substr(0,(rl.length - 2));
395                                                this.rulesVoip[i] = rl;                                 
396                                        }
397                                }
398                        }
399                }
400               
401                this.reload_rules();
402        }
403       
404        cfilter.prototype.new_rule = function(email){
405                var createFilter = function (param){
406                        if (filter.criticalError){
407                                alert(get_lang('The filters service is out of service, try again later...'));
408                                return false;
409                        }
410                        if(filter.rulest.length > 0){
411                                var blockedReg = new RegExp('#rule&&[0-9]+&&ENABLED&&'+param+'&&&&&&discard&&&&0&&&&&&0');
412                                for(var i=0 ; i < filter.rulest.length; i++){
413                                        if(blockedReg.test(filter.rulest[i])){
414                                                alert(get_lang("Sender blocked")+"!");
415                                                return false;
416                                        }
417                                }
418                        }
419                        if(confirm(get_lang("Do you want to block this e-mail?"))){
420                                new_r = "&&ENABLED&&" + param + "&&&&&&discard&&&&0&&&&&&0";
421                                //setTimeout("filter.e_newrule('" + new_r + "')",2000);         
422                                if (filter.e_newrule(new_r)){
423                                        filter.email_deny.push(param);
424                                        write_msg(get_lang("The sender was blocked"));                                                 
425                                }else
426                                        write_msg(get_lang("You have reached the maximum number of rules"));
427                        }
428                };
429                if ( filter.rulest.length > 0 )
430                        createFilter(email);
431                else
432                        this.load_rules( createFilter, email );
433        }
434       
435        cfilter.prototype.e_newrule = function(nw_rule)
436        {
437
438                var new_rl = "";
439                if (this.rulest.length >= rules_limit)
440                        return false;
441                       
442                if(this.rulest.length == 0){
443                        new_rl = "#rule&&1" + nw_rule;
444                }else{
445                        var aux = this.rulest[this.rulest.length -1 ].split("&&");
446                        new_rl = "#rule&&" + (parseInt(aux[1]) + parseInt(2)) + nw_rule;
447                }
448                this.rulest.push(new_rl);
449                this.saved_all();
450                return true;
451        }
452       
453        cfilter.prototype.delete_r = function(){
454       
455                // rule
456                var _this = this;
457                if(Element("rule_0") != null){
458                        for(var i=0; i < _this.rulest.length; i++){
459                                if(Element("rule_"+i).checked){_this.rulest[i] = "delete";}
460                        }
461                        for(var i=0; i < _this.rulest.length; i++){
462                                if(_this.rulest[i] == "delete"){_this.rulest.splice(i,1);i--;}
463                        }
464                }
465       
466                if(_this.rulest.length > 0){
467                        var cont = parseInt(1);
468                        for(var i=0; i < _this.rulest.length ; i++){
469                                var n_rulest = _this.rulest[i].split("&&");
470                                n_rulest[1] = cont;
471                                cont = cont + parseInt(2);
472                                var aux = "";
473                                for(var j=0; j < n_rulest.length; j++){aux += n_rulest[j] + "&&";}
474                                aux = aux.substr(0,(aux.length - 2));
475                                _this.rulest[i] = aux;
476                        }
477                }
478                // out office
479                if(Element("out_0") != null){
480                        if(Element("out_0").checked){
481                                _this.out_officeR ='';
482                                _this.out_officeF = false;
483                                //Save outoffice in prefs:
484                                expresso.connector.loadScript("jscode/preferences");
485                                prefe.save("outoffice", _this.out_officeF);
486                        }
487                }
488               
489                // Voip
490                if(Element("voip_rule_0") != null){
491                        for(var i=0; i < _this.rulesVoip.length; i++){
492                                if(Element("voip_rule_"+i).checked){_this.rulesVoip[i] = "delete";}
493                        }
494                        for(var i=0; i < _this.rulesVoip.length; i++){
495                                if(_this.rulesVoip[i] == "delete"){_this.rulesVoip.splice(i,1);i--;}
496                        }
497                }
498       
499                if(_this.rulesVoip.length > 0){
500                        var cont = parseInt(1);
501                        for(var i=0; i < _this.rulesVoip.length ; i++){
502                                var n_rulest = _this.rulesVoip[i].split("&&");
503                                n_rulest[1] = cont;
504                                cont = cont + parseInt(2);
505                                var aux = "";
506                                for(var j=0; j < n_rulest.length; j++){aux += n_rulest[j] + "&&";}
507                                aux = aux.substr(0,(aux.length - 2));
508                                _this.rulesVoip[i] = aux;
509                        }
510                }
511
512                _this.reload_rules();
513        }
514       
515        cfilter.prototype.reload_rules = function()
516        {
517                this.saved_all();
518                Element('form_body').innerHTML = "";
519                this.load_rules();
520
521                if(this.out_officeF)
522                {
523                        write_msg(get_lang("Attention, you are in out of office mode."), true);
524                }else{
525                        clean_msg();
526                        this.out_officeF = false;
527                }
528                filters.mount_list();
529        }
530
531        cfilter.prototype.saved_rules = function(){
532
533                var mount_rule = "";
534                var form = this.ac_form.split("_");
535                var n_rule = "";
536
537                if(form[1] == "rule")
538                {
539                        mount_rule = "#rule&&";
540                        if(form[0] == "new")
541                        {
542                                n_rule = "1&&";
543                                if(this.rulest.length > 0)
544                                {
545                                        aux = this.rulest[this.rulest.length - parseInt(1)].split("&&");
546                                        n_rule = (parseInt(aux[1]) + parseInt(2)) + "&&";
547                                }
548                                mount_rule += n_rule + "ENABLED&&";
549                        }
550                        else
551                        {
552                                n_rule = this.rulest[this.ind].split("&&");
553                                mount_rule += n_rule[1] + "&&";
554                                mount_rule += n_rule[2] + "&&";
555                        }
556
557                        if(LTrim(Element("field1").value) == "" && LTrim(Element("field2").value) == "" && LTrim(Element("field3").value) == "" && Element("field4").value == "")
558                        {
559                                alert(get_lang("Define some criterion to the fields Sender, To and Subject with more than 3 characters!"));
560                                return false;
561                        }
562
563                        if((LTrim(Element("field1").value).length <= 3) && (LTrim(Element("field2").value).length <= 3) && (LTrim(Element("field3").value).length <= 3 && Element("field4").value == "")){
564                                alert(get_lang("Define some criterion to the fields Sender, To and Subject with more than 3 characters!"));
565                                return false;
566                        }
567                       
568                        for(var i=1; i < 4; i++){mount_rule += LTrim(Element("field"+i).value) + "&&";}
569                        var v_checked = false;
570                        if(Element("radio1").checked){
571                                mount_rule += "folder&&";
572                                var sel_nameBox = Element("select_mailboxes");
573                                for(var i=0; i < sel_nameBox.options.length; i++){if(sel_nameBox.options[i].selected == true){mount_rule += sel_nameBox.options[i].value + "&&";}}
574                                v_checked = true;
575                        }
576                        if(Element("radio2").checked){
577                                mount_rule += "address&&";
578                                if(Element("field5").value == ""){
579                                        alert(get_lang("Inform a forwarding e-mail!"));
580                                        return false;
581                                }else{
582                                if(validateEmail(Element("field5").value)){
583                                                mount_rule += Element("field5").value + "&&";
584                                        }else{
585                                                alert(get_lang("Inform a valid e-mail!"));
586                                                return false;
587                                        }
588                                }
589                                v_checked = true;
590                        }
591                        if(Element("radio3").checked){
592                                mount_rule += "reject&&";
593                                if(Element("field6").value == ""){
594                                        alert(get_lang("Inform a text for rejection!"));
595                                        return false;
596                                }else{
597                                        mount_rule += Element("field6").value + "&&";
598                                }
599                                v_checked = true;
600                        }                               
601                        if(Element("radio4").checked){
602                                mount_rule += "discard&&&&";
603                                v_checked = true;
604                        }
605                        if(!v_checked){
606                                alert(get_lang("No option marked!"));
607                                return false;
608                        }
609                        var opts = "";
610                        if(Element("checkBox1").checked == true){opts += ",checkBox1";}
611                        if(Element("checkBox2").checked == true){opts += ",checkBox2";}
612                        if(Element("select_size").options[1].selected == true){opts += ",select_size=1";}
613                        if(Element("select_rules").options[1].selected == true){opts += ",select_rules=1";}
614                        for(var i=0; i < this.values.length; i++){if(this.values[i] == opts){mount_rule += i + "&&";}}
615                        mount_rule += "&&&&";
616                        if(LTrim(Element("field4").value) != ""){
617                                mount_rule += LTrim(Element("field4").value);
618                        }else{
619                                mount_rule += 0;
620                        }
621                        if(form[0] == "new")
622                        {
623                                this.rulest[this.rulest.length] = mount_rule;
624                        }
625                        else
626                                this.rulest[this.ind] = mount_rule;
627                }
628                else if(form[1] == "out")
629                {
630                        mount_rule = "";
631                        var fld_emails = this.email_ld; // Get first email of list!
632                        var fld_men        = Element("field8");
633                        mount_rule = "#vacation&&";
634                        mount_rule += "1&&";
635                        mount_rule += "\"" + fld_emails + "\", ";                       
636                        mount_rule = mount_rule.substr(0,(mount_rule.length - 2));
637                        mount_rule += "&&";
638                        mount_rule += fld_men.value + "&&on";
639                        if(LTrim(fld_men.value) == ""){
640                                alert(get_lang("Inform a message!"));
641                                return false;
642                        }
643                        this.out_officeR = mount_rule;
644                }
645                else if(form[1] == "voip")
646                {
647                        if( Element("field9").value != "" && LTrim(Element("field9").value) != "" )
648                        {
649                                mount_rule = "#rule&&";
650                                if(form[0] == "new")
651                                {
652                                        n_rule = "1&&";
653                                        if( this.rulesVoip.length > 0 )
654                                        {
655                                                aux = this.rulesVoip[this.rulesVoip.length - parseInt(1)].split("&&");
656                                                n_rule = (parseInt(aux[1]) + parseInt(2)) + "&&";
657                                        }
658                                        mount_rule += n_rule + "ENABLED&&";
659                                }
660                                else
661                                {
662                                        n_rule = this.rulesVoip[this.ind].split("&&");
663                                        mount_rule += n_rule[1] + "&&";
664                                        mount_rule += n_rule[2] + "&&";
665                                }
666
667                                if ( Element("field9").value.indexOf("#") >= 0 )
668                                {
669                                        alert(get_lang('Caracter "#" is not allowed!'));
670                                        return false;
671                                }
672                               
673                                mount_rule = mount_rule + "&&&&" + Element("field9").value + "&&notify&&" + preferences.voip_email_redirect + "&&8&&&&&&0";
674
675                                if( form[0] == "new" )
676                                {
677                                        this.rulesVoip[this.rulesVoip.length] = mount_rule;
678                                }
679                                else
680                                {
681                                        this.rulesVoip[this.ind] = mount_rule;
682                                }
683                        }
684                        else
685                        {
686                                alert( 'CAMPOS EM BRANCO !!' );
687                                return false;
688                        }
689                }
690               
691                Element('form_buttons').style.display = '';
692                this.reload_rules();
693        }
694
695        cfilter.prototype.close_frm= function()
696        {
697                filters.filter_Sh['window_ffilter_ccform'].close();
698        }
699       
700        cfilter.prototype.saved_all = function()
701        {
702                var aux_rul = "";
703                var _this = this;
704                var cont = 0;
705               
706                // Regras Gerais
707                if(_this.rulest.length > 0)
708                {
709                        for(var i=0; i < _this.rulest.length; i++)
710                        {
711                                var fieldsNormal = _this.rulest[i].split("&&");                         
712                                aux_rul += "_begin_##";
713                                for(var j=0 ; j < fieldsNormal.length; j++)
714                                {
715                                        aux_rul += url_encode(fieldsNormal[j]) + "##";
716                                        cont = parseInt(fieldsNormal[1]);                                       
717                                }       
718                                aux_rul += "_end_\n";
719                        }
720                }
721       
722                // Voip
723                if(_this.rulesVoip.length > 0)
724                {
725                        for(var i=0; i < _this.rulesVoip.length; i++)
726                        {
727                                var fieldsVoip = _this.rulesVoip[i].split("&&");
728                                aux_rul += "_begin_##";
729                                for(var j=0 ; j < fieldsVoip.length; j++)
730                                {
731                                        if(j == 1)
732                                        {
733                                                if( cont == 0 )
734                                                        cont = parseInt(1);
735                                                else
736                                                        cont = parseInt(cont) + parseInt(2);
737                                                aux_rul += cont;
738                                                aux_rul += "##";
739                                        }
740                                        else
741                                                aux_rul += url_encode(fieldsVoip[j]) + "##";
742                                }
743                                aux_rul += "_end_\n";
744                        }
745                }
746               
747                // Fora do Escritório
748                if(_this.out_officeR.length > 0)
749                {
750                                var aux = _this.out_officeR.split("&&");                               
751                                aux_rul += "_begin_##";
752                                for(var j=0 ; j < aux.length; j++)
753                                {
754                                        aux_rul += url_encode(aux[j]) + "##";                                   
755                                }       
756                                aux_rul += "_end_\n";
757                                _this.out_officeF = (aux[4].replace("\n","") === "off") ? false : true;
758                                //Save outoffice in prefs:
759                                expresso.connector.loadScript("jscode/preferences");
760                                prefe.save("outoffice", _this.out_officeF);
761                }
762               
763                var h_filter = function(data)
764                {
765                        if(data != "Ok"){alert("Erro : \n" + data);}
766                }
767                var args   = "expressoMail1_2.ScriptS.rec_rules";
768                var params = "arfilter="+aux_rul;
769                if(!_this.criticalError)
770                        cExecute(args,h_filter,params);
771        }
772
773// build object
774   var filter;
775   filter = new cfilter();
Note: See TracBrowser for help on using the repository browser.