1 package PciIds::Html::Forms;
8 our @EXPORT = qw(&genForm &getForm &genFormEx &getFormValue &genRadios);
11 my( $inputs, $values ) = @_;
12 foreach( @{$inputs} ) {
13 my( $kind, $label, $type, $name, $other ) = @{$_};
14 $other = '' unless( defined $other );
15 print '<tr><td>'.$label.'<td><'.$kind.( ( defined $type ) ? ' type="'.$type.'"' : '' ).' name="'.$name.'" '.$other.( defined( $values->{$name} && ( $label ne 'textarea' ) ) ? 'value="'.encode_entities( $values->{$name} ).'" ' : '' ).">\n";
16 if( $kind eq 'textarea' ) {
17 print encode_entities( $values->{$name} ) if( defined( $values->{$name} ) );
24 my( $inputs, $values ) = @_;
26 foreach( @{$inputs} ) {
29 push @transformed, \@ln;
31 genFormEx( \@transformed, $values );
34 sub getFormValue( $$ ) {
35 my( $name, $default ) = @_;
36 my $result = CGI::param( $name );
37 $result = $default unless( defined( $result ) );
42 my( $data, $checks ) = @_;
45 foreach( keys %{$data} ) {
46 my $d = CGI::param( $_ );
47 my $sub = $data->{$_};
48 my ( $err, $newval ) = &{$sub}( $d ) if( defined $sub );
49 $d = $newval if( defined $newval );
50 push @errors, $err if( defined $err );
53 foreach( @{$checks} ) {
54 my $err = &{$_}( \%result );
55 push @errors, $err if( defined $err );
57 return ( \%result, ( @errors ) ? ( join '<p>', ( '', @errors ) ) : undef );
60 sub genRadios( $$$ ) {
61 my( $list, $name, $default ) = @_;
63 my( $label, $value ) = @{$_};
64 print "<input type='radio' name='$name' value='$value'".( $value eq $default ? " checked='checked' " : "" )."> $label<br>\n";