Image-Upload neuer Typ für VK-Lieferschein
[kivitendo-erp.git] / SL / Controller / ImageUpload.pm
1 package SL::Controller::ImageUpload;
2
3 use strict;
4 use parent qw(SL::Controller::Base);
5
6 use JSON qw(to_json);
7
8 use SL::DB::Part;
9 use SL::DB::Order;
10 use SL::DB::DeliveryOrder;
11
12 use Rose::Object::MakeMethods::Generic
13 (
14   scalar => [ qw() ],
15   'scalar --get_set_init' => [ qw(object_type object) ],
16 );
17
18 my %object_loader = (
19   part            => [ "SL::DB::Part" ],
20   sales_order     => [ "SL::DB::Order", [ sales => 1, quotation => 0 ] ],
21   sales_quotation => [ "SL::DB::Order", [ sales => 1, quotation => 1 ] ],
22   purchase_order  => [ "SL::DB::Order", [ sales => 0, quotation => 1 ] ],
23   sales_delivery_order => [ "SL::DB::DeliveryOrder", [ order_type => 'sales_delivery_order' ] ],
24 );
25
26
27 ################ actions #################
28
29 sub action_upload_image {
30   my ($self) = @_;
31
32   $::request->layout->add_javascripts('kivi.File.js');
33   $::request->layout->add_javascripts('kivi.FileDB.js');
34   $::request->layout->add_javascripts('kivi.ImageUpload.js');
35
36   $self->render('image_upload/local_list');
37 }
38
39 sub action_resolve_object_by_number {
40   my ($self) = @_;
41
42   my $result = {
43     id          => $self->object->id,
44     description => $self->object->displayable_name,
45   };
46
47   $self->render(\ to_json($result), { process => 0, type => 'json' });
48 }
49
50 ################# internal ###############
51
52 sub accept_types {
53   "image/*"
54 }
55
56 sub init_object_type {
57   $::form->{object_type} or die "need object type"
58 }
59
60 sub init_object {
61   my ($self) = @_;
62
63   return unless $self->object_type;
64
65   my $loader = $object_loader{ $self->object_type } or die "unknown object type";
66   my $manager = $loader->[0]->_get_manager_class;
67
68   return $manager->find_by(id => $::form->{object_id}*1) if $::form->{object_id};
69
70   return $manager->find_by(donumber => $::form->{object_number}, closed => 0, @{ $loader->[1] // [] }) if $::form->{object_number};
71 }
72
73
74 1;
75
76