X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FTemplate.pm;h=4cbde74e64d74a90a9d21c3be27cdb4673f57580;hb=9c63c1600059dca1ca295e264413e911da3d15bf;hp=d510ce11b366cd02a4f0796b839396725ce53f01;hpb=560d94b29eddbd312fe0eae3726b368959f522eb;p=kivitendo-erp.git diff --git a/SL/Template.pm b/SL/Template.pm index d510ce11b..4cbde74e6 100644 --- a/SL/Template.pm +++ b/SL/Template.pm @@ -79,13 +79,20 @@ sub uses_temp_file { return 0; } -sub _get_loop_variable_value { - my $self = shift; - my $var = shift; - my @indices = @_; +sub _get_loop_variable { + my $self = shift; + my $var = shift; + my $get_array = shift; + my @indices = @_; - my $form = $self->{form}; - my $value = $form->{$var}; + my $form = $self->{form}; + my $value; + + 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}; + } for (my $i = 0; $i < scalar(@indices); $i++) { last unless (ref($value) eq "ARRAY"); @@ -104,7 +111,7 @@ sub substitute_vars { my ($tag_pos, $tag_len) = ($-[0], $+[0] - $-[0]); my ($var, @options) = split(/\s+/, $1); - my $value = $self->_get_loop_variable_value($var, @indices); + my $value = $self->_get_loop_variable($var, 0, @indices); $value = $self->format_string($value) unless (grep(/^NOESCAPE$/, @options)); substr($text, $tag_pos, $tag_len, $value); @@ -160,11 +167,7 @@ sub parse_foreach { my ($form, $new_contents) = ($self->{"form"}, ""); - my $ary = $form->{$var}; - for (my $i = 0; $i < scalar(@indices); $i++) { - last unless (ref($ary) eq "ARRAY"); - $ary = $ary->[$indices[$i]]; - } + my $ary = $self->_get_loop_variable($var, 1, @indices); my $sum = 0; my $current_page = 1; @@ -786,11 +789,7 @@ sub parse_foreach { my ($form, $new_contents) = ($self->{"form"}, ""); - my $ary = $form->{$var}; - for (my $i = 0; $i < scalar(@indices); $i++) { - last unless (ref($ary) eq "ARRAY"); - $ary = $ary->[$indices[$i]]; - } + my $ary = $self->_get_loop_variable($var, 1, @indices); for (my $i = 0; $i < scalar(@{$ary}); $i++) { $form->{"__first__"} = $i == 0;