--- trunk/lib/Frey/Action.pm 2009/07/05 21:25:25 1171 +++ trunk/lib/Frey/Action.pm 2009/07/06 20:27:57 1175 @@ -117,6 +117,7 @@ my $form_id = $self->form_id; my $max_value_len = 0; + my $form_value_len = $self->class->form_value_len if $self->class->can('form_value_len'); my @values; my $display; my $html = ''; @@ -131,6 +132,10 @@ $max_value_len = length($v) if length($v) > $max_value_len; } + if ( my $l = $form_value_len->{$name} ) { + $max_value_len = $l if $l > $max_value_len; + } + warn "# max_value_len: $max_value_len"; #my $render = eval $class . '->render_' . $name; my $call = 'render_' . $name; @@ -254,7 +259,7 @@ $attr->has_default ? $attr->default( $name ) : undef; - if ( ref($params_config) eq 'HASH' && defined $params_config->{$name} ) { + if ( defined $params_config && ref($params_config) eq 'HASH' && defined $params_config->{$name} ) { $value = $params_config->{$name}; } elsif ( ref($params_config) eq 'ARRAY' ) { $value_html = $self->select_values( $name, $attr_type, $params_config ); @@ -281,10 +286,21 @@ $label_title = qq| title="| . $attr->documentation . qq|"| if $attr->has_documentation; + my $value_size = ''; + $default->{$name} = $value unless defined $default->{$name}; - my $size = ( int( length($value) / $self->input_step_size ) + 1 ) * $self->input_step_size; - $value_html = qq|| unless $value_html; + if ( ! $value_html ) { # fallback to default input type=text + + my $form_value_len = $self->class->form_value_len->{$name} if $self->class->can('form_value_len'); + $form_value_len = length($value) if length($value) > $form_value_len; + + my $size = ( int( $form_value_len / ( $self->input_step_size * 1.5 ) ) + 1 ) * $self->input_step_size if $form_value_len; + $value = qq|value="$value"| if defined $value; + $size = qq|size="$size"| if $size; + $value_html = qq|| unless $value_html; + + } # warn "# required $name ", $class->meta->get_attribute( $name )->dump( 2 ); @@ -347,6 +363,11 @@ label.required { font-weight: bold; } + + input, + select { + margin-right: -${label_width}ex; + } input.required, select.required { border-color: #c00;