X-Git-Url: http://wagnertech.de/git?p=kivitendo-erp.git;a=blobdiff_plain;f=SL%2FTemplate%2FPlugin%2FP.pm;fp=SL%2FTemplate%2FPlugin%2FP.pm;h=9862577d601dbdf4888998a109f80db148cdf48e;hp=44eeb436df35a5ca6997e5b89209f0e470b3006b;hb=53593baa211863fbf66540cf1bcc36c8fb37257f;hpb=deb4d2dbb676d7d6f69dfe7815d6e0cb09bd4a44 diff --git a/SL/Template/Plugin/P.pm b/SL/Template/Plugin/P.pm index 44eeb436d..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,21 +26,28 @@ sub AUTOLOAD { our $AUTOLOAD; my ($self, @args) = @_; - my $presenter = SL::Presenter->get; my $method = $AUTOLOAD; $method =~ s/.*:://; return '' if $method eq 'DESTROY'; - if (!$presenter->can($method)) { - $::lxdebug->message(LXDebug::WARN(), "SL::Presenter has no method named '$method'!"); - return ''; + splice @args, -1, 1, %{ $args[-1] } if @args && (ref($args[-1]) eq 'HASH'); + + if ($SL::Presenter::ALL::presenters{$method}) { + return SL::Presenter::ALL::wrap($SL::Presenter::ALL::presenters{$method}); } - splice @args, -1, 1, %{ $args[-1] } if @args && (ref($args[-1]) eq 'HASH'); + if (my $sub = SL::Presenter::Simple->can($method)) { + return $sub->(@args); + } + + if ($presenter->can($method)) { + return $presenter->$method(@args); + } - $presenter->$method(@args); + $::lxdebug->message(LXDebug::WARN(), "SL::Presenter has no method named '$method'!"); + return; } 1; @@ -57,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