From: Sven Schöling Date: Wed, 29 Sep 2010 10:26:09 +0000 (+0200) Subject: Druckeradministration in die Adminumgebung verschoben. X-Git-Tag: release-2.6.2beta1~112^2~2 X-Git-Url: http://wagnertech.de/git?a=commitdiff_plain;h=a3f90d6fa23d0a8d026682511e7624bd847d532f;p=kivitendo-erp.git Druckeradministration in die Adminumgebung verschoben. Printercommands werden mit webuser Rechnten ausgeführt, deshalb darf ein User keine anlegen. Da die Umgebung da völlig anders ist, geht das mit einem Rewrite der Masken einher. --- diff --git a/SL/AM.pm b/SL/AM.pm index f5736f14b..d637e2a59 100644 --- a/SL/AM.pm +++ b/SL/AM.pm @@ -1108,106 +1108,6 @@ sub swap_sortkeys { $main::lxdebug->leave_sub(); } -sub printer { - $main::lxdebug->enter_sub(); - - my ($self, $myconfig, $form) = @_; - - # connect to database - my $dbh = $form->dbconnect($myconfig); - - my $query = qq|SELECT id, printer_description, template_code, printer_command - FROM printers - ORDER BY 2|; - - my $sth = $dbh->prepare($query); - $sth->execute || $form->dberror($query); - - $form->{"ALL"} = []; - while (my $ref = $sth->fetchrow_hashref("NAME_lc")) { - push @{ $form->{ALL} }, $ref; - } - - $sth->finish; - $dbh->disconnect; - - $main::lxdebug->leave_sub(); -} - -sub get_printer { - $main::lxdebug->enter_sub(); - - my ($self, $myconfig, $form) = @_; - - # connect to database - my $dbh = $form->dbconnect($myconfig); - - my $query = - qq|SELECT p.printer_description, p.template_code, p.printer_command - FROM printers p - WHERE p.id = ?|; - my $sth = $dbh->prepare($query); - $sth->execute($form->{id}) || $form->dberror($query . " ($form->{id})"); - - my $ref = $sth->fetchrow_hashref("NAME_lc"); - - map { $form->{$_} = $ref->{$_} } keys %$ref; - - $sth->finish; - - $dbh->disconnect; - - $main::lxdebug->leave_sub(); -} - -sub save_printer { - $main::lxdebug->enter_sub(); - - my ($self, $myconfig, $form) = @_; - my $query; - - # connect to database - my $dbh = $form->dbconnect($myconfig); - - my @values = ($form->{printer_description}, - $form->{template_code}, - $form->{printer_command}); - - # id is the old record - if ($form->{id}) { - $query = qq|UPDATE printers SET - printer_description = ?, template_code = ?, printer_command = ? - WHERE id = ?|; - push(@values, $form->{id}); - } else { - $query = qq|INSERT INTO printers - (printer_description, template_code, printer_command) - VALUES (?, ?, ?)|; - } - do_query($form, $dbh, $query, @values); - - $dbh->disconnect; - - $main::lxdebug->leave_sub(); -} - -sub delete_printer { - $main::lxdebug->enter_sub(); - - my ($self, $myconfig, $form) = @_; - - # connect to database - my $dbh = $form->dbconnect($myconfig); - - my $query = qq|DELETE FROM printers - WHERE id = ?|; - do_query($form, $dbh, $query, $form->{id}); - - $dbh->disconnect; - - $main::lxdebug->leave_sub(); -} - sub payment { $main::lxdebug->enter_sub(); diff --git a/SL/Auth.pm b/SL/Auth.pm index bf2a6a851..eb5a7805a 100644 --- a/SL/Auth.pm +++ b/SL/Auth.pm @@ -33,6 +33,26 @@ sub new { return $self; } +sub get_user_dbh { + my ($self, $login) = @_; + my %user = $self->read_user($login); + my $dbh = DBI->connect( + $user{dbconnect}, + $user{dbuser}, + $user{dbpasswd}, + { + pg_enable_utf8 => $::locale->is_utf8, + AutoCommit => 0 + } + ) or $::form->dberror; + + if ($user{dboptions}) { + $dbh->do($user{dboptions}) or $::form->dberror($user{dboptions}); + } + + return $dbh; +} + sub DESTROY { my $self = shift; diff --git a/SL/Printer.pm b/SL/Printer.pm new file mode 100644 index 000000000..346d734a2 --- /dev/null +++ b/SL/Printer.pm @@ -0,0 +1,83 @@ +package SL::Printer; + +use SL::DBUtils; + +sub all_printers { + $::lxdebug->enter_sub; + + my ($self, %params) = @_; + + my $dbh = $::auth->get_user_dbh($params{login}); + + my $query = qq|SELECT * FROM printers ORDER BY printer_description|; + my @printers = selectall_hashref_query($::form, $dbh, $query); + + $::lxdebug->leave_sub; + + return wantarray ? @printers : \@printers; +} + +sub get_printer { + $::lxdebug->enter_sub; + + my ($self, %params) = @_; + + my $dbh = $::auth->get_user_dbh($params{login}); + + my $query = qq|SELECT * FROM printers WHERE id = ?|; + my ($printer) = selectfirst_hashref_query($::form, $dbh, $query, $params{id}); + + $::lxdebug->leave_sub; + + return $printer; +} + +sub save_printer { + $main::lxdebug->enter_sub(); + + my ($self, %params) = @_; + + # connect to database + my $dbh = $::auth->get_user_dbh($params{login}); + my $printer = $params{printer}; + + unless ($printer->{id}) { + ($printer->{id}) = selectfirst_array_query($::form, $dbh, "SELECT nextval('id'::text)"); + do_query($::form, $dbh, "INSERT INTO printers (id, printer_description) VALUES (?, '')", $printer->{id}); + } + + my $query = <{printer_description}, + $printer->{template_code}, + $printer->{printer_command}, + $printer->{id}, + ); + + $dbh->commit; + + $::lxdebug->leave_sub; +} + +sub delete_printer { + $::lxdebug->enter_sub; + + my ($self, %params) = @_; + + my $dbh = $::auth->get_user_dbh($params{login}); + + my $query = qq|DELETE FROM printers WHERE id = ?|; + do_query($::form, $dbh, $query, $params{id}); + + $dbh->commit; + + $::lxdebug->leave_sub; +} + +1; diff --git a/bin/mozilla/admin.pl b/bin/mozilla/admin.pl index ebf01c679..3a5e810c2 100755 --- a/bin/mozilla/admin.pl +++ b/bin/mozilla/admin.pl @@ -52,6 +52,7 @@ use SL::DBUtils; require "bin/mozilla/common.pl"; require "bin/mozilla/admin_groups.pl"; +require "bin/mozilla/admin_printer.pl"; use strict; diff --git a/bin/mozilla/admin_printer.pl b/bin/mozilla/admin_printer.pl new file mode 100644 index 000000000..bc623327f --- /dev/null +++ b/bin/mozilla/admin_printer.pl @@ -0,0 +1,118 @@ +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 { + $::lxdebug->dump(0, "testing", $::form); + for (qw(get_login_form list_printers add_printer edit_printer save_printer delete_printer list_users)) { + if ($::form->{$_}) { + ::call_sub($::locale->findsub($_)); + ::end_of_request() + } + } + die "cannot find sub"; +} + +sub printer_management { + &list_printers; +} + +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; diff --git a/bin/mozilla/am.pl b/bin/mozilla/am.pl index 4a7840281..d9d484269 100644 --- a/bin/mozilla/am.pl +++ b/bin/mozilla/am.pl @@ -2014,234 +2014,6 @@ sub swap_buchungsgruppen { $main::lxdebug->leave_sub(); } - -sub add_printer { - $main::lxdebug->enter_sub(); - - my $form = $main::form; - - $main::auth->assert('config'); - - $form->{title} = "Add"; - - $form->{callback} = "am.pl?action=add_printer" unless $form->{callback}; - - &printer_header; - &form_footer; - - $main::lxdebug->leave_sub(); -} - -sub edit_printer { - $main::lxdebug->enter_sub(); - - my $form = $main::form; - my %myconfig = %main::myconfig; - - $main::auth->assert('config'); - - $form->{title} = "Edit"; - - AM->get_printer(\%myconfig, \%$form); - - &printer_header; - - $form->{orphaned} = 1; - &form_footer; - - $main::lxdebug->leave_sub(); -} - -sub list_printer { - $main::lxdebug->enter_sub(); - - my $form = $main::form; - my %myconfig = %main::myconfig; - my $locale = $main::locale; - - $main::auth->assert('config'); - - AM->printer(\%myconfig, \%$form); - - $form->{callback} = "am.pl?action=list_printer"; - - my $callback = $form->escape($form->{callback}); - - $form->{title} = $locale->text('Printer'); - - my @column_index = qw(printer_description printer_command template_code); - my %column_header; - $column_header{printer_description} = - qq|| - . $locale->text('Printer Description') - . qq||; - $column_header{printer_command} = - qq|| - . $locale->text('Printer Command') - . qq||; - $column_header{template_code} = - qq|| - . $locale->text('Template Code') - . qq||; - - $form->header; - - print qq| - - - - - - - - - - - - - -
$form->{title}
- - -|; - - map { print "$column_header{$_}\n" } @column_index; - - print qq| - -|; - - my ($i, %column_data); - foreach my $ref (@{ $form->{ALL} }) { - - $i++; - $i %= 2; - - print qq| - -|; - - - $column_data{printer_description} = qq||; - $column_data{printer_command} = qq||; - $column_data{template_code} = - qq||; - - map { print "$column_data{$_}\n" } @column_index; - - print qq| - -|; - } - - print qq| -
$ref->{printer_description}$ref->{printer_command}$ref->{template_code}
-

- -
-
- - - - - - - -
- - - -|; - - $main::lxdebug->leave_sub(); -} - -sub printer_header { - $main::lxdebug->enter_sub(); - - my $form = $main::form; - my $locale = $main::locale; - - $main::auth->assert('config'); - - $form->{title} = $locale->text("$form->{title} Printer"); - - # $locale->text('Add Printer') - # $locale->text('Edit Printer') - - $form->{printer_description} =~ s/\"/"/g; - $form->{template_code} =~ s/\"/"/g; - $form->{printer_command} =~ s/\"/"/g; - - - $form->header; - - print qq| - - -
- -{id}> - - - - - - - - - - - - - - - - - - - - - -
$form->{title}
| . $locale->text('Printer') . qq|
| . $locale->text('Printer Command') . qq|
| . $locale->text('Template Code') . qq|

-|; - - $main::lxdebug->leave_sub(); -} - -sub save_printer { - $main::lxdebug->enter_sub(); - - my $form = $main::form; - my %myconfig = %main::myconfig; - my $locale = $main::locale; - - $main::auth->assert('config'); - - $form->isblank("printer_description", $locale->text('Description missing!')); - $form->isblank("printer_command", $locale->text('Printer Command missing!')); - AM->save_printer(\%myconfig, \%$form); - $form->redirect($locale->text('Printer saved!')); - - $main::lxdebug->leave_sub(); -} - -sub delete_printer { - $main::lxdebug->enter_sub(); - - my $form = $main::form; - my %myconfig = %main::myconfig; - my $locale = $main::locale; - - $main::auth->assert('config'); - - AM->delete_printer(\%myconfig, \%$form); - $form->redirect($locale->text('Printer deleted!')); - - $main::lxdebug->leave_sub(); -} - sub add_payment { $main::lxdebug->enter_sub(); @@ -2722,10 +2494,8 @@ sub config { { 'name' => $locale->text('Queue'), 'value' => 'queue', 'selected' => $selected{queue}, }, ]; - AM->printer(\%myconfig, $form); - $form->{PRINTERS} = []; - foreach my $printer (@{$form->{"ALL"}}) { + foreach my $printer (SL::Printer->all_printers(%::myconfig)) { push @{ $form->{PRINTERS} }, { 'name' => $printer->{printer_description}, 'value' => $printer->{id}, diff --git a/locale/de/all b/locale/de/all index c256452e9..18b6d398f 100644 --- a/locale/de/all +++ b/locale/de/all @@ -1206,6 +1206,7 @@ $self->{texts} = { 'Please read the file' => 'Bitte lesen Sie die Datei', 'Please select a customer from the list below.' => 'Bitte einen Endkunden aus der Liste auswählen', 'Please select a part from the list below.' => 'Bitte wählen Sie einen Artikel aus der Liste aus.', + 'Please select a user' => 'Bitte wählen Sie einen Benutzer aus', 'Please select a vendor from the list below.' => 'Bitte einen Händler aus der Liste auswählen', 'Please select the chart of accounts this installation is using from the list below.' => 'Bitte wählen Sie den Kontenrahmen aus, der bei dieser Installation verwendet wird.', 'Please select the database you want to backup' => 'Bitte wählen Sie die zu sichernde Datenbank gefunden', @@ -1249,9 +1250,8 @@ $self->{texts} = { 'Printer' => 'Drucker', 'Printer Command' => 'Druckbefehl', 'Printer Command missing!' => 'Druckbefehl fehlt', - 'Printer Description' => 'Druckerbeschreibung', - 'Printer deleted!' => 'Drucker gelöscht!', - 'Printer saved!' => 'Drucker gespeichert!', + 'Printer Management' => 'Druckeradministration', + 'Printers are created for a user database. Please select a user. The associated database will be edited.' => 'Drucker werden für eine Benutzerdatenbank erzeugt. Bitte wählen Sie einen Benutzer aus. Die Drucker werden in der verknüpften Datenbank angelegt.', 'Printing ... ' => 'Es wird gedruckt.', 'Prior to Lx-Office v2.4.0 the user could enter arbitrary strings as units for parts, services and in invoices, sales quotations etc.' => 'Vor Lx-Office 2.4.0 konnte der Benutzer bei Artikeln, Dienstleistungen und Rechnungen, Angeboten etc beliebige Einheiten angeben.', 'Prior to Lx-Office v2.4.0 the user had to chose the accounts for each part and service.' => 'Vor Lx-Office 2.4.0 musste der Benutzer die Konten bei jeder Ware und jeder Dienstleistung einzeln auswählen.', diff --git a/menu.ini b/menu.ini index 643a4e9ac..310c7b568 100644 --- a/menu.ini +++ b/menu.ini @@ -667,20 +667,6 @@ module=generictranslations.pl action=edit_greetings -[System--Printer] -module=menu.pl -action=acc_menu -target=acc_menu -submenu=1 - -[System--Printer--Add Printer] -module=am.pl -action=add_printer - -[System--Printer--List Printer] -module=am.pl -action=list_printer - [System--Payment Terms] module=menu.pl action=acc_menu diff --git a/templates/webpages/admin/list_users.html b/templates/webpages/admin/list_users.html index 7d66002d1..e2011908e 100644 --- a/templates/webpages/admin/list_users.html +++ b/templates/webpages/admin/list_users.html @@ -36,6 +36,7 @@ + [% IF LOCKED %] diff --git a/templates/webpages/admin_printer/_login_form.html b/templates/webpages/admin_printer/_login_form.html new file mode 100644 index 000000000..411661cba --- /dev/null +++ b/templates/webpages/admin_printer/_login_form.html @@ -0,0 +1,4 @@ +[%- USE T8 %] +[%- USE L %] +

[% 'Please select a user' | $T8 %]: [% L.select_tag('login', L.options_for_select(users, value => 'login', title => 'login', default => login)) %]

+ diff --git a/templates/webpages/admin_printer/edit.html b/templates/webpages/admin_printer/edit.html new file mode 100644 index 000000000..d158702e8 --- /dev/null +++ b/templates/webpages/admin_printer/edit.html @@ -0,0 +1,41 @@ +[%- USE T8 %] + + + + +

[% title %]

+ +[%- PROCESS 'admin_printer/_login_form.html' %] + + + + + + + + + + + + + + + + + + +
[% 'Printer' | $T8 %]
[% 'Printer Command' | $T8 %]
[% 'Template Code' | $T8 %]

+ +
+ + + +[%- IF id %] + +[%- END %] + + +
+ + + diff --git a/templates/webpages/admin_printer/list.html b/templates/webpages/admin_printer/list.html new file mode 100644 index 000000000..6dd23618f --- /dev/null +++ b/templates/webpages/admin_printer/list.html @@ -0,0 +1,44 @@ +[%- USE T8 %] + + +
+ +

[% title %]

+ +[%- PROCESS 'admin_printer/_login_form.html' %] + + + + + + + + +
+ + + + + + +[%- IF all_printers.size %] +[%- FOREACH row = all_printers %] + + + + + +[%- END %] +[%- ELSE %] + +[%- END %] +
[% 'Description' | $T8 %][% 'Printer Command' | $T8 %][% 'Template Code' | $T8 %]
[% row.printer_description %][% row.printer_command | html %][% row.template_code | html %]
[% 'No data was found.' | $T8 %]
+

+ +
+ + + +
+ + diff --git a/templates/webpages/admin_printer/login.html b/templates/webpages/admin_printer/login.html new file mode 100644 index 000000000..d45f1ce85 --- /dev/null +++ b/templates/webpages/admin_printer/login.html @@ -0,0 +1,16 @@ +[% USE T8 %] +[% USE L %] + +

[% 'Printer Management' | $T8 %]

+
+

[% 'Printers are created for a user database. Please select a user. The associated database will be edited.' | $T8 %]

+ +[%- PROCESS 'admin_printer/_login_form.html' %] + + +

+ + +

+ +