X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;ds=sidebyside;f=SL%2FTemplate%2FSimple.pm;h=9960908da51e2eb0f413eec75b44f515e85d3676;hb=7525426386204abfcc6e49b481de7389ade44dc4;hp=8ad622043e92f4f2f8ce4c92f36cd05a2e2e6c68;hpb=0ffb94b48c8c9183805633241f53bd0b0f66d176;p=kivitendo-erp.git diff --git a/SL/Template/Simple.pm b/SL/Template/Simple.pm index 8ad622043..9960908da 100644 --- a/SL/Template/Simple.pm +++ b/SL/Template/Simple.pm @@ -85,27 +85,15 @@ sub uses_temp_file { } sub _get_loop_variable { - my $self = shift; - my $var = shift; - my $get_array = shift; - my @indices = @_; - + my ($self, $var, $get_array, @indices) = @_; my $form = $self->{form}; - my $value; + my ($value, @methods); if ($var =~ m/\./) { - $value = $form; - for my $part (split(m/\./, $var)) { - if (ref($value) =~ m/^(?:Form|HASH)$/) { - $value = $value->{$part}; - } elsif (blessed($value) && $value->can($part)) { - $value = $value->$part; - } else { - $value = ''; - last; - } - } - } elsif (($get_array || @indices) && (ref $form->{TEMPLATE_ARRAYS} eq 'HASH') && (ref $form->{TEMPLATE_ARRAYS}->{$var} eq 'ARRAY')) { + ($var, @methods) = split m/\./, $var; + } + + if (($get_array || @indices) && (ref $form->{TEMPLATE_ARRAYS} eq 'HASH') && (ref $form->{TEMPLATE_ARRAYS}->{$var} eq 'ARRAY')) { $value = $form->{TEMPLATE_ARRAYS}->{$var}; } else { $value = $form->{$var}; @@ -116,6 +104,17 @@ sub _get_loop_variable { $value = $value->[$indices[$i]]; } + for my $part (@methods) { + if (ref($value) =~ m/^(?:Form|HASH)$/) { + $value = $value->{$part}; + } elsif (blessed($value) && $value->can($part)) { + $value = $value->$part; + } else { + $value = ''; + last; + } + } + return $value; }