71 |
$html = qq|<h1>$class params</h1><form method="post">|; |
$html = qq|<h1>$class params</h1><form method="post">|; |
72 |
|
|
73 |
my $a; |
my $a; |
74 |
my @attrs = map { $a->{$_}++; $_ } $self->attribute_order; |
my @attrs = map { $a->{$_}++; $_ } @{ $self->attribute_order }; |
75 |
push @attrs, $_ foreach grep { ! $a->{$_} } map { $_->name } @required; |
push @attrs, $_ foreach grep { ! $a->{$_} } map { $_->name } @required; |
76 |
warn "# attrs = ",dump( @attrs ); |
warn "# attrs = ",dump( @attrs ); |
77 |
|
|
78 |
foreach my $name ( @attrs ) { |
foreach my $name ( @attrs ) { |
|
my $attr = $class->meta->get_attribute( $name ); |
|
79 |
my $type = $name =~ m/^pass/ ? 'password' : 'text'; |
my $type = $name =~ m/^pass/ ? 'password' : 'text'; |
80 |
my $value = ''; |
my $value = ''; |
81 |
my $value_html = ''; |
my $value_html = ''; |
88 |
qq|<option value="$v">$v</option>| |
qq|<option value="$v">$v</option>| |
89 |
} @$values |
} @$values |
90 |
) . qq|</select>|; |
) . qq|</select>|; |
91 |
} elsif ( $attr->has_type_constraint && $attr->type_constraint->can('values') ) { |
} elsif ( my $attr = $class->meta->get_attribute( $name ) ) { |
92 |
$value_html = qq|<select name="$name">| . join("\n", |
if ( $attr->has_type_constraint && $attr->type_constraint->can('values') ) { |
93 |
map { qq|<option value="$_">$_</option>| } @{ $attr->type_constraint->values } |
$value_html = qq|<select name="$name">| . join("\n", |
94 |
) . qq|</select>|; |
map { qq|<option value="$_">$_</option>| } @{ $attr->type_constraint->values } |
95 |
} elsif ( $attr->has_default ) { |
) . qq|</select>|; |
96 |
$value = $attr->default( $name ); |
} elsif ( $attr->has_default ) { |
97 |
|
$value = $attr->default( $name ); |
98 |
|
} |
99 |
|
} else { |
100 |
|
warn "wired attribute $name"; |
101 |
} |
} |
102 |
$value_html = qq|<input type="$type" name="$name" value="$value">| unless $value_html; |
$value_html = qq|<input type="$type" name="$name" value="$value">| unless $value_html; |
103 |
|
|