From 287e81e0c99c7e203b9c78bcd6a1cf1a7c28d6f6 Mon Sep 17 00:00:00 2001 From: Moritz Bunkus Date: Tue, 16 Apr 2013 14:15:09 +0200 Subject: [PATCH] =?utf8?q?render()=20in=20Controller+Presenter:=20Support?= =?utf8?q?=20f=C3=BCr=20Typ=20"text"?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- SL/Controller/Base.pm | 14 ++++++++------ SL/Presenter.pm | 12 +++++++----- 2 files changed, 15 insertions(+), 11 deletions(-) diff --git a/SL/Controller/Base.pm b/SL/Controller/Base.pm index ce6af16b5..17a1d61d7 100644 --- a/SL/Controller/Base.pm +++ b/SL/Controller/Base.pm @@ -82,7 +82,7 @@ sub render { } # Only certain types are supported. - croak "Unsupported type: " . $options->{type} unless $options->{type} =~ m/^(?:html|js|json)$/; + croak "Unsupported type: " . $options->{type} unless $options->{type} =~ m/^(?:html|js|json|text)$/; # 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'); @@ -112,6 +112,7 @@ sub render { $::form->{header} = 1; my $content_type = $options->{type} eq 'html' ? 'text/html' : $options->{type} eq 'js' ? 'text/javascript' + : $options->{type} eq 'text' ? 'text/plain' : 'application/json'; print $::form->create_http_response(content_type => $content_type, @@ -401,11 +402,12 @@ C = 1, C = 1, C
= 1, C = 1): =item C -The template type. Can be C (the default), C for JavaScript -or C for JSON content. Affects the extension that's added to the -file name given with a non-reference C<$template> argument, the -content type HTTP header that is output and whether or not the layout -will be output as well (see description of C below). +The template type. Can be C (the default), C for JavaScript, +C for JSON and C for plain text content. Affects the +extension that's added to the file name given with a non-reference +C<$template> argument, the content type HTTP header that is output and +whether or not the layout will be output as well (see description of +C below). =item C diff --git a/SL/Presenter.pm b/SL/Presenter.pm index 61ddab408..d8add6378 100644 --- a/SL/Presenter.pm +++ b/SL/Presenter.pm @@ -40,7 +40,7 @@ sub render { } # Only certain types are supported. - croak "Unsupported type: " . $options->{type} unless $options->{type} =~ m/^(?:html|js|json)$/; + croak "Unsupported type: " . $options->{type} unless $options->{type} =~ m/^(?:html|js|json|text)$/; # 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'); @@ -49,7 +49,8 @@ sub render { # Look for the file given by $template if $template is not a reference. my $source; if (!ref $template) { - $source = "templates/webpages/${template}." . $options->{type}; + my $ext = $options->{type} eq 'text' ? 'txt' : $options->{type}; + $source = "templates/webpages/${template}.${ext}"; croak "Template file ${source} not found" unless -f $source; } elsif (ref($template) eq 'SCALAR') { @@ -223,9 +224,10 @@ The following options are available: =item C -The template type. Can be C (the default), C for JavaScript -or C for JSON content. Affects only the extension that's added -to the file name given with a non-reference C<$template> argument. +The template type. Can be C (the default), C for JavaScript, +C for JSON and C for plain text content. Affects only the +extension that's added to the file name given with a non-reference +C<$template> argument. =item C -- 2.20.1