--- trunk/lib/Frey/Run.pm 2008/11/16 19:57:00 365 +++ trunk/lib/Frey/Run.pm 2008/11/17 14:37:48 369 @@ -1,9 +1,8 @@ package Frey::Run; use Moose; #extends 'Frey::ClassLoader'; -extends 'Frey::PPI'; +extends 'Frey::Action'; with 'Frey::Web'; -with 'Frey::Config'; with 'Frey::Escape'; use Data::Dump qw/dump/; @@ -18,6 +17,10 @@ This object will try to run other Moose objects from your application. It will try to invoke C, and C method on the. +=head1 SEE ALSO + +L which creates form for params + =cut use Moose::Util::TypeConstraints; @@ -47,66 +50,14 @@ sub html { my ( $self ) = @_; - my $class = $self->class; - - $self->load_class( $class ); - - my @required = - grep { - defined $_ && $_->can('name') && !defined( $self->params->{ $_->name } ) - } - map { - my $attr = $class->meta->get_attribute($_); - $attr->is_required && $attr; - } $class->meta->get_attribute_list; - - warn "## required = ",dump( map { $_->name } @required ), " for $class"; - my $html; - my $values = {}; - $values = $self->config($class); - warn "# $class config = ",dump( $values ); - - if ( @required ) { - $html = qq|

$class params

|; - - my $a; - my @attrs = map { $a->{$_}++; $_ } @{ $self->attribute_order }; - push @attrs, $_ foreach grep { ! $a->{$_} } map { $_->name } @required; - warn "# attrs = ",dump( @attrs ); - - foreach my $name ( grep { ! $class->meta->get_attribute($_)->is_lazy } @attrs ) { - my $type = $name =~ m/^pass/ ? 'password' : 'text'; - my $value = ''; - my $value_html = ''; - if ( ref($values) eq 'HASH' ) { - $value = $values->{$name}; - } elsif ( ref($values) eq 'ARRAY' ) { - $value_html = qq||; - } elsif ( my $attr = $class->meta->get_attribute( $name ) ) { - if ( $attr->has_type_constraint && $attr->type_constraint->can('values') ) { - $value_html = qq||; - } elsif ( $attr->has_default ) { - $value = $attr->default( $name ); - } - } else { - warn "wired attribute $name"; - } - $value_html = qq|| unless $value_html; - -#warn "# required $name ", $class->meta->get_attribute( $name )->dump( 2 ); - $html .= qq|| . $value_html; - } - $html .= qq|
|; - } else { - eval { + eval { + my $class = $self->class; + $self->load_class( $class ); + + if ( $html = $self->params_form ) { + warn "got params form for $class"; + } else { my $o; $o = $class->new( %{ $self->params } ); $o->depends if $o->can('depends'); @@ -134,11 +85,11 @@ } }; - $html .= $self->error( $@ ) if $@; - } + }; + $html .= $self->error( $@ ) if $@; return $self->page( %$html ) if ref($html) eq 'HASH'; - return $self->page( title => $class, body => $html ); + return $self->page( title => $self->class, body => $html ); } 1;