Handle hostnames with upper-case letters
[webmin.git] / procmail / edit_recipe.cgi
1 #!/usr/local/bin/perl
2 # edit_receipe.cgi
3 # Display a form for editing or creating a procmail receipe
4
5 require './procmail-lib.pl';
6 &ReadParse();
7 if ($in{'new'}) {
8         &ui_print_header(undef, $text{'edit_title1'}, "");
9         $block++ if ($in{'block'});
10         }
11 else {
12         &ui_print_header(undef, $text{'edit_title2'}, "");
13         @conf = &get_procmailrc();
14         $rec = $conf[$in{'idx'}];
15         $block++ if (defined($rec->{'block'}));
16         }
17
18 print &ui_form_start("save_recipe.cgi");
19 print &ui_hidden("new", $in{'new'});
20 print &ui_hidden("idx", $in{'idx'});
21 print &ui_hidden("before", $in{'before'});
22 print &ui_hidden("after", $in{'after'});
23 print &ui_hidden("block", $block);
24 print &ui_table_start($text{'edit_header1'}, "width=100%", 2);
25
26 if ($block) {
27         # Start of a conditional block
28         local @lines = split(/\n/, $rec->{'block'});
29         local $r = @lines > 5 ? 10 : 5;
30         print &ui_table_row($text{'edit_block'},
31                 &ui_textarea("bdata", $rec->{'block'}, $r, 80));
32         }
33 else {
34         # Simple action
35         ($t, $a) = &parse_action($rec);
36         print &ui_table_row($text{'edit_action'},
37                 &ui_select("amode", $t,
38                    [ map { [ $_, $text{"edit_amode_".$_} ] }
39                          (0, 2, 1, 3, 4, 6) ])." ".
40                 &ui_textbox("action", $t == 6 ? $rec->{'action'} : $a, 40));
41         }
42
43 # Action options
44 @grid = ( );
45 foreach $f (@known_flags) {
46         push(@grid, &ui_checkbox("flag", $f, $text{"edit_flag_$f"},
47                                  &indexof($f, @{$rec->{'flags'}}) >= 0));
48         }
49 print &ui_table_row(undef, &ui_grid_table(\@grid, 2, 100), 2);
50
51 # Lock file
52 $ldef = $rec->{'lockfile'} ? 0 :
53         defined($rec->{'lockfile'}) ? 2 : 1;
54 print &ui_table_row($text{'edit_lockfile'},
55         &ui_radio("lockfile_def", $ldef,
56                   [ [ 1, $text{'edit_none'} ],
57                     [ 2, $text{'default'} ],
58                     [ 0, $text{'edit_lock'}." ".
59                          &ui_textbox("lockfile", $rec->{'lockfile'}, 40) ] ]));
60
61 print &ui_table_end();
62
63 # Show conditions section
64 print &ui_table_start($text{'edit_header2'}, "width=100%", 2);
65 print &ui_table_row(undef, $text{'edit_conddesc'}, 2);
66
67 $ctable = &ui_columns_start([ $text{'edit_ctype'}, $text{'edit_cvalue'} ], 100);
68 $i = 0;
69 foreach $c (@{$rec->{'conds'}}, [ '-' ], [ '-' ] ) {
70         $ctable .= &ui_columns_row([
71                 &ui_select("cmode_$i", $c->[0],
72                    [ [ '-', ' ' ],
73                      [ '', $text{'edit_cmode_re'} ],
74                      [ '!', $text{'edit_cmode_nre'} ],
75                      [ '$', $text{'edit_cmode_shell'} ],
76                      [ '?', $text{'edit_cmode_exit'} ],
77                      [ '<', $text{'edit_cmode_lt'} ],
78                      [ '>', $text{'edit_cmode_gt'} ] ]),
79                 &ui_textbox("cond_$i", $c->[1], 60, 0, undef,
80                             "style='width:100%'"),
81                 ]);
82         $i++;
83         }
84 $ctable .= &ui_columns_end();
85 print &ui_table_row(undef, $ctable, 2);
86 print &ui_table_end();
87
88 # Show save buttons
89 if ($in{'new'}) {
90         print &ui_form_end([ [ undef, $text{'create'} ] ]);
91         }
92 else {
93         print &ui_form_end([ [ undef, $text{'save'} ],
94                              [ 'delete', $text{'delete'} ] ]);
95         }
96
97 &ui_print_footer("", $text{'index_return'});
98