--- trunk/lib/Frey/ObjectBrowser.pm 2008/07/11 09:25:02 93
+++ trunk/lib/Frey/ObjectBrowser.pm 2008/07/11 19:19:42 100
@@ -3,6 +3,7 @@
use MooseX::Method;
extends 'Frey';
+with 'Frey::Web';
my @callbacks;
@@ -26,6 +27,8 @@
use Data::Dump qw/dump/;
use Data::Structure::Util qw(unbless);
+use Frey::Web::Row;
+use Strix::User;
#method 'html' => positional(
# isa => 'Continuity::RequestHolder',
@@ -37,18 +40,13 @@
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 );
+ my $w = Frey::Web::Row->new( fey => $u, layout => $layout );
warn "# w = ",dump( $w ) if $self->debug;
push @w, $w;
}
@@ -64,48 +62,63 @@
warn "# new layout = $layout\n";
}
- my $rows_delimiter = '
';
- $rows_delimiter = '' if $layout eq 'table';
+ my $rows_delimiter = '';
+ $rows_delimiter = '
' if $layout eq 'div';
my $form = join($rows_delimiter, map {
- $_->_layout( $layout );
+ $_->layout( $layout ); # FIXME do we need this still?
$_->process($f) || ''
} @w );
- if ( $w[ $#w ]->_fey ) {
+ if ( $w[ $#w ]->fey ) {
warn "+++ added new item widget\n";
- my $w = Strix::View::User->new( render_as => 'edit' );
- $w->_layout( $layout );
+ my $w = Frey::Web::Row->new( render_as => 'edit', layout => $layout );
$form .= $rows_delimiter . $w->process;
push @w, $w;
}
$form = qq|| if $layout eq 'table';
+ 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||;
+ }
+
+ my $layout_picker = join(' ',
+ qq|layout:|,
+ map {
+ if ( $layout eq $_ ) {
+ qq|
$_|;
+ } else {
+ qq|
$_|;
+ }
+ } ( 'div', 'table', 'columns' ),
+ qq|
|,
+ );
- my $doc = Continuity::Widget::DomNode->create(
+ my $html = dom2html(
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|,
+ $layout_picker,
form => { method=>'post' } => [
$form,
],
],
]
- )->to_string;
+ );
- warn ">>> $layout ",length( $doc ),"\n";
+ warn ">>> $layout ",length( $html ),"\n";
- $req->print( $doc );
+ $req->print( $html );
$req->next;
$f = { $req->params };