X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FTemplate%2FPlugin%2FP.pm;h=9862577d601dbdf4888998a109f80db148cdf48e;hb=a6e0a7f493d24aec0eebede85eeaa5e724bd2e11;hp=d2f44235409c1dc8b7f4aa0018896265755f1840;hpb=d445880375bce1462b8f9a8b1a502b34c296d41f;p=kivitendo-erp.git diff --git a/SL/Template/Plugin/P.pm b/SL/Template/Plugin/P.pm index d2f442354..9862577d6 100644 --- a/SL/Template/Plugin/P.pm +++ b/SL/Template/Plugin/P.pm @@ -3,6 +3,8 @@ package SL::Template::Plugin::P; use base qw( Template::Plugin ); use SL::Presenter; +use SL::Presenter::ALL; +use SL::Presenter::Simple; use SL::Presenter::EscapedText; use strict; @@ -24,16 +26,28 @@ sub AUTOLOAD { our $AUTOLOAD; my ($self, @args) = @_; - my $presenter = SL::Presenter->get; my $method = $AUTOLOAD; $method =~ s/.*:://; - return '' unless $presenter->can($method); + return '' if $method eq 'DESTROY'; splice @args, -1, 1, %{ $args[-1] } if @args && (ref($args[-1]) eq 'HASH'); - $presenter->$method(@args); + if ($SL::Presenter::ALL::presenters{$method}) { + return SL::Presenter::ALL::wrap($SL::Presenter::ALL::presenters{$method}); + } + + if (my $sub = SL::Presenter::Simple->can($method)) { + return $sub->(@args); + } + + if ($presenter->can($method)) { + return $presenter->$method(@args); + } + + $::lxdebug->message(LXDebug::WARN(), "SL::Presenter has no method named '$method'!"); + return; } 1; @@ -52,10 +66,10 @@ SL::Template::Plugin::P - Template plugin for the presentation layer [% USE P %] - Customer: [% P.customer(customer) %] + Customer: [% customer.presenter.customer %] Linked records: - [% P.grouped_record_list(RECORDS) %] + [% P.record.grouped_list(RECORDS) %] =head1 FUNCTIONS