Datenbankabfrage mit leerem Feld für employee_id vermeiden
[kivitendo-erp.git] / bin / mozilla / admin_printer.pl
1 use strict;
2
3 use SL::Printer;
4
5 sub get_login {
6   unless ($::form->{login}) {
7     get_login_form();
8     ::end_of_request();
9   }
10   return $::form->{login};
11 }
12
13 sub get_login_form {
14   my %users = $::auth->read_all_users;
15
16   $::form->header;
17   print $::form->parse_html_template('admin_printer/login', {
18     users => [ values %users ],
19   });
20 }
21
22 sub printer_dispatcher {
23   for my $action (qw(get_login_form list_printers add_printer edit_printer save_printer delete_printer list_users)) {
24     if ($::form->{$action}) {
25       ::call_sub($::locale->findsub($action));
26       ::end_of_request()
27     }
28   }
29   die "cannot find sub";
30 }
31
32 sub printer_management {
33   &get_login_form;
34 }
35
36 sub add_printer {
37   $::lxdebug->enter_sub;
38
39   my $login   = get_login();
40   my %users   = $::auth->read_all_users;
41
42   $::form->header;
43   print $::form->parse_html_template('admin_printer/edit', {
44     title   => $::locale->text("Add Printer"),
45     printer => { },
46     users   => [ values %users ],
47   });
48
49   $::lxdebug->leave_sub
50 }
51
52 sub edit_printer {
53   $::lxdebug->enter_sub;
54
55   my $login = get_login();
56   my $id    = $::form->{id} or $::form->{printer}{id} or &add_printer;
57   my %users   = $::auth->read_all_users;
58
59   my $printer = SL::Printer->get_printer(id => $id, login => $login);
60
61   $::form->header;
62   print $::form->parse_html_template('admin_printer/edit', {
63     title   => $::locale->text("Edit Printer"),
64     printer => $printer,
65     users   => [ values %users ],
66   });
67
68   $::lxdebug->leave_sub;
69 }
70
71 sub list_printers {
72   $::lxdebug->enter_sub;
73
74   my $login    = get_login();
75   my $printers = SL::Printer->all_printers(login => $login);
76   my %users   = $::auth->read_all_users;
77
78   $::form->header;
79   print $::form->parse_html_template('admin_printer/list', {
80     title        => $::locale->text('Printer'),
81     all_printers => $printers,
82     edit_link    => build_std_url("login=$login", 'action=edit_printer', 'id='),
83     users        => [ values %users ],
84   });
85
86   $::lxdebug->leave_sub;
87 }
88
89
90 sub save_printer {
91   $::lxdebug->enter_sub;
92
93   my $login   = get_login();
94   my $printer = $::form->{printer} || die 'no printer to save';
95
96   $::form->error($::locale->text('Description missing!'))     unless $printer->{printer_description};
97   $::form->error($::locale->text('Printer Command missing!')) unless $printer->{printer_command};
98
99   SL::Printer->save_printer(%$::form);
100
101   list_printers();
102   $::lxdebug->leave_sub;
103 }
104
105 sub delete_printer {
106   $::lxdebug->enter_sub;
107
108   my $login   = get_login();
109   my $printer = $::form->{printer} || die 'no printer to delete';
110
111   SL::Printer->delete_printer(%$::form);
112   list_printers();
113
114   $::lxdebug->leave_sub;
115 }
116
117 1;