Handle hostnames with upper-case letters
[webmin.git] / Webmin / OptTextarea.pm
1 package Webmin::OptTextarea;
2 use Webmin::Textarea;
3 use WebminCore;
4 @ISA = ( "Webmin::Textarea" );
5
6 =head2 new Webmin::OptTextarea(name, value, rows, cols, [default-msg], [other-msg])
7 Create a text area whose value is optional.
8 =cut
9 sub new
10 {
11 if (defined(&Webmin::Theme::OptTextarea::new)) {
12         return new Webmin::Theme::OptTextarea(@_[1..$#_]);
13         }
14 my ($self, $name, $value, $rows, $cols, $default, $other) = @_;
15 $self = new Webmin::Textarea($name, $value, $rows, $cols);
16 bless($self);
17 $self->set_default($default || $text{'default'});
18 $self->set_other($other) if ($other);
19 return $self;
20 }
21
22 =head2 html()
23 Returns the HTML for this optional text input
24 =cut
25 sub html
26 {
27 my ($self) = @_;
28 my $rv;
29 my $name = $self->get_name();
30 my $value = $self->get_value();
31 my $dis = $self->get_disabled();
32 my $rows = $self->get_rows();
33 my $columns = $self->get_cols();
34 my $dis1 = &js_disable_inputs([ $name ], [ ]);
35 my $dis2 = &js_disable_inputs([ ], [ $name ]);
36 my $opt1 = $self->get_default();
37 my $opt2 = $self->get_other();
38 $rv .= "<input type=radio name=\"".&quote_escape($name."_def")."\" ".
39        "value=1 ".($value ne '' ? "" : "checked").
40        ($dis ? " disabled=true" : "")." onClick='$dis1'> ".$opt1."\n";
41 $rv .= "<input type=radio name=\"".&quote_escape($name."_def")."\" ".
42        "value=0 ".($value ne '' ? "checked" : "").
43        ($dis ? " disabled=true" : "")." onClick='$dis2'> ".$opt2."<br>\n";
44 $rv .= "<textarea name=\"".&quote_escape($name)."\" ".
45        ($value eq "" || $dis ? " disabled=true" : "").
46        "rows=$rows columns=$columns>".&html_escape($value)."</textarea>\n";
47 return $rv;
48
49 }
50
51 =head2 validate(&inputs)
52 =cut
53 sub validate
54 {
55 my ($self, $in) = @_;
56 if (defined($self->get_value())) {
57         if ($self->get_value() eq "") {
58                 return ( $text{'ui_nothing'} );
59                 }
60         return Webmin::Textbox::validate($self);
61         }
62 return ( );
63 }
64
65 sub set_default
66 {
67 my ($self, $default) = @_;
68 $self->{'default'} = $default;
69 }
70
71 sub get_default
72 {
73 my ($self) = @_;
74 return $self->{'default'};
75 }
76
77 sub set_other
78 {
79 my ($self, $other) = @_;
80 $self->{'other'} = $other;
81 }
82
83 sub get_other
84 {
85 my ($self) = @_;
86 return $self->{'other'};
87 }
88
89 =head2 get_value()
90 Returns the specified initial value for this field, or the value set when the
91 form is re-displayed due to an error.
92 =cut
93 sub get_value
94 {
95 my ($self) = @_;
96 my $in = $self->{'form'} ? $self->{'form'}->{'in'} : undef;
97 if ($in && (defined($in->{$self->{'name'}}) ||
98             defined($in->{$self->{'name'}.'_def'}))) {
99         return $in->{$self->{'name'}.'_def'} ? undef : $in->{$self->{'name'}};
100         }
101 elsif ($in && defined($in->{"ui_value_".$self->{'name'}})) {
102         return $in->{"ui_value_".$self->{'name'}};
103         }
104 else {
105         return $self->{'value'};
106         }
107 }
108
109 =head2 get_input_names()
110 Returns the actual names of all HTML elements that make up this input
111 =cut
112 sub get_input_names
113 {
114 my ($self) = @_;
115 return ( $self->{'name'}, $self->{'name'}."_def[0]",
116                           $self->{'name'}."_def[1]" );
117 }
118
119 1;
120