Presenter: Sub-Presenter auf Funktional geƤndert
[kivitendo-erp.git] / SL / Presenter / ALL.pm
1 package SL::Presenter::ALL;
2
3 use strict;
4
5 use SL::Presenter::Chart;
6 use SL::Presenter::CustomerVendor;
7 use SL::Presenter::DeliveryOrder;
8 use SL::Presenter::EscapedText;
9 use SL::Presenter::Invoice;
10 use SL::Presenter::GL;
11 use SL::Presenter::Letter;
12 use SL::Presenter::Order;
13 use SL::Presenter::Part;
14 use SL::Presenter::Project;
15 use SL::Presenter::Record;
16 use SL::Presenter::RequirementSpec;
17 use SL::Presenter::RequirementSpecItem;
18 use SL::Presenter::RequirementSpecTextBlock;
19 use SL::Presenter::SepaExport;
20 use SL::Presenter::ShopOrder;
21 use SL::Presenter::Text;
22 use SL::Presenter::Tag;
23 use SL::Presenter::BankAccount;
24
25 our %presenters = (
26   chart                       => 'SL::Presenter::Chart',
27   customer_vendor             => 'SL::Presenter::CustomerVendor',
28   delivery_order              => 'SL::Presenter::DeliveryOrder',
29   escaped_text                => 'SL::Presenter::EscapedText',
30   invoice                     => 'SL::Presenter::Invoice',
31   gl                          => 'SL::Presenter::GL',
32   letter                      => 'SL::Presenter::Letter',
33   order                       => 'SL::Presenter::Order',
34   part                        => 'SL::Presenter::Part',
35   project                     => 'SL::Presenter::Project',
36   record                      => 'SL::Presenter::Record',
37   requirement_spec            => 'SL::Presenter::RequirementSpec',
38   requirement_spec_item       => 'SL::Presenter::RequirementSpecItem',
39   requirement_spec_text_block => 'SL::Presenter::RequirementSpecTextBlock',
40   sepa_export                 => 'SL::Presenter::SepaExport',
41   shop_order                  => 'SL::Presenter::ShopOrder',
42   text                        => 'SL::Presenter::Text',
43   tag                         => 'SL::Presenter::Tag',
44   bank_account                => 'SL::Presenter::BankAccount',
45 );
46
47 sub wrap {
48   bless [ $_[0] ], 'SL::Presenter::ALL::Wrapper';
49 }
50
51 package SL::Presenter::ALL::Wrapper;
52
53 sub AUTOLOAD {
54   our $AUTOLOAD;
55
56   my ($self, @args) = @_;
57
58   my $method = $AUTOLOAD;
59   $method    =~ s/.*:://;
60
61   return if $method eq 'DESTROY';
62
63   splice @args, -1, 1, %{ $args[-1] } if @args && (ref($args[-1]) eq 'HASH');
64
65   if (my $sub = $self->[0]->can($method)) {
66     return $sub->(@args);
67   }
68 }
69
70 1;