--- trunk/lib/Frey/ObjectBrowser.pm 2008/07/11 09:25:02 93 +++ trunk/lib/Frey/ObjectBrowser.pm 2008/07/11 19:19:42 100 @@ -3,6 +3,7 @@ use MooseX::Method; extends 'Frey'; +with 'Frey::Web'; my @callbacks; @@ -26,6 +27,8 @@ use Data::Dump qw/dump/; use Data::Structure::Util qw(unbless); +use Frey::Web::Row; +use Strix::User; #method 'html' => positional( # isa => 'Continuity::RequestHolder', @@ -37,18 +40,13 @@ my $f = { $req->params }; my $layout = delete( $f->{layout} ) || 'div'; - use Strix::User; - use Strix::View::User; - my $s = Strix::User->rows(); #warn "# s = ",dump( $s ); my @w; while ( my $u = $s->next ) { - my $w = Strix::View::User->new( %{ $u } ); - $w->_fey( $u ); - $w->_layout( $layout ); + my $w = Frey::Web::Row->new( fey => $u, layout => $layout ); warn "# w = ",dump( $w ) if $self->debug; push @w, $w; } @@ -64,48 +62,63 @@ warn "# new layout = $layout\n"; } - my $rows_delimiter = '
'; - $rows_delimiter = '' if $layout eq 'table'; + my $rows_delimiter = ''; + $rows_delimiter = '
' if $layout eq 'div'; my $form = join($rows_delimiter, map { - $_->_layout( $layout ); + $_->layout( $layout ); # FIXME do we need this still? $_->process($f) || '' } @w ); - if ( $w[ $#w ]->_fey ) { + if ( $w[ $#w ]->fey ) { warn "+++ added new item widget\n"; - my $w = Strix::View::User->new( render_as => 'edit' ); - $w->_layout( $layout ); + my $w = Frey::Web::Row->new( render_as => 'edit', layout => $layout ); $form .= $rows_delimiter . $w->process; push @w, $w; } $form = qq|$form
| if $layout eq 'table'; + if ( $layout eq 'columns' ) { + # add header to table + my $header = $w[0]->render_iterator( sub { + my ( $name, $field_name, $label, $val ) = @_; + return if $name =~ /^_/; + return qq|$label|; + }); + $form = qq|$header$form
|; + } + + my $layout_picker = join(' ', + qq|
layout:|, + map { + if ( $layout eq $_ ) { + qq|$_|; + } else { + qq|$_|; + } + } ( 'div', 'table', 'columns' ), + qq|
|, + ); - my $doc = Continuity::Widget::DomNode->create( + my $html = dom2html( html => [ head => [ link => { rel=>"stylesheet", href=>"/static/form.css", type=>"text/css" } ], body => [ h1 => [ 'Strix::User' ], - $layout eq 'table' ? - # gen_link doesn't work since Widngets have it's own scope of layout -# gen_link( 'div layout', sub { $layout = 'div' } ) : -# gen_link( 'table layout', sub { $layout = 'table' } ), - qq|div layout| : - qq|table layout|, + $layout_picker, form => { method=>'post' } => [ $form, ], ], ] - )->to_string; + ); - warn ">>> $layout ",length( $doc ),"\n"; + warn ">>> $layout ",length( $html ),"\n"; - $req->print( $doc ); + $req->print( $html ); $req->next; $f = { $req->params };