X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FController%2FBase.pm;h=285bfcee494a9a2ecea6ab5a95ba97ffd34287f9;hb=06cb6b127be7185927c6a3b32d16295d55e162ea;hp=392f441c24211bd63ebb9a320218df05319d27a3;hpb=891411c15c60f4099e7d2f687de8efe84b2e0fbb;p=kivitendo-erp.git diff --git a/SL/Controller/Base.pm b/SL/Controller/Base.pm index 392f441c2..285bfcee4 100644 --- a/SL/Controller/Base.pm +++ b/SL/Controller/Base.pm @@ -30,7 +30,12 @@ sub redirect_to { my $self = shift; my $url = $self->url_for(@_); - print $::cgi->redirect($url); + if ($self->delay_flash_on_redirect) { + require SL::Helper::Flash; + SL::Helper::Flash::delay_flash(); + } + + print $::request->{cgi}->redirect($url); } sub render { @@ -45,6 +50,9 @@ sub render { if ($options->{inline}) { $source = \$template; + } elsif($options->{raw}) { + $source = $template; + } else { $source = "templates/webpages/${template}." . $options->{type}; croak "Template file ${source} not found" unless -f $source; @@ -65,20 +73,24 @@ sub render { } my %params = ( %locals, - AUTH => $::auth, - FLASH => $::form->{FLASH}, - FORM => $::form, + AUTH => $::auth, + FLASH => $::form->{FLASH}, + FORM => $::form, INSTANCE_CONF => $::instance_conf, - LOCALE => $::locale, - LXCONFIG => \%::lx_office_conf, - LXDEBUG => $::lxdebug, - MYCONFIG => \%::myconfig, - SELF => $self, + LOCALE => $::locale, + LXCONFIG => \%::lx_office_conf, + LXDEBUG => $::lxdebug, + MYCONFIG => \%::myconfig, + SELF => $self, ); my $output; - my $parser = $self->_template_obj; - $parser->process($source, \%params, \$output) || croak $parser->error; + if (!$options->{raw}) { + my $parser = $self->_template_obj; + $parser->process($source, \%params, \$output) || croak $parser->error; + } else { + $output = $$source; + } print $output unless $options->{inline} || $options->{no_output}; @@ -145,6 +157,14 @@ sub _run_hooks { } } +# +# behaviour. override these +# + +sub delay_flash_on_redirect { + 0; +} + # # private functions -- for use in Base only # @@ -322,6 +342,10 @@ containing the template code to interprete. Additionally the output will not be sent to the browser. Instead it is only returned to the caller. +If C<< $options->{raw} >> is trueish, the function will treat the input as +already parsed, and will not filter the input through Template. Unlike +C, the input is taked as a reference. + If C<< $options->{inline} >> is falsish then C<$template> is interpreted as the name of a template file. It is prefixed with "templates/webpages/" and postfixed with a file extension based on @@ -471,6 +495,12 @@ action. The hook's return values are discarded. +=item delay_flash_on_redirect + +May be overridden by a controller. If this method returns true, redirect_to +will delay all flash messages for the current request. Defaults to false for +compatibility reasons. + =back =head2 PRIVATE FUNCTIONS