1 package Webmin::OptTextarea;
4 @ISA = ( "Webmin::Textarea" );
6 =head2 new Webmin::OptTextarea(name, value, rows, cols, [default-msg], [other-msg])
7 Create a text area whose value is optional.
11 if (defined(&Webmin::Theme::OptTextarea::new)) {
12 return new Webmin::Theme::OptTextarea(@_[1..$#_]);
14 my ($self, $name, $value, $rows, $cols, $default, $other) = @_;
15 $self = new Webmin::Textarea($name, $value, $rows, $cols);
17 $self->set_default($default || $text{'default'});
18 $self->set_other($other) if ($other);
23 Returns the HTML for this optional text input
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=\""."e_escape($name."_def")."\" ".
39 "value=1 ".($value ne '' ? "" : "checked").
40 ($dis ? " disabled=true" : "")." onClick='$dis1'> ".$opt1."\n";
41 $rv .= "<input type=radio name=\""."e_escape($name."_def")."\" ".
42 "value=0 ".($value ne '' ? "checked" : "").
43 ($dis ? " disabled=true" : "")." onClick='$dis2'> ".$opt2."<br>\n";
44 $rv .= "<textarea name=\""."e_escape($name)."\" ".
45 ($value eq "" || $dis ? " disabled=true" : "").
46 "rows=$rows columns=$columns>".&html_escape($value)."</textarea>\n";
51 =head2 validate(&inputs)
56 if (defined($self->get_value())) {
57 if ($self->get_value() eq "") {
58 return ( $text{'ui_nothing'} );
60 return Webmin::Textbox::validate($self);
67 my ($self, $default) = @_;
68 $self->{'default'} = $default;
74 return $self->{'default'};
79 my ($self, $other) = @_;
80 $self->{'other'} = $other;
86 return $self->{'other'};
90 Returns the specified initial value for this field, or the value set when the
91 form is re-displayed due to an error.
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'}};
101 elsif ($in && defined($in->{"ui_value_".$self->{'name'}})) {
102 return $in->{"ui_value_".$self->{'name'}};
105 return $self->{'value'};
109 =head2 get_input_names()
110 Returns the actual names of all HTML elements that make up this input
115 return ( $self->{'name'}, $self->{'name'}."_def[0]",
116 $self->{'name'}."_def[1]" );