|
use strict;
|
|
|
|
use SL::Printer;
|
|
|
|
sub get_login {
|
|
unless ($::form->{login}) {
|
|
get_login_form();
|
|
::end_of_request();
|
|
}
|
|
return $::form->{login};
|
|
}
|
|
|
|
sub get_login_form {
|
|
my %users = $::auth->read_all_users;
|
|
|
|
$::form->header;
|
|
print $::form->parse_html_template('admin_printer/login', {
|
|
users => [ values %users ],
|
|
});
|
|
}
|
|
|
|
sub printer_dispatcher {
|
|
for my $action (qw(get_login_form list_printers add_printer edit_printer save_printer delete_printer list_users)) {
|
|
if ($::form->{$action}) {
|
|
::call_sub($::locale->findsub($action));
|
|
::end_of_request()
|
|
}
|
|
}
|
|
die "cannot find sub";
|
|
}
|
|
|
|
sub printer_management {
|
|
&get_login_form;
|
|
}
|
|
|
|
sub add_printer {
|
|
$::lxdebug->enter_sub;
|
|
|
|
my $login = get_login();
|
|
my %users = $::auth->read_all_users;
|
|
|
|
$::form->header;
|
|
print $::form->parse_html_template('admin_printer/edit', {
|
|
title => $::locale->text("Add Printer"),
|
|
printer => { },
|
|
users => [ values %users ],
|
|
});
|
|
|
|
$::lxdebug->leave_sub
|
|
}
|
|
|
|
sub edit_printer {
|
|
$::lxdebug->enter_sub;
|
|
|
|
my $login = get_login();
|
|
my $id = $::form->{id} or $::form->{printer}{id} or &add_printer;
|
|
my %users = $::auth->read_all_users;
|
|
|
|
my $printer = SL::Printer->get_printer(id => $id, login => $login);
|
|
|
|
$::form->header;
|
|
print $::form->parse_html_template('admin_printer/edit', {
|
|
title => $::locale->text("Edit Printer"),
|
|
printer => $printer,
|
|
users => [ values %users ],
|
|
});
|
|
|
|
$::lxdebug->leave_sub;
|
|
}
|
|
|
|
sub list_printers {
|
|
$::lxdebug->enter_sub;
|
|
|
|
my $login = get_login();
|
|
my $printers = SL::Printer->all_printers(login => $login);
|
|
my %users = $::auth->read_all_users;
|
|
|
|
$::form->header;
|
|
print $::form->parse_html_template('admin_printer/list', {
|
|
title => $::locale->text('Printer'),
|
|
all_printers => $printers,
|
|
edit_link => build_std_url("login=$login", 'action=edit_printer', 'id='),
|
|
users => [ values %users ],
|
|
});
|
|
|
|
$::lxdebug->leave_sub;
|
|
}
|
|
|
|
|
|
sub save_printer {
|
|
$::lxdebug->enter_sub;
|
|
|
|
my $login = get_login();
|
|
my $printer = $::form->{printer} || die 'no printer to save';
|
|
|
|
$::form->error($::locale->text('Description missing!')) unless $printer->{printer_description};
|
|
$::form->error($::locale->text('Printer Command missing!')) unless $printer->{printer_command};
|
|
|
|
SL::Printer->save_printer(%$::form);
|
|
|
|
list_printers();
|
|
$::lxdebug->leave_sub;
|
|
}
|
|
|
|
sub delete_printer {
|
|
$::lxdebug->enter_sub;
|
|
|
|
my $login = get_login();
|
|
my $printer = $::form->{printer} || die 'no printer to delete';
|
|
|
|
SL::Printer->delete_printer(%$::form);
|
|
list_printers();
|
|
|
|
$::lxdebug->leave_sub;
|
|
}
|
|
|
|
1;
|