--- 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
-
- | 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|
+
+ |;
+ $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