/[Frey]/trunk/lib/Frey/Action.pm
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Diff of /trunk/lib/Frey/Action.pm

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1161 by dpavlin, Thu Jul 2 16:53:39 2009 UTC revision 1175 by dpavlin, Mon Jul 6 20:27:57 2009 UTC
# Line 53  sub required { Line 53  sub required {
53          my @required =          my @required =
54                  grep {                  grep {
55                          defined $_ && $_->can('name') &&                          defined $_ && $_->can('name') &&
                         ! defined( $self->params->{ $_->name } ) &&  
56                          ! $_->is_lazy                          ! $_->is_lazy
57                  }                  }
58                  map {                  map {
# Line 66  sub required { Line 65  sub required {
65    
66          if ( $param eq 'as_hash' ) {          if ( $param eq 'as_hash' ) {
67                  my $hash;                  my $hash;
68                  map { $hash->{$_}++ } @required;                  map {
69                            $hash->{$_} = 1;
70                            $hash->{$_} = 0 if defined $self->params->{$_};
71                    } @required;
72                  return $hash;                  return $hash;
73          }          }
74          return @required if wantarray;          return @required if wantarray;
# Line 115  sub select_values { Line 117  sub select_values {
117    
118          my $form_id = $self->form_id;          my $form_id = $self->form_id;
119          my $max_value_len = 0;          my $max_value_len = 0;
120            my $form_value_len = $self->class->form_value_len if $self->class->can('form_value_len');
121          my @values;          my @values;
122          my $display;          my $display;
123          my $html = '';          my $html = '';
# Line 129  sub select_values { Line 132  sub select_values {
132                  $max_value_len = length($v) if length($v) > $max_value_len;                  $max_value_len = length($v) if length($v) > $max_value_len;
133          }          }
134    
135            if ( my $l = $form_value_len->{$name} ) {
136                    $max_value_len = $l if $l > $max_value_len;
137            }
138    
139          warn "# max_value_len: $max_value_len";          warn "# max_value_len: $max_value_len";
140          #my $render = eval $class . '->render_' . $name;          #my $render = eval $class . '->render_' . $name;
141          my $call = 'render_' . $name;          my $call = 'render_' . $name;
# Line 190  sub params_form { Line 197  sub params_form {
197          }          }
198    
199          my $required = $self->required('as_hash');          my $required = $self->required('as_hash');
200          if ( $required ) {          if ( grep { $required->{$_} } keys %$required ) {
201                  warn $self->class, " required params ", dump( keys %$required ) if $self->debug;                  warn $self->class, " required params ", dump( keys %$required ) if $self->debug;
202          } else {          } else {
203                  warn "all params available ", dump( $self->params ), " not creating form" if $self->debug;                  warn "all params available ", dump( $self->params ), " not creating form" if $self->debug;
# Line 252  sub params_form { Line 259  sub params_form {
259                          $attr->has_default        ? $attr->default( $name ) :                          $attr->has_default        ? $attr->default( $name ) :
260                          undef;                          undef;
261    
262                  if ( ref($params_config) eq 'HASH' && defined $params_config->{$name} ) {                  if ( defined $params_config && ref($params_config) eq 'HASH' && defined $params_config->{$name} ) {
263                          $value = $params_config->{$name};                          $value = $params_config->{$name};
264                  } elsif ( ref($params_config) eq 'ARRAY' ) {                  } elsif ( ref($params_config) eq 'ARRAY' ) {
265                          $value_html = $self->select_values( $name, $attr_type, $params_config );                          $value_html = $self->select_values( $name, $attr_type, $params_config );
# Line 279  sub params_form { Line 286  sub params_form {
286    
287                  $label_title = qq| title="| . $attr->documentation . qq|"| if $attr->has_documentation;                  $label_title = qq| title="| . $attr->documentation . qq|"| if $attr->has_documentation;
288    
289                    my $value_size = '';
290    
291                  $default->{$name} = $value unless defined $default->{$name};                  $default->{$name} = $value unless defined $default->{$name};
292    
293                  my $size = ( int( length($value) / $self->input_step_size ) + 1 ) * $self->input_step_size;                  if ( ! $value_html ) { # fallback to default input type=text
294                  $value_html = qq|<input type="$type" name="$name" title="$attr_type" value="$value" size="$size">| unless $value_html;  
295                            my $form_value_len = $self->class->form_value_len->{$name} if $self->class->can('form_value_len');
296                            $form_value_len = length($value) if length($value) > $form_value_len;
297            
298                            my $size = ( int( $form_value_len / ( $self->input_step_size * 1.5 ) ) + 1 ) * $self->input_step_size if $form_value_len;
299                            $value = qq|value="$value"| if defined $value;
300                            $size = qq|size="$size"| if $size;
301                            $value_html = qq|<input type="$type" name="$name" title="$attr_type" $value $size>| unless $value_html;
302    
303                    }
304    
305  #               warn "# required $name ", $class->meta->get_attribute( $name )->dump( 2 );  #               warn "# required $name ", $class->meta->get_attribute( $name )->dump( 2 );
306    
307                  if ( $required->{$name} ) {                  if ( defined $required->{$name} ) {
308                          $label_title .= qq| class="required"|;                          $label_title .= qq| class="required"|;
309                          $value_html =~ s{(<\S+)\s}{$1 class=required };                          my $class = 'required';
310                               $class = 'required-filled' if ! $required->{$name};
311                            $value_html =~ s{(<\S+)\s}{$1 class=$class };
312                  }                  }
313    
314                  my $set = $name;                  my $set = $name;
# Line 343  sub params_form { Line 363  sub params_form {
363                  label.required {                  label.required {
364                          font-weight: bold;                          font-weight: bold;
365                  }                  }
366    
367                    input,
368                    select {
369                            margin-right: -${label_width}ex;
370                    }
371                  input.required,                  input.required,
372                  select.required {                  select.required {
373                          border-color: #c00;                          border-color: #c00;
374                  }                  }
375                    input.required-filled,
376                    select.required-filled {
377                            border-color: #0c0;
378                    }
379    
380                  br {                  br {
381                          clear: left;                          clear: left;
# Line 374  sub params_form { Line 403  sub params_form {
403                          |;                          |;
404                  }                  }
405    
406                    my $submit = $self->_label( 'submit' );
407                    $submit =~ s{^submit$}{Run $class};
408    
409                  $html .= qq|                  $html .= qq|
410                          <form name="$form_id" id="$form_id" method="post">                          <form name="$form_id" id="$form_id" method="post">
411                          $form                          $form
412                          <input type="submit" value="Run $class">                          <input type="submit" value="$submit">
413                          </form>                          </form>
414                  |;                  |;
415                  $html .= $self->class->form_footer if $self->class->can('form_footer');                  $html .= $self->class->form_footer if $self->class->can('form_footer');
# Line 391  sub params_form { Line 423  sub params_form {
423                  },                  },
424          });          });
425    
426            $self->title( $self->class->title ) if $self->class->title;
427    
428          return ($html,$default) if wantarray;          return ($html,$default) if wantarray;
429          return $html;          return $html;
430  }  }

Legend:
Removed from v.1161  
changed lines
  Added in v.1175

  ViewVC Help
Powered by ViewVC 1.1.26