Apache-PSP
view release on metacpan or search on metacpan
lib/Template/PSP/autoform.psp view on Meta::CPAN
# get keys and values as given
@lookup_keys = keys %$lookup_ref;
foreach my $k (@lookup_keys)
{
push (@lookup_values, $lookup_ref->{$k});
}
}
}
else
{
@lookup_keys = ($lookup_ref);
@lookup_values = ($lookup_ref);
}
# differentiate the field name
$diff = '_' . $af->{'field'}{$diff} if $diff;
# display the form field
if ($multiple)
{
print qq{<select name="$name$diff" multiple="$multiple" size="$size">\n};
}
else
{
print qq{<select name="$name$diff">\n};
}
my $k = scalar(@lookup_keys) - 1;
for my $i (0..$k)
{
my $key = $lookup_keys[$i];
my $value = $lookup_values[$i];
print qq{<option value="$key" $selected{$key}>$value</option>\n};
}
print qq{</select>\n};
</perl>
</tag>
<tag name="autotextarea" body="1" global="1"
accepts="name, rows, cols, wrap">
<perl>
=head2 AutoFill textarea tag
The C<autotextarea> tag fills in a form field.
Usage:
<autotextarea name="explain" rows="5" cols="30" wrap="virtual" />
=cut
print "\n";
my $af = getpvar('autofill_data');
# set the value
my $value = $af->{'field'}{$name};
# escape any HTML-like characters
$value =~ s/&/&/g;
$value =~ s/</</g;
print qq{<textarea name="$name" rows="$rows" cols="$cols">$value</textarea>\n};
</perl>
</tag>
<tag name="autoradio" body="1" global="1"
accepts="name, lookup, sortby">
<perl>
=head2 AutoFill radio button tag
The C<autoradio> tag fills in a form field.
Usage:
<autoradio name="kidding"
lookup="yesno"
sortby="value" />
=cut
print "\n";
my $af = getpvar('autofill_data');
# set the array of values
my $value = $af->{'field'}{$name};
my @values;
if (ref($value) eq 'ARRAY')
{
@values = @$value;
}
else
{
@values = ($value);
}
# record the values in the selected hash
my %selected;
$selected{$values[0]} = 'checked';
# get the lookup values
# and determine the sort order
$lookup ||= $name;
my @lookup_keys;
my @lookup_values;
my $lookup_ref = $af->{'lookup'}{$lookup};
if (ref($lookup_ref) eq 'ARRAY')
{
@lookup_keys = @$lookup_ref;
@lookup_values = @$lookup_ref;
}
elsif (ref($lookup_ref) eq 'HASH')
{
if ($sortby eq 'name')
{
# sort the values by hash key
( run in 0.655 second using v1.01-cache-2.11-cpan-ad19def0cd9 )