X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FPresenter%2FText.pm;h=dd855fc096e42200ecdf4ea8a18f389387870ae6;hb=6309c61710215e3755cc8e096ae1f2801e2f6962;hp=bcae2f96f4ceb5fa0f2678f410543f38b39bca90;hpb=4f15b8f0ee316711afb118db91f057eec5924d43;p=kivitendo-erp.git diff --git a/SL/Presenter/Text.pm b/SL/Presenter/Text.pm index bcae2f96f..dd855fc09 100644 --- a/SL/Presenter/Text.pm +++ b/SL/Presenter/Text.pm @@ -2,26 +2,22 @@ package SL::Presenter::Text; use strict; -use parent qw(Exporter); +use SL::Presenter::EscapedText qw(escape); use Exporter qw(import); -our @EXPORT = qw(simple_format truncate); +our @EXPORT_OK = qw(format_man_days simple_format truncate); +our %EXPORT_TAGS = (ALL => \@EXPORT_OK); use Carp; sub truncate { - my ($self, $text, %params) = @_; + my ($text, %params) = @_; - $params{at} ||= 50; - $params{at} = 3 if 3 > $params{at}; - $params{at} -= 3; - - 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 +28,21 @@ 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); +} + 1; __END__ @@ -45,23 +56,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 +=item C -Returns the C<$text> truncated after a certain number of -characters. +C<$value> is interpreted to mean a number of hours (for C<$value> < 8) +/ man days (if >= 8). Returns a translated, human-readable version of +it, e.g. C<2 PT 2 h> for the value C<18> and German. -The number of characters to truncate at is determined by the parameter -C which defaults to 50. If the text is longer than C<$params{at}> -then it will be truncated and postfixed with '...'. Otherwise it will -be returned unmodified. +If the parameter C is trueish then C<---> is returned +instead of the normal formatting if C<$value> equals 0. + +=item C + +Returns the C<$text> truncated after a certain number of +characters. See L for the actual implementation and +supported parameters. =item C