--- trunk/lib/Frey/ObjectBrowser.pm 2008/07/14 21:45:59 123
+++ trunk/lib/Frey/ObjectBrowser.pm 2008/07/16 14:17:46 143
@@ -33,112 +33,58 @@
use Frey::Web::Item;
use Frey::Web::Links;
+use Frey::Pager;
sub html {
my ( $self, $req ) = @_;
+ $self->add_css( 'static/form.css' );
+ my @w;
+
my $f = { $req->params };
- my $layout = delete( $f->{layout} ) || 'div';
- my @w;
my $pager;
while ( 1 ) {
-
- warn "<<< GOT REQUEST ",dump( $f );
-
- # re-apply (changed?) layout to elements
- if ( defined $f->{layout} ) {
- $layout = delete( $f->{layout} );
- 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';
-
- my $form = join($rows_delimiter, map {
- $_->layout( $layout ); # FIXME do we need this still?
- $_->process($f) || ''
- } @w );
-
- if ( $w[ $#w ]->fey ) {
- warn "+++ added new item widget\n";
- my $w = Frey::Web::CRUD->new( fey_class => $self->fey_class, render_as => 'edit', layout => $layout );
- $form .= $rows_delimiter . $w->process;
- push @w, $w;
- }
- $form = qq|| if $layout eq 'table';
+ warn "<<< GOT REQUEST ",dump( $f );
- 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||;
+ $pager = Frey::Pager->new(
+ fey_class => $self->fey_class,
+ item_constructor => sub {
+ Frey::Web::CRUD->new( fey_class => $self->fey_class, @_ );
+ },
+ ) if ! $pager;
+
+ $pager->pager->current_page( $f->{page} ) if $f->{page};
+ $pager->pager->entries_per_page( $f->{pre_page} ) if $f->{per_page};
+
+ $pager->update_collection;
+
+ my $last = $pager->last_item;
+
+ if ( $last->fey ) {
+ warn "+++ add item widget\n";
+ $pager->add_item( $pager->item_constructor->( render_as => 'edit' ));
}
- 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|
|
- );
-
- $self->add_css( 'static/form.css' );
+ my $form = $pager->items_in_layout( $f );
+ $form = $last->render_table_wrapper( $form );
- my $html = $self->page(
+ my $html = $self->page(
body => '' . $self->fey_class . '
'
- . $layout_picker
- . $pager
+ . $last->layout_picker # FIXME ugly
+ . $pager->render_pager
. qq||
);
- warn ">>> $layout ",length( $html ),"\n";
+ warn ">>> ",length( $html ),"\n";
$req->print( $html );
$req->next;
+# process_links( $req );
$f = { $req->params };
-
- process_links( $req );
}
warn "NO WAY OUT!";