--- trunk/lib/Strix/View/User.pm 2008/07/10 15:29:01 82
+++ trunk/lib/Strix/View/User.pm 2008/07/10 20:00:54 89
@@ -1,6 +1,7 @@
package Strix::View::User;
use Data::Dump qw/dump/;
+use Carp qw/carp/;
use metaclass 'Moose::Meta::Class' => (
attribute_metaclass => 'Continuity::Meta::Attribute::FormField'
@@ -60,40 +61,9 @@
while(1) {
my $out;
if ( $self->render_as eq 'edit' ) {
- $out = $self->render_iterator(
- qq|
|
- );
+ $out .= $self->render_edit;
} elsif ( $self->render_as eq 'view' ) {
- $out = $self->render_iterator(
- qq||,
- sub {
- #warn "# view render_iterator ",dump( @_ );
- my ( $name, $field_name, $label, $val ) = @_;
- return if $name =~ /^_/;
- return qq|
-
-
- |;
- },
- qq||
- );
+ $out .= $self->render_view;
} else {
warn "no renderer ",dump( $self->render_as ), " skipping...";
}
@@ -106,6 +76,62 @@
}
};
+sub render_edit {
+ my $self = shift;
+ warn "# render_edit ",$self->id," ",$self->uuid, " ", $self->_layout, "\n";
+ my $out = $self->render_iterator( sub {
+ #warn "# edit render_iterator ",dump( @_ );
+ my ( $name, $field_name, $label, $val ) = @_;
+ return if $name =~ /^_/;
+ return qq|
+
+ $label |
+
+
+ |
+
+ | if $self->_layout eq 'table';
+ return qq|
+
+ |;
+ });
+ $self->render_wrapper_class( $out, 'editform' );
+}
+
+sub render_view {
+ my $self = shift;
+ warn "# render_view ",$self->id," ",$self->uuid," ", $self->_layout,"\n";
+ my $out = $self->render_iterator( sub {
+ #warn "# view render_iterator ",dump( @_ );
+ my ( $name, $field_name, $label, $val ) = @_;
+ return if $name =~ /^_/;
+ return qq|$label | $val |
| if $self->_layout eq 'table';
+ return qq|
+
+
+ |;
+ });
+ $self->render_wrapper_class( $out, 'view' );
+}
+
+sub render_wrapper_class {
+ my ( $self, $out, $class ) = @_;
+ if ( length($out) == 0 ) {
+ carp "no output, skipping";
+ return '';
+ }
+ return $out . qq|| . $self->render_buttons . qq| |
| if $self->_layout eq 'table';
+ return qq|| . $out . $self->render_buttons . qq|
|;
+}
+
use Data::Dump qw/dump/;
use Strix::User;
@@ -125,15 +151,20 @@
}
-has _foo => (
- is => 'rw',
- label => 'Foo',
-);
-
has _fey => (
is => 'rw',
label => 'Fey object',
isa => 'Strix::User',
);
+use Moose::Util::TypeConstraints;
+
+enum 'Layouts' => qw( div table );
+
+has _layout => (
+ is => 'rw',
+ isa => 'Layouts',
+ default => 'div',
+);
+
1;