--- trunk/lib/Frey/ObjectBrowser.pm 2008/07/10 19:37:19 88 +++ trunk/lib/Frey/ObjectBrowser.pm 2008/07/10 20:00:54 89 @@ -34,6 +34,9 @@ sub html { my ( $self, $req ) = @_; + my $f = { $req->params }; + my $layout = delete( $f->{layout} ) || 'div'; + use Strix::User; use Strix::View::User; @@ -45,25 +48,41 @@ while ( my $u = $s->next ) { my $w = Strix::View::User->new( %{ $u } ); $w->_fey( $u ); + $w->_layout( $layout ); warn "# w = ",dump( $w ) if $self->debug; push @w, $w; } - my $f = { $req->params }; - while ( 1 ) { warn "# got $#w elements: ",dump( map { $_->id } @w ); warn "<<< GOT REQUEST ",dump( $f ); - warn "does last element have id? ",dump( $w[$#w]->id ); + # re-apply (changed?) layout to elements + if ( defined $f->{layout} ) { + $layout = delete( $f->{layout} ); + warn "# new layout = $layout\n"; + } + + my $rows_delimiter = '
'; + $rows_delimiter = '' if $layout eq 'table'; + + my $form = join($rows_delimiter, map { + $_->_layout( $layout ); + $_->process($f) || '' + } @w ); if ( $w[ $#w ]->_fey ) { - warn "+++ added new widget\n"; - push @w, Strix::View::User->new( render_as => 'edit' ); + warn "+++ added new item widget\n"; + my $w = Strix::View::User->new( render_as => 'edit' ); + $w->_layout( $layout ); + $form .= $rows_delimiter . $w->process; + push @w, $w; } - my $form = join('
', map { $_->process($f) || '[deleted]' } @w ); + $form = qq|$form
| if $layout eq 'table'; + + my $doc = Continuity::Widget::DomNode->create( html => [ head => [ @@ -71,6 +90,9 @@ ], body => [ h1 => [ 'Strix::User' ], + $layout eq 'table' ? + qq|div layout| : + qq|table layout|, form => { method=>'post' } => [ $form, ],