--- trunk/lib/Frey/Action.pm 2009/06/28 22:22:20 1100
+++ trunk/lib/Frey/Action.pm 2009/06/28 23:08:02 1101
@@ -210,15 +210,30 @@
my $label_width = 1; # minimum
-
- foreach my $name (
+ my @fields =
grep {
die "$_ doesn't have meta" unless $class->can('meta');
! $class->meta->get_attribute($_)->is_lazy
&& ! defined $default->{$_}
&& ! m{^_} # skip _private
- } $self->attributes
- ) {
+ } $self->attributes;
+
+ my $fieldset;
+
+ my $last;
+ foreach my $name ( @fields ) {
+ my $set = $name;
+ $set =~ s{_[^_]+$}{};
+ push @{ $fieldset->{$set} }, $name;
+ }
+
+ delete( $fieldset->{$_} )
+ foreach ( grep { $#{ $fieldset->{$_} } == 0 } keys %$fieldset );
+
+warn "XXX fields = ",dump( @fields );
+warn "XXX set = ",dump( $fieldset );
+
+ foreach my $name ( @fields ) {
my $attr_type = '';
my $type = $name =~ m/^pass/ ? 'password' : 'text';
my $label = $name;
@@ -269,7 +284,26 @@
$label_title .= qq| class="required"| if $required->{$name};
$label =~ s/_/ /g;
- $form .= qq|$value_html
|;
+ my $set = $name;
+ $set =~ s{_[^_]+$}{};
+
+ my ( $before, $after ) = ( '', '
' );
+
+ if ( my $s = $fieldset->{$set} ) {
+ if ($s->[0] eq $name) {
+ $before = qq|
+