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