From 4285ee1e9c8a6686d4866a009425ac420e155b5e Mon Sep 17 00:00:00 2001 From: Colin Kuskie Date: Thu, 25 Jan 2007 17:59:24 +0000 Subject: [PATCH] echoing TT fix into H::T::E for variable renaming --- docs/changelog/7.x.x.txt | 1 + lib/WebGUI/Asset/Template/HTMLTemplateExpr.pm | 29 ++++++++++--------- 2 files changed, 16 insertions(+), 14 deletions(-) diff --git a/docs/changelog/7.x.x.txt b/docs/changelog/7.x.x.txt index 5792bc9a9..388a1d462 100644 --- a/docs/changelog/7.x.x.txt +++ b/docs/changelog/7.x.x.txt @@ -1,4 +1,5 @@ 7.3.8 + - Fixed a template variable rewriting problem with HTML::Template::Expr - Added a attachment_thumbnail option to the CS RSS feed. 7.3.7 diff --git a/lib/WebGUI/Asset/Template/HTMLTemplateExpr.pm b/lib/WebGUI/Asset/Template/HTMLTemplateExpr.pm index 0d41bab62..ee820a7ee 100755 --- a/lib/WebGUI/Asset/Template/HTMLTemplateExpr.pm +++ b/lib/WebGUI/Asset/Template/HTMLTemplateExpr.pm @@ -21,21 +21,22 @@ use HTML::Template::Expr; #------------------------------------------------------------------- sub _rewriteVars { # replace dots with underscrores in keys (except in keys that aren't usable as variables (URLs etc.)) - my $vars = shift; - foreach my $key (keys %$vars){ - my $newKey = $key; - $newKey =~ s/\./_/g if $newKey !~ /\//; - if(ref $vars->{$key} eq 'HASH'){ - $vars->{$newKey} = _rewriteVars($vars->{$key}); - delete $vars->{$key} if($key ne $newKey); - }else{ - if($key ne $newKey){ - $vars->{$newKey} = $vars->{$key}; - delete $vars->{$key}; + my $vars = shift; + my $newVars = {}; + foreach my $key (keys %$vars){ + my $newKey = $key; + $newKey =~ s/\./_/g if $newKey !~ /\//; + if ( ref $vars->{$key} eq 'ARRAY') { + foreach my $entry (@{$vars->{$key}}) { + push(@{$newVars->{$newKey}}, _rewriteVars($entry)); } - } - } - return $vars; + } elsif(ref $vars->{$key} eq 'HASH') { + $newVars->{$newKey} = _rewriteVars($vars->{$key}); + } else { + $newVars->{$newKey} = $vars->{$key}; + } + } + return $newVars; } #-------------------------------------------------------------------