X-Git-Url: http://wagnertech.de/gitweb/gitweb.cgi/mfinanz.git/blobdiff_plain/deb4d2dbb676d7d6f69dfe7815d6e0cb09bd4a44..53593baa211863fbf66540cf1bcc36c8fb37257f:/SL/Template/Plugin/P.pm 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