--- trunk/lib/Frey/Action.pm 2009/06/30 15:10:55 1133
+++ trunk/lib/Frey/Action.pm 2009/07/02 15:56:40 1160
@@ -132,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} ) {
@@ -262,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;
@@ -291,7 +292,6 @@
$label_title .= qq| class="required"|;
$value_html =~ s{(<\S+)\s}{$1 class=required };
}
- $label =~ s/_/ /g;
my $set = $name;
$set =~ s{_[^_]+$}{};
@@ -309,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;
@@ -385,6 +386,17 @@
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