--- trunk/lib/Frey/Action.pm 2009/06/30 10:09:43 1119 +++ trunk/lib/Frey/Action.pm 2009/07/02 15:56:40 1160 @@ -1,8 +1,7 @@ package Frey::Action; use Moose; extends 'Frey::PPI'; -with 'Frey::Web'; -with 'Frey::Config'; +with 'Frey::Web', 'Frey::Config'; use Clone qw/clone/; use Data::Dump qw/dump/; @@ -133,7 +132,7 @@ warn "# max_value_len: $max_value_len"; #my $render = eval $class . '->render_' . $name; my $call = 'render_' . $name; - my $render = $self->class->$call; + my $render = $self->class->$call if $self->class->can($call); warn "## render $@"; if ( $#values > 3 && $render !~ m{radio} ) { @@ -263,7 +262,8 @@ } elsif ( $attr->has_type_constraint && $attr->type_constraint->can('values') ) { $value_html = $self->select_values( $name, $attr_type, $attr->type_constraint->values ); } elsif ( $class->can( $name . '_available' ) ) { - my $available = $class->$name . '_available'; + my $available = $name . '_available'; + $available = $class->$available; confess $@ if $@; $available =~ s/^\s+//gs; $available =~ s/\s+$//gs; @@ -292,7 +292,6 @@ $label_title .= qq| class="required"|; $value_html =~ s{(<\S+)\s}{$1 class=required }; } - $label =~ s/_/ /g; my $set = $name; $set =~ s{_[^_]+$}{}; @@ -310,9 +309,10 @@ |; } - $label =~ s{^\Q$set\E\s+}{}; + $label =~ s{^\Q$set\E_+}{}; } + $label = $self->_label( $label ); $form .= qq|$before$value_html $after|; my $ll = length($label); $label_width = $ll if $ll > $label_width; @@ -386,10 +386,24 @@ return $html; } +sub _label { + my ($self,$name) = @_; + my $labels = $self->class->form_labels if $self->class->can('form_labels'); + my $label = $labels->{$name}; + if ( ! defined $label ) { + $label = $name; + $label =~ s{_}{ }g; + } + return $label; +} + =head1 SEE ALSO L for info on CSS2 forms =cut +__PACKAGE__->meta->make_immutable; +no Moose; + 1;