X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FPresenter.pm;h=36acc73ddf816d3387a9abae6ac05ee4fea7b8fb;hb=bb8964ddfc59e40b62f6e65f5dd38cea9b7323d0;hp=6658184c19bc6caf85b27d7f4137f45e64d2b404;hpb=7c9fc25b6893a1ea508185a0f1a197d6b46f187a;p=kivitendo-erp.git diff --git a/SL/Presenter.pm b/SL/Presenter.pm index 6658184c1..36acc73dd 100644 --- a/SL/Presenter.pm +++ b/SL/Presenter.pm @@ -41,6 +41,7 @@ sub render { croak "Unsupported type: " . $options->{type} unless $options->{type} =~ m/^(?:html|js|json)$/; # The "template" argument must be a string or a reference to one. + $template = ${ $template } if ((ref($template) || '') eq 'REF') && (ref(${ $template }) eq 'SL::Presenter::EscapedText'); croak "Unsupported 'template' reference type: " . ref($template) if ref($template) && (ref($template) !~ m/^(?:SCALAR|SL::Presenter::EscapedText)$/); # Look for the file given by $template if $template is not a reference. @@ -61,7 +62,9 @@ sub render { # If no processing is requested then return the content. if (!$options->{process}) { # If $template is a reference then don't try to read a file. - return SL::Presenter::EscapedText->new(text => ${ $template }, is_escaped => 1) if ref $template; + my $ref = ref $template; + return $template if $ref eq 'SL::Presenter::EscapedText'; + return SL::Presenter::EscapedText->new(text => ${ $template }, is_escaped => 1) if $ref eq 'SCALAR'; # Otherwise return the file's content. my $file = IO::File->new($source, "r") || croak("Template file ${source} could not be read"); @@ -121,6 +124,16 @@ sub escaped_text { return SL::Presenter::EscapedText->new(text => $text, is_escaped => 1); } +sub escape_js { + my ($self, $text) = @_; + + $text =~ s|\\|\\\\|g; + $text =~ s|\"|\\\"|g; + $text =~ s|\n|\\n|g; + + return SL::Presenter::EscapedText->new(text => $text, is_escaped => 1); +} + 1; __END__ @@ -194,6 +207,11 @@ If C<$template> is a reference to a scalar then the referenced scalar's content is used as the content to process. The C option is not considered in this case. +C<$template> can also be an instance of L +or a reference to such an instance. Both of these cases are handled +the same way as if C<$template> were a reference to a scalar: its +content is processed, and C is not considered. + Other reference types, unknown options and unknown arguments to the C option cause the function to L. @@ -282,6 +300,16 @@ It is safe to call C on an instance of L. This is a no-op (the same instance will be returned). +=item C + +Returns a JavaScript-escaped version of C<$text>. Instead of a string +an instance of the thin proxy-object L is +returned. + +It is safe to call C on an instance of +L. This is a no-op (the same instance will +be returned). + =item C Returns the global instance of L