--- trunk/lib/Frey/ObjectBrowser.pm 2008/07/11 22:54:42 101 +++ trunk/lib/Frey/ObjectBrowser.pm 2008/07/14 21:45:59 123 @@ -1,6 +1,5 @@ package Frey::ObjectBrowser; use Moose; -use MooseX::Method; extends 'Frey'; with 'Frey::Web'; @@ -32,32 +31,20 @@ #$Data::Dumper::Deparse = 1; use Data::Dump qw/dump/; -use Frey::Web::Row; +use Frey::Web::Item; +use Frey::Web::Links; -#method 'html' => positional( -# isa => 'Continuity::RequestHolder', -# required => 1, -#) => sub { sub html { my ( $self, $req ) = @_; my $f = { $req->params }; my $layout = delete( $f->{layout} ) || 'div'; - my $s = $self->fey_class->rows(); - warn "# s ",$self->fey_class," = ",dump( $s ) if $self->debug; - my @w; - - while ( my $u = $s->next ) { - my $w = Frey::Web::Row->new( fey_class => $self->fey_class, fey => $u, layout => $layout ); - warn "# w = ",dump( $w ) if $self->debug; - push @w, $w; - } + my $pager; while ( 1 ) { - warn "# got $#w elements: ",dump( map { $_->id } @w ); warn "<<< GOT REQUEST ",dump( $f ); # re-apply (changed?) layout to elements @@ -66,6 +53,22 @@ warn "# new layout = $layout\n"; } + if ( ! @w || $f->{page} || $f->{per_page} ) { + my $s; + ( $s, $pager ) = $self->fey_class->collection( $f ); + warn "# s ",$self->fey_class," = ",dump( $s ) if $self->debug; + + @w = (); + + while ( my $u = $s->next ) { + my $w = Frey::Web::CRUD->new( fey_class => $self->fey_class, fey => $u, layout => $layout ); + warn "# w = ",dump( $w ) if $self->debug; + push @w, $w; + } + + warn "# got $#w elements: ",dump( map { $_->id } @w ), " from total of ", $s->handle->rows; + } + my $rows_delimiter = ''; $rows_delimiter = '
' if $layout eq 'div'; @@ -76,7 +79,7 @@ if ( $w[ $#w ]->fey ) { warn "+++ added new item widget\n"; - my $w = Frey::Web::Row->new( fey_class => $self->fey_class, render_as => 'edit', layout => $layout ); + my $w = Frey::Web::CRUD->new( fey_class => $self->fey_class, render_as => 'edit', layout => $layout ); $form .= $rows_delimiter . $w->process; push @w, $w; } @@ -93,31 +96,39 @@ $form = qq|$header$form
|; } - my $layout_picker = join(' ', - qq|
layout:|, - map { - if ( $layout eq $_ ) { - qq|$_|; - } else { - qq|$_|; - } - } ( 'div', 'table', 'columns' ), - qq|
|, + my $layout_picker = + qq|
layout: | . + Frey::Web::Links->new( + name => 'layout', + current => $layout, + values => [ 'div', 'table', 'columns' ], + )->links . + qq|
| + ; + + my $pager = join( ' ', + qq|
|, + 'Showing', + $pager->first, '-', $pager->last, + 'of', + $pager->total_entries, + 'results
', +# 'page', $pager->current_page, '/', $pager->last_page, + Frey::Web::Links->new( + name => 'page', + current => $pager->current_page, + values => [ $pager->first_page .. $pager->last_page ], + )->links, + qq|
| ); - my $html = dom2html( - html => [ - head => [ - link => { rel=>"stylesheet", href=>"/static/form.css", type=>"text/css" } - ], - body => [ - h1 => [ $self->fey_class ], - $layout_picker, - form => { method=>'post' } => [ - $form, - ], - ], - ] + $self->add_css( 'static/form.css' ); + + my $html = $self->page( + body => '

' . $self->fey_class . '

' + . $layout_picker + . $pager + . qq|
$form
| ); warn ">>> $layout ",length( $html ),"\n";