42 |
} |
} |
43 |
|
|
44 |
sub render_iterator { |
sub render_iterator { |
45 |
my ($self, $before, $iterator, $after) = @_; |
confess "BACKWARD INCOMATIBLE CHANGE: render_iterator works ONLY with 2 params!" unless $#_ == 1; |
46 |
|
my ($self, $iterator) = @_; |
47 |
my %attrmap = %{ $self->meta->get_attribute_map }; |
my %attrmap = %{ $self->meta->get_attribute_map }; |
48 |
my $middle; |
my $out; |
49 |
while( my ($name, $attr) = each %attrmap ) { |
while( my ($name, $attr) = each %attrmap ) { |
50 |
my $reader = $attr->get_read_method; |
my $reader = $attr->get_read_method; |
51 |
my $val = $self->$reader || ''; |
my $val = $self->$reader || ''; |
52 |
my $field_name = $self->field_name($name); |
my $field_name = $self->field_name($name); |
53 |
$middle .= $iterator->( $name, $field_name, $attr->label, $val ) || ''; |
$out .= $iterator->( $name, $field_name, $attr->label, $val ) || ''; # || '' to shut warnings |
|
} |
|
|
if ( $middle ) { |
|
|
return $before . $middle . $self->render_buttons . $after; |
|
|
} else { |
|
|
warn "iterator didn't produce output, skipping"; |
|
|
return "<!-- empty -->"; |
|
54 |
} |
} |
55 |
|
return $out; |
56 |
} |
} |
57 |
|
|
58 |
|
|