<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">package WebminUI::OptTextarea;
use WebminUI::Textarea;
use WebminCore;
@ISA = ( "WebminUI::Textarea" );

=head2 new WebminUI::OptTextarea(name, value, rows, cols, [default-msg], [other-msg])
Create a text area whose value is optional.
=cut
sub new
{
if (defined(&amp;WebminUI::Theme::OptTextarea::new)) {
        return new WebminUI::Theme::OptTextarea(@_[1..$#_]);
        }
my ($self, $name, $value, $rows, $cols, $default, $other) = @_;
$self = new WebminUI::Textarea($name, $value, $rows, $cols);
bless($self);
$self-&gt;set_default($default || $text{'default'});
$self-&gt;set_other($other) if ($other);
return $self;
}

=head2 html()
Returns the HTML for this optional text input
=cut
sub html
{
my ($self) = @_;
my $rv;
my $name = $self-&gt;get_name();
my $value = $self-&gt;get_value();
my $dis = $self-&gt;get_disabled();
my $rows = $self-&gt;get_rows();
my $columns = $self-&gt;get_cols();
my $dis1 = &amp;js_disable_inputs([ $name ], [ ]);
my $dis2 = &amp;js_disable_inputs([ ], [ $name ]);
my $opt1 = $self-&gt;get_default();
my $opt2 = $self-&gt;get_other();
$rv .= "&lt;input type=radio name=\"".&amp;quote_escape($name."_def")."\" ".
       "value=1 ".($value ne '' ? "" : "checked").
       ($dis ? " disabled=true" : "")." onClick='$dis1'&gt; ".$opt1."\n";
$rv .= "&lt;input type=radio name=\"".&amp;quote_escape($name."_def")."\" ".
       "value=0 ".($value ne '' ? "checked" : "").
       ($dis ? " disabled=true" : "")." onClick='$dis2'&gt; ".$opt2."&lt;br&gt;\n";
$rv .= "&lt;textarea name=\"".&amp;quote_escape($name)."\" ".
       ($value eq "" || $dis ? " disabled=true" : "").
       "rows=$rows columns=$columns&gt;".&amp;html_escape($value)."&lt;/textarea&gt;\n";
return $rv;

}

=head2 validate(&amp;inputs)
=cut
sub validate
{
my ($self, $in) = @_;
if (defined($self-&gt;get_value())) {
	if ($self-&gt;get_value() eq "") {
		return ( $text{'ui_nothing'} );
		}
	return WebminUI::Textbox::validate($self);
	}
return ( );
}

sub set_default
{
my ($self, $default) = @_;
$self-&gt;{'default'} = $default;
}

sub get_default
{
my ($self) = @_;
return $self-&gt;{'default'};
}

sub set_other
{
my ($self, $other) = @_;
$self-&gt;{'other'} = $other;
}

sub get_other
{
my ($self) = @_;
return $self-&gt;{'other'};
}

=head2 get_value()
Returns the specified initial value for this field, or the value set when the
form is re-displayed due to an error.
=cut
sub get_value
{
my ($self) = @_;
my $in = $self-&gt;{'form'} ? $self-&gt;{'form'}-&gt;{'in'} : undef;
if ($in &amp;&amp; (defined($in-&gt;{$self-&gt;{'name'}}) ||
	    defined($in-&gt;{$self-&gt;{'name'}.'_def'}))) {
	return $in-&gt;{$self-&gt;{'name'}.'_def'} ? undef : $in-&gt;{$self-&gt;{'name'}};
	}
elsif ($in &amp;&amp; defined($in-&gt;{"ui_value_".$self-&gt;{'name'}})) {
	return $in-&gt;{"ui_value_".$self-&gt;{'name'}};
	}
else {
	return $self-&gt;{'value'};
	}
}

=head2 get_input_names()
Returns the actual names of all HTML elements that make up this input
=cut
sub get_input_names
{
my ($self) = @_;
return ( $self-&gt;{'name'}, $self-&gt;{'name'}."_def[0]",
			  $self-&gt;{'name'}."_def[1]" );
}

1;

</pre></body></html>