X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FPresenter%2FText.pm;h=7d56d940be03243c36facae0759dee93a1f50401;hb=5474d397bbc42ffaea0b51ebb4bb9a4c7afaa881;hp=bcae2f96f4ceb5fa0f2678f410543f38b39bca90;hpb=4f15b8f0ee316711afb118db91f057eec5924d43;p=kivitendo-erp.git diff --git a/SL/Presenter/Text.pm b/SL/Presenter/Text.pm index bcae2f96f..7d56d940b 100644 --- a/SL/Presenter/Text.pm +++ b/SL/Presenter/Text.pm @@ -2,26 +2,26 @@ package SL::Presenter::Text; use strict; -use parent qw(Exporter); +use SL::Presenter::EscapedText qw(escape); +use SL::HTML::Restrict; +use SL::HTML::Util; use Exporter qw(import); -our @EXPORT = qw(simple_format truncate); +our @EXPORT_OK = qw(format_man_days simple_format truncate restricted_html); +our %EXPORT_TAGS = (ALL => \@EXPORT_OK); use Carp; -sub truncate { - my ($self, $text, %params) = @_; +my $html_cleaner; - $params{at} ||= 50; - $params{at} = 3 if 3 > $params{at}; - $params{at} -= 3; +sub truncate { + my ($text, %params) = @_; - return $text if length($text) < $params{at}; - return substr($text, 0, $params{at}) . '...'; + escape(Common::truncate($text, %params)); } sub simple_format { - my ($self, $text, %params) = @_; + my ($text, %params) = @_; $text = $::locale->quote_special_chars('HTML', $text || ''); @@ -32,6 +32,32 @@ sub simple_format { return '
' . $text;
}
+sub format_man_days {
+ my ($value, %params) = @_;
+
+ return '---' if $params{skip_zero} && !$value;
+
+ return escape($::locale->text('#1 h', $::form->format_amount(\%::myconfig, $value, 2))) if 8.0 > $value;
+
+ $value /= 8.0;
+ my $output = $::locale->text('#1 MD', int($value));
+ my $rest = ($value - int($value)) * 8.0;
+ $output .= ' ' . $::locale->text('#1 h', $::form->format_amount(\%::myconfig, $rest)) if $rest > 0.0;
+
+ escape($output);
+}
+
+sub restricted_html {
+ my ($value) = @_;
+ $html_cleaner //= SL::HTML::Restrict->create;
+ return $html_cleaner->process($value);
+}
+
+sub stripped_html {
+ my ($value) = @_;
+ return SL::HTML::Util::strip($value);
+}
+
1;
__END__
@@ -45,23 +71,30 @@ SL::Presenter::Text - Presenter module for assorted text helpers
=head1 SYNOPSIS
+ use SL::Presenter::Text qw(truncate);
+
my $long_text = "This is very, very long. Need shorter, surely.";
- my $truncated = $::request->presenter->truncate($long_text, at => 10);
+ my $truncated = truncate($long_text, at => 10);
# Result: "This is..."
=head1 FUNCTIONS
=over 4
-=item C