--- trunk/lib/Frey/ObjectBrowser.pm 2008/07/11 09:35:32 94 +++ trunk/lib/Frey/ORM/Browser.pm 2009/01/10 23:29:38 991 @@ -1,125 +1,51 @@ -package Frey::ObjectBrowser; +package Frey::ORM::Browser; use Moose; -use MooseX::Method; - -extends 'Frey'; - -my @callbacks; - -sub gen_link { - my ($text, $code) = @_; - push @callbacks, $code; - return qq{$text}; -} - -sub process_links { - my $request = shift; - my $cb = $request->param('cb'); - if (exists $callbacks[$cb]) { - $callbacks[$cb]->($request); - delete $callbacks[$cb]; - } -} #use Data::Dumper; #$Data::Dumper::Deparse = 1; use Data::Dump qw/dump/; -use Data::Structure::Util qw(unbless); +use lib 'lib'; +use Frey::ORM::Item; +use Frey::ORM::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'; - - use Strix::User; - use Strix::View::User; - - my $s = Strix::User->rows(); - #warn "# s = ",dump( $s ); - - my @w; - - 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; - } - - while ( 1 ) { - - 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|$form
| if $layout eq 'table'; - - my $layout_picker = join(' ', - qq|
layout:|, - map { - if ( $layout eq $_ ) { - qq|$_|; - } else { - qq|$_|; - } - } ( 'div', 'table' ), - qq|
|, - ); - - my $doc = Continuity::Widget::DomNode->create( - html => [ - head => [ - link => { rel=>"stylesheet", href=>"/static/form.css", type=>"text/css" } - ], - body => [ - h1 => [ 'Strix::User' ], - $layout_picker, - form => { method=>'post' } => [ - $form, - ], - ], - ] - )->to_string; - - warn ">>> $layout ",length( $doc ),"\n"; - - $req->print( $doc ); - $req->next; +extends 'Frey'; +with 'Frey::ORM::Pager'; +with 'Frey::Web'; - $f = { $req->params }; +has 'fey_class' => ( + is => 'rw', + isa => 'Str', + default => 'Reblog::Feeds', +); + +sub as_markup { + my ( $self ) = @_; + + $self->add_head( 'static/form.css' ); + +=for FIXME + $self->add_item( + Frey::ORM::CRUD->new( + fey_class => $self->fey_class, + render_as => 'edit', + ) + ); +=cut + + my $form = $self->items_in_layout; +# $form = $self->render_table_wrapper( $form ); + + my $html = $self->html_page( + body => '

' . $self->fey_class . '

' +# . $last->layout_picker # FIXME ugly + . $self->render_pager + . qq|
$form
| + ); - process_links( $req ); - } + warn ">>> ",length( $html ),"\n"; - warn "NO WAY OUT!"; + return $html; }; 1;