--- trunk/lib/Frey/Web/Item.pm 2008/07/14 23:44:18 129 +++ trunk/lib/Frey/Web/Item.pm 2008/07/15 17:14:10 135 @@ -38,12 +38,6 @@ lazy_build => 1, ); -sub id { - my $self = shift; - carp "LEGACY: called ->id"; - $self->fey->id if $self->fey; -} - sub set_from_hash { my ($self, $f) = @_; my $attrmap = $self->fey->meta->get_attribute_map if $self->fey; @@ -65,32 +59,10 @@ return $hash; } -sub render_iterator { - confess "BACKWARD INCOMATIBLE CHANGE: render_iterator works ONLY with 2 params!" unless $#_ == 1; - my ($self, $iterator) = @_; - my $out; -# my %attrmap = %{ $self->meta->get_attribute_map }; -# while( my ($name, $attr) = each %attrmap ) { -# my $reader = $attr->get_read_method; -# my $val = $self->$reader || ''; - foreach my $name ( @{ $self->display_columns } ) { - $out .= $self->render_field( $name, $iterator ) - } - return $out; -} - -sub render_field { - my ($self, $name, $iterator) = @_; - my $field_name = $self->field_name($name); - my $val; - $val = $self->fey->$name if $self->fey && $self->fey->can($name); - $iterator->( $name, $field_name, ucfirst($name), $val ) || ''; # || '' to shut warnings -} - sub main { my ( $self ) = @_; - warn "# ",$self->uuid, " [", $self->id ,"] fey = ",dump( $self->fey ); + warn "# ",$self->uuid, " fey = ",dump( $self->fey ); while(1) { my $out; @@ -110,36 +82,56 @@ } }; +sub field_value { + my ( $self, $name ) = @_; + my $val = ''; + $val = $self->fey->$name if $self->fey && $self->fey->can($name); + return $val; +} + +sub field_label { + my ( $self, $name ) = @_; + my $label = ucfirst($name); + return $label; +} + 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 =~ /^_/; - $val ||= ''; - return qq| + warn "# render_edit ",$self->uuid, " ", $self->layout, "\n"; + my $out; + foreach my $name ( @{ $self->display_columns } ) { + next if $name =~ /^_/; + + my $field_name = $self->field_name( $name ); + my $label = $self->field_label( $name ); + my $val = $self->field_value( $name ); + + if ( $self->layout eq 'table' ) { + $out .= qq| $label - | if $self->layout eq 'table'; - return qq| + |; + } elsif ( $self->layout eq 'columns' ) { + $out .= qq| - | if $self->layout eq 'columns'; - return qq| + |; + } else { + $out .= qq|
- |; - }); + |; + } + }; return qq|$out| . $self->render_callbacks . qq|| if $self->layout eq 'columns'; @@ -148,22 +140,29 @@ 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 =~ /^_/; - $val ||= ''; - return qq|$label$val| if $self->layout eq 'table'; - return qq|$val| if $self->layout eq 'columns'; - return qq| + warn "# render_view ",$self->uuid," ", $self->layout,"\n"; + my $out; + foreach my $name ( @{ $self->display_columns } ) { + next if $name =~ /^_/; + + my $field_name = $self->field_name( $name ); + my $label = $self->field_label( $name ); + my $val = $self->field_value( $name ); + + if ( $self->layout eq 'table' ) { + $out .= qq|$label$val|; + } elsif ( $self->layout eq 'columns' ) { + $out .= qq|$val|; + } else { + $out .= qq|
$label
$val
- |; - }); + |; + } + }; return qq|$out| . $self->render_callbacks . qq|| if $self->layout eq 'columns'; $self->render_wrapper_class( $out, 'view' ); }