1 package PciIds::Html::Forms;
8 our @EXPORT = qw(&genForm &getForm &genFormEx &getFormValue &genRadios);
11 my( $inputs, $values ) = @_;
12 print "<col class='label'><col class='edit'>\n";
13 foreach( @{$inputs} ) {
14 my( $kind, $label, $type, $name, $other ) = @{$_};
15 $other = '' unless( defined $other );
16 print '<tr><td>'.$label.'<td><'.$kind.( ( defined $type ) ? " type='$type' class='$type'" : '' ).' name="'.$name.'" '.$other.( defined( $values->{$name} && ( $label ne 'textarea' ) ) ? 'value="'.encode_entities( $values->{$name} ).'" ' : '' ).">\n";
17 if( $kind eq 'textarea' ) {
18 print encode_entities( $values->{$name} ) if( defined( $values->{$name} ) );
25 my( $inputs, $values ) = @_;
27 foreach( @{$inputs} ) {
30 push @transformed, \@ln;
32 genFormEx( \@transformed, $values );
35 sub getFormValue( $$ ) {
36 my( $name, $default ) = @_;
37 my $result = CGI::param( $name );
38 $result = $default unless( defined( $result ) );
43 my( $data, $checks ) = @_;
46 foreach( keys %{$data} ) {
47 my $d = CGI::param( $_ );
48 my $sub = $data->{$_};
49 my ( $err, $newval ) = &{$sub}( $d ) if( defined $sub );
50 $d = $newval if( defined $newval );
51 push @errors, $err if( defined $err );
54 foreach( @{$checks} ) {
55 my $err = &{$_}( \%result );
56 push @errors, $err if( defined $err );
58 return ( \%result, ( @errors ) ? ( join '<p>', ( '', @errors ) ) : undef );
61 sub genRadios( $$$ ) {
62 my( $list, $name, $default ) = @_;
64 my( $label, $value ) = @{$_};
65 print "<input type='radio' name='$name' value='$value'".( $value eq $default ? " checked='checked' " : "" )."> $label<br>\n";