--- trunk/lib/Frey/ObjectBrowser.pm 2008/07/09 13:12:03 68
+++ trunk/lib/Frey/ObjectBrowser.pm 2008/07/11 09:25:02 93
@@ -26,6 +26,7 @@
use Data::Dump qw/dump/;
use Data::Structure::Util qw(unbless);
+
#method 'html' => positional(
# isa => 'Continuity::RequestHolder',
# required => 1,
@@ -33,32 +34,83 @@
sub html {
my ( $self, $req ) = @_;
- my $params = $req->param;
- warn "# params = ",dump( $params );
+ 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 );
+ #warn "# s = ",dump( $s );
- my $f = {};
my @w;
while ( my $u = $s->next ) {
- warn "# u = ",dump( $u );
- my $w = Strix::View::User->new(
- # FIXME this is cludge
- unbless( $u )
- );
- warn "# w = ",dump( $w );
+ my $w = Strix::View::User->new( %{ $u } );
+ $w->_fey( $u );
+ $w->_layout( $layout );
+ warn "# w = ",dump( $w ) if $self->debug;
push @w, $w;
}
while ( 1 ) {
- my $html = join('
', map { $_->process($f) } @w );
- $req->print( $html );
+
+ warn "# got $#w elements: ",dump( map { $_->id } @w );
+ warn "<<< GOT REQUEST ",dump( $f );
+
+ # 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 item widget\n";
+ my $w = Strix::View::User->new( render_as => 'edit' );
+ $w->_layout( $layout );
+ $form .= $rows_delimiter . $w->process;
+ push @w, $w;
+ }
+
+ $form = qq|| if $layout eq 'table';
+
+
+ my $doc = Continuity::Widget::DomNode->create(
+ 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|,
+ form => { method=>'post' } => [
+ $form,
+ ],
+ ],
+ ]
+ )->to_string;
+
+ warn ">>> $layout ",length( $doc ),"\n";
+
+ $req->print( $doc );
$req->next;
+
+ $f = { $req->params };
+
+ process_links( $req );
}
warn "NO WAY OUT!";