--- trunk/lib/Frey/ObjectBrowser.pm 2008/07/13 12:40:45 107
+++ trunk/lib/Frey/ObjectBrowser.pm 2008/07/14 21:45:59 123
@@ -31,7 +31,8 @@
#$Data::Dumper::Deparse = 1;
use Data::Dump qw/dump/;
-use Frey::Web::Row;
+use Frey::Web::Item;
+use Frey::Web::Links;
sub html {
my ( $self, $req ) = @_;
@@ -39,20 +40,11 @@
my $f = { $req->params };
my $layout = delete( $f->{layout} ) || 'div';
- my $s = $self->fey_class->collection();
- 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
@@ -61,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';
@@ -71,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;
}
@@ -88,31 +96,39 @@
$form = qq||;
}
- 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||
);
warn ">>> $layout ",length( $html ),"\n";