--- trunk/lib/Frey/Action.pm 2009/01/06 23:42:59 950
+++ trunk/lib/Frey/Action.pm 2009/01/09 21:30:06 975
@@ -43,11 +43,12 @@
my @required_attributes = $self->required;
my $required_attributes = $self->required;
+ my $required_hash = $self->required('as_hash');
=cut
sub required {
- my ( $self ) = @_;
+ my ($self,$param) = @_;
$self->load_class( $self->class );
my @required =
@@ -61,7 +62,14 @@
blessed $attr && $attr->is_required && $attr;
} $self->class->meta->get_attribute_list;
- warn "## required = ",dump( map { $_->name } @required ), " for ", $self->class if @required && $self->debug;
+ @required = map { $_->name } @required;
+ warn "## required = ",dump( @required ), " for ", $self->class if @required && $self->debug;
+
+ if ( $param eq 'as_hash' ) {
+ my $hash;
+ map { $hash->{$_}++ } @required;
+ return $hash;
+ }
return @required if wantarray;
return \@required;
}
@@ -81,7 +89,7 @@
my $a;
my @attrs = @{ $self->attribute_order };
@attrs = map { $a->{$_}++; $_ } @attrs;
- push @attrs, $_ foreach grep { ! $a->{$_} } map { $_->name } @{ $self->required };
+ push @attrs, $_ foreach grep { ! $a->{$_} } @{ $self->required };
warn "# attributes = ",dump( @attrs ) if $self->debug;
return @attrs if wantarray;
return \@attrs;
@@ -96,13 +104,13 @@
sub params_form {
my ( $self ) = @_;
- my @required = $self->required;
- if ( ! @required ) {
+ my $required = $self->required('as_hash');
+ if ( $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;
return (undef,$self->params) if wantarray;
return;
- } else {
- warn $self->class, " required params ", map { $_->dump(2) } @required if $self->debug;
}
my $class = $self->class;
@@ -245,12 +253,18 @@
$value_html = qq|| unless $value_html;
# warn "# required $name ", $class->meta->get_attribute( $name )->dump( 2 );
+
+ $label_title .= qq| class="required"| if $required->{$name};
+ $label =~ s/_/ /g;
+
$form .= qq|$value_html
|;
my $ll = length($label);
$label_width = $ll if $ll > $label_width;
}
$form .= qq|| if @checkboxes;
+ $label_width += 2; # XXX padding left+right em
+
$self->add_js('static/Frey/Action.js');
$self->add_css(qq|
@@ -262,12 +276,18 @@
input:focus {
border-color: #cc0;
+ background: #ffc;
}
label {
text-align: right;
width: ${label_width}ex;
- padding-right: 20px;
+ padding-right: 1ex;
+ white-space: nowrap;
+ }
+
+ label.required {
+ font-weight: bold;
}
br {