L/Presenter: Funktion zum Säubern von HTML von unerwünschten Tags
authorMoritz Bunkus <m.bunkus@linet.de>
Wed, 10 Nov 2021 12:29:09 +0000 (13:29 +0100)
committerMoritz Bunkus <m.bunkus@linet.de>
Wed, 10 Nov 2021 15:07:49 +0000 (16:07 +0100)
SL/Presenter/Text.pm
SL/Template/Plugin/L.pm

index dd855fc..2943a5a 100644 (file)
@@ -3,13 +3,16 @@ package SL::Presenter::Text;
 use strict;
 
 use SL::Presenter::EscapedText qw(escape);
+use SL::HTML::Restrict;
 
 use Exporter qw(import);
-our @EXPORT_OK = qw(format_man_days simple_format truncate);
+our @EXPORT_OK = qw(format_man_days simple_format truncate restricted_html);
 our %EXPORT_TAGS = (ALL => \@EXPORT_OK);
 
 use Carp;
 
+my $html_cleaner;
+
 sub truncate {
   my ($text, %params) = @_;
 
@@ -43,6 +46,12 @@ sub format_man_days {
   escape($output);
 }
 
+sub restricted_html {
+  my ($value) = @_;
+  $html_cleaner //= SL::HTML::Restrict->create;
+  return $html_cleaner->process($value);
+}
+
 1;
 __END__
 
@@ -89,6 +98,11 @@ paragraph change: they close the current paragraph tag and start a new
 one. Single newlines are converted to line breaks. Carriage returns
 are removed.
 
+=item C<restricted_html $unsafe_html>
+
+Returns HTML code stripped from unwanted/unsupported content. This is
+done via the module L<SL::HTML::Restrict>.
+
 =back
 
 =head1 BUGS
index 1beeb04..451fba1 100644 (file)
@@ -85,6 +85,7 @@ sub date_tag                 { return _call_presenter('date_tag',
 sub div_tag                  { return _call_presenter('div_tag',                  @_); }
 sub radio_button_tag         { return _call_presenter('radio_button_tag',         @_); }
 sub img_tag                  { return _call_presenter('img_tag',                  @_); }
+sub restricted_html          { return _call_presenter('restricted_html',          @_); }
 
 sub _set_id_attribute {
   my ($attributes, $name, $unique) = @_;