--- trunk/lib/Frey/Action.pm 2009/07/01 12:23:58 1142 +++ trunk/lib/Frey/Action.pm 2009/07/05 21:25:25 1171 @@ -53,7 +53,6 @@ my @required = grep { defined $_ && $_->can('name') && - ! defined( $self->params->{ $_->name } ) && ! $_->is_lazy } map { @@ -66,7 +65,10 @@ if ( $param eq 'as_hash' ) { my $hash; - map { $hash->{$_}++ } @required; + map { + $hash->{$_} = 1; + $hash->{$_} = 0 if defined $self->params->{$_}; + } @required; return $hash; } return @required if wantarray; @@ -176,9 +178,7 @@ $html = qq|
$radio
|; } - return -# qq|| . - $html + return $html; } sub params_form { @@ -192,7 +192,7 @@ } my $required = $self->required('as_hash'); - if ( $required ) { + if ( grep { $required->{$_} } keys %$required ) { warn $self->class, " required params ", dump( keys %$required ) if $self->debug; } else { warn "all params available ", dump( $self->params ), " not creating form" if $self->debug; @@ -288,11 +288,12 @@ # warn "# required $name ", $class->meta->get_attribute( $name )->dump( 2 ); - if ( $required->{$name} ) { + if ( defined $required->{$name} ) { $label_title .= qq| class="required"|; - $value_html =~ s{(<\S+)\s}{$1 class=required }; + my $class = 'required'; + $class = 'required-filled' if ! $required->{$name}; + $value_html =~ s{(<\S+)\s}{$1 class=$class }; } - $label =~ s/_/ /g; my $set = $name; $set =~ s{_[^_]+$}{}; @@ -310,9 +311,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; @@ -349,6 +351,10 @@ select.required { border-color: #c00; } + input.required-filled, + select.required-filled { + border-color: #0c0; + } br { clear: left; @@ -366,13 +372,27 @@ # http://www.quirksmode.org/oddsandends/forms.html # $form =~ s{<([^>]+)(name=")([^"]+)(")([^>]*)>}{<$1$2$3$4 id="$3" $5}gs; - $html = qq| -

$class params

-
- $form - -
- | if $form; + if ( $form ) { + + if ( $self->class->can('form_header') ) { + $html = $self->class->form_header; + } else { + $html = qq| +

$class params

+ |; + } + + my $submit = $self->_label( 'submit' ); + $submit =~ s{^submit$}{Run $class}; + + $html .= qq| +
+ $form + +
+ |; + $html .= $self->class->form_footer if $self->class->can('form_footer'); + } $self->add_status({ $self->class => { @@ -382,10 +402,23 @@ }, }); + $self->title( $self->class->title ) if $self->class->title; + return ($html,$default) if wantarray; 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