/[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 1133 by dpavlin, Tue Jun 30 15:10:55 2009 UTC revision 1171 by dpavlin, Sun Jul 5 21:25:25 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 132  sub select_values { Line 134  sub select_values {
134          warn "# max_value_len: $max_value_len";          warn "# max_value_len: $max_value_len";
135          #my $render = eval $class . '->render_' . $name;          #my $render = eval $class . '->render_' . $name;
136          my $call = 'render_' . $name;          my $call = 'render_' . $name;
137          my $render = $self->class->$call;          my $render = $self->class->$call if $self->class->can($call);
138          warn "## render $@";          warn "## render $@";
139    
140          if ( $#values > 3 && $render !~ m{radio} ) {          if ( $#values > 3 && $render !~ m{radio} ) {
# Line 176  sub select_values { Line 178  sub select_values {
178                  $html = qq|<div style="display: block;">$radio</div>|;                  $html = qq|<div style="display: block;">$radio</div>|;
179          }          }
180    
181          return          return $html;
 #                       qq|<input type="text" name="$name">| .  
                 $html  
182  }  }
183    
184  sub params_form {  sub params_form {
# Line 192  sub params_form { Line 192  sub params_form {
192          }          }
193    
194          my $required = $self->required('as_hash');          my $required = $self->required('as_hash');
195          if ( $required ) {          if ( grep { $required->{$_} } keys %$required ) {
196                  warn $self->class, " required params ", dump( keys %$required ) if $self->debug;                  warn $self->class, " required params ", dump( keys %$required ) if $self->debug;
197          } else {          } else {
198                  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 262  sub params_form { Line 262  sub params_form {
262                  } elsif ( $attr->has_type_constraint && $attr->type_constraint->can('values') ) {                  } elsif ( $attr->has_type_constraint && $attr->type_constraint->can('values') ) {
263                          $value_html = $self->select_values( $name, $attr_type, $attr->type_constraint->values );                          $value_html = $self->select_values( $name, $attr_type, $attr->type_constraint->values );
264                  } elsif ( $class->can( $name . '_available' ) ) {                  } elsif ( $class->can( $name . '_available' ) ) {
265                          my $available = $class->$name . '_available';                          my $available = $name . '_available';
266                            $available = $class->$available;
267                          confess $@ if $@;                          confess $@ if $@;
268                          $available =~ s/^\s+//gs;                          $available =~ s/^\s+//gs;
269                          $available =~ s/\s+$//gs;                          $available =~ s/\s+$//gs;
# Line 287  sub params_form { Line 288  sub params_form {
288    
289  #               warn "# required $name ", $class->meta->get_attribute( $name )->dump( 2 );  #               warn "# required $name ", $class->meta->get_attribute( $name )->dump( 2 );
290    
291                  if ( $required->{$name} ) {                  if ( defined $required->{$name} ) {
292                          $label_title .= qq| class="required"|;                          $label_title .= qq| class="required"|;
293                          $value_html =~ s{(<\S+)\s}{$1 class=required };                          my $class = 'required';
294                               $class = 'required-filled' if ! $required->{$name};
295                            $value_html =~ s{(<\S+)\s}{$1 class=$class };
296                  }                  }
                 $label =~ s/_/ /g;  
297    
298                  my $set = $name;                  my $set = $name;
299                  $set =~ s{_[^_]+$}{};                  $set =~ s{_[^_]+$}{};
# Line 309  sub params_form { Line 311  sub params_form {
311                                          </fieldset>                                          </fieldset>
312                                  |;                                  |;
313                          }                          }
314                          $label =~ s{^\Q$set\E\s+}{};                          $label =~ s{^\Q$set\E_+}{};
315                  }                  }
316    
317                    $label = $self->_label( $label );
318                  $form .= qq|$before<label for="$name"$label_title>$label</label>$value_html $after|;                  $form .= qq|$before<label for="$name"$label_title>$label</label>$value_html $after|;
319                  my $ll = length($label);                  my $ll = length($label);
320                  $label_width = $ll if $ll > $label_width;                  $label_width = $ll if $ll > $label_width;
# Line 348  sub params_form { Line 351  sub params_form {
351                  select.required {                  select.required {
352                          border-color: #c00;                          border-color: #c00;
353                  }                  }
354                    input.required-filled,
355                    select.required-filled {
356                            border-color: #0c0;
357                    }
358    
359                  br {                  br {
360                          clear: left;                          clear: left;
# Line 365  sub params_form { Line 372  sub params_form {
372          # http://www.quirksmode.org/oddsandends/forms.html          # http://www.quirksmode.org/oddsandends/forms.html
373  #       $form =~ s{<([^>]+)(name=")([^"]+)(")([^>]*)>}{<$1$2$3$4 id="$3" $5}gs;  #       $form =~ s{<([^>]+)(name=")([^"]+)(")([^>]*)>}{<$1$2$3$4 id="$3" $5}gs;
374    
375          $html = qq|          if ( $form ) {
376                  <h1>$class params</h1>  
377                  <form name="$form_id" id="$form_id" method="post">                  if ( $self->class->can('form_header') ) {
378                  $form                          $html = $self->class->form_header;
379                  <input type="submit" value="Run $class">                  } else {
380                  </form>                          $html = qq|
381          | if $form;                                  <h1>$class params</h1>
382                            |;
383                    }
384    
385                    my $submit = $self->_label( 'submit' );
386                    $submit =~ s{^submit$}{Run $class};
387    
388                    $html .= qq|
389                            <form name="$form_id" id="$form_id" method="post">
390                            $form
391                            <input type="submit" value="$submit">
392                            </form>
393                    |;
394                    $html .= $self->class->form_footer if $self->class->can('form_footer');
395            }
396    
397          $self->add_status({          $self->add_status({
398                  $self->class => {                  $self->class => {
# Line 381  sub params_form { Line 402  sub params_form {
402                  },                  },
403          });          });
404    
405            $self->title( $self->class->title ) if $self->class->title;
406    
407          return ($html,$default) if wantarray;          return ($html,$default) if wantarray;
408          return $html;          return $html;
409  }  }
410    
411    sub _label {
412            my ($self,$name) = @_;
413            my $labels = $self->class->form_labels if $self->class->can('form_labels');
414            my $label = $labels->{$name};
415            if ( ! defined $label ) {
416                    $label = $name;
417                    $label =~ s{_}{ }g;
418            }
419            return $label;
420    }
421    
422  =head1 SEE ALSO  =head1 SEE ALSO
423    
424  L<http://www.quirksmode.org/css/forms.html> for info on CSS2 forms  L<http://www.quirksmode.org/css/forms.html> for info on CSS2 forms

Legend:
Removed from v.1133  
changed lines
  Added in v.1171

  ViewVC Help
Powered by ViewVC 1.1.26