A previous commit used the TT2 "html" filter to escape strings to which the
accordion macro is applied, but which don't get truncated. But that's
incompatible with display fields, which contain embedded HTML and
therefore shouldn't be escaped in that way. This commit uses
HTML::Defang on untruncated accordion input instead (which is consistent
with how truncated strings are handled by the same macro).
Signed-off-by: Jeff Davis <jdavis@sitka.bclibraries.ca>
Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
return (grep {$_->shortname eq $sn} @$list)[0];
};
+ # Defang an HTML string
+ $locale_subs->{defang_string} = sub {
+ my $html = shift;
+ return $defang->defang($html);
+ };
+
# Turns one string into two for long text strings
$locale_subs->{split_for_accordion} = sub {
my $html = shift;
[% END -%]
[% MACRO accordion(str, trunc_length, element) BLOCK;
IF truncate_contents != 1;
- str | html;
+ ctx.defang_string(str);
ELSE;
UNLESS trunc_length;
trunc_length = contents_truncate_length || 100;
END;
str;
ELSE;
- str | html;
+ ctx.defang_string(str);
END;
END;
END; %]