/[Frey]/trunk/lib/Frey/Mojo/Run.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/Mojo/Run.pm

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

revision 268 by dpavlin, Wed Nov 5 08:20:38 2008 UTC revision 275 by dpavlin, Wed Nov 5 08:20:49 2008 UTC
# Line 8  use base 'Mojolicious::Controller'; Line 8  use base 'Mojolicious::Controller';
8  use Data::Dump qw/dump/;  use Data::Dump qw/dump/;
9  use Carp qw/confess/;  use Carp qw/confess/;
10    
11    use Frey::ClassLoader;
12    
13    warn "# ",dump( Frey::ClassLoader->new->load_all_classes() );
14    
15    
16  sub markup {  sub markup {
17      my ($self, $c) = @_;      my ($self, $c) = @_;
18    
19          warn "# ", dump( $c->match->captures );          warn "# ", dump( $c->match->captures );
20    
     # Response object  
     my $res = $c->res;  
     $res->code(200);  
     $res->headers->content_type('text/html');  
   
21          my $params = $c->request->params->to_hash;          my $params = $c->request->params->to_hash;
22          warn "# params ", dump( $params );          warn "# params ", dump( $c->request->params );
23    
24          my $class = $c->match->captures->{class} || 'Frey::ClassBrowser';          my $class = $c->match->captures->{class} || 'Frey::ClassBrowser';
25          $class =~ s{[/-]}{::}g;          $class =~ s{[/-]}{::}g;
26    
27          my $o = $class->new( %$params );          my @required =
28          $o->depends if $o->can('depends');                  grep {
29                            defined $_ && !defined( $params->{$_} )
30                    }
31                    map {
32                            my $attr = $class->meta->get_attribute($_);
33                            $attr->is_required && $_
34                    } $class->meta->get_attribute_list;
35    
36            warn "## required = ",dump( @required );
37    
38            my $html;
39    
40            my $values = {};
41            $values = $class->config($class) if $class->can('config');
42    
43            if ( @required ) {
44                    $html = qq|<h1>Required params for $class</h1><form method="get">|;
45                    foreach my $name ( @required ) {
46                            my $type = $name =~ m/^pass/ ? 'password' : 'text';
47                            my $value = $values ? $values->{$name} : '';
48                            $html .= qq|<label for="$name">$name</label><input type="$type" name="$name" value="$value">|;
49                    }
50                    $html .= qq|<input type="submit" value="Run $class"></form>|;
51            } else {
52    
53                    my $o = $class->new( %$params );
54                    $o->depends if $o->can('depends');
55    
56                    if ( $o->can('markup') ) {
57                            $html = eval { $o->markup };
58                            if ( $@ ) {
59                                    warn $@;
60                                    $html .= qq{<code>$@</code>};
61                            }
62                    } else {
63                            warn "SKIP: $class can't markup";
64                    }
65    
66                    eval {
67                            # FIXME am I paranoid?
68                            package Mock::Web;
69                            use Moose;
70                            extends 'Frey';
71                            with 'Frey::Web';
72    
73                            $html = Mock::Web->new->page(
74                                    title => $class,
75                                    body => $html,
76                            );
77                    };
78            }
79    
80      $res->body( $o->markup );      # Response objec
81        my $res = $c->res;
82        $res->code(200);
83        $res->headers->content_type('text/html');
84            $res->body( $html );
85  }  }
86    
87  1;  1;

Legend:
Removed from v.268  
changed lines
  Added in v.275

  ViewVC Help
Powered by ViewVC 1.1.26