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