Rudimentäre Verwaltung von Benutzern
authorSven Schöling <s.schoeling@linet-services.de>
Mon, 13 Feb 2012 17:02:41 +0000 (18:02 +0100)
committerSven Schöling <s.schoeling@linet-services.de>
Mon, 13 Feb 2012 17:03:07 +0000 (18:03 +0100)
SL/Controller/Employee.pm [new file with mode: 0644]
locale/de/all
menu.ini
templates/webpages/employee/_form.html [new file with mode: 0644]
templates/webpages/employee/_list.html [new file with mode: 0644]
templates/webpages/employee/edit.html [new file with mode: 0644]
templates/webpages/employee/list.html [new file with mode: 0644]

diff --git a/SL/Controller/Employee.pm b/SL/Controller/Employee.pm
new file mode 100644 (file)
index 0000000..265d1db
--- /dev/null
@@ -0,0 +1,71 @@
+package SL::Controller::Employee;
+
+use strict;
+use parent qw(SL::Controller::Base);
+
+use SL::DB::Employee;
+use SL::Helper::Flash;
+
+__PACKAGE__->run_before('check_auth');
+__PACKAGE__->run_before('load_all');
+__PACKAGE__->run_before('load_from_form');
+__PACKAGE__->run_before('assign_from_form');
+
+our @updatable_columns = qw(deleted);
+
+sub action_list {
+  my ($self, %params) = @_;
+
+  $self->render('employee/list', title => $::locale->text('Employees'));
+}
+
+sub action_edit {
+  my ($self, %params) = @_;
+
+  if ($self->{employee}) {
+    $self->render('employee/edit', title => $::locale->text('Edit Employee #1', $self->{employee}->safe_name));
+  } else {
+    flash('error', $::locale->text('Could not load employee'));
+    $self->redirect_to(action => 'list');
+  }
+}
+
+sub action_save {
+  my ($self, %params) = @_;
+
+  $self->{employee}->save;
+
+  flash('info', $::locale->text('Employee #1 saved!'));
+
+  $self->redirect_to(action => 'edit', 'employee.id' => $self->{employee}->id);
+}
+
+#################### private stuff ##########################
+
+sub check_auth {
+  $::auth->assert('admin');
+}
+
+sub load_all {
+  $_[0]{employees} = SL::DB::Manager::Employee->get_all;
+}
+
+sub load_from_form {
+  $_[0]{employee} = SL::DB::Manager::Employee->find_by(id => delete $::form->{employee}{id});
+}
+
+sub assign_from_form {
+  my %data = %{ $::form->{employee} || {} };
+
+  return 1 unless keys %data;
+
+  $_[0]{employee}->assign_attributes(map { $_ => $data{$_} } @updatable_columns);
+  return 1;
+}
+
+
+######################## behaviour ##########################
+
+sub delay_flash_on_redirect { 1 }
+
+1;
index bcd35da..4a921f2 100644 (file)
@@ -430,6 +430,7 @@ $self->{texts} = {
   'Corrections'                 => 'Korrekturen',
   'Costs'                       => 'Kosten',
   'Could not copy %s to %s. Reason: %s' => 'Die Datei &quot;%s&quot; konnte nicht nach &quot;%s&quot; kopiert werden. Grund: %s',
+  'Could not load employee'     => 'Konnte Benutzer nicht laden',
   'Could not open the file users/members.' => 'Die Datei &quot;users/members&quot; konnte nicht ge&ouml;ffnet werden.',
   'Could not open the old memberfile.' => 'Die Datei mit den Benutzerdaten konnte nicht ge&ouml;ffnet werden.',
   'Could not print dunning.'    => 'Die Mahnungen konnten nicht gedruckt werden.',
@@ -578,6 +579,7 @@ $self->{texts} = {
   'Delete group'                => 'Gruppe l&ouml;schen',
   'Delete profile'              => 'Profil löschen',
   'Delete transaction'          => 'Buchung löschen',
+  'Deleted'                     => 'Gelöscht',
   'Delivered'                   => 'Geliefert',
   'Delivery Date'               => 'Lieferdatum',
   'Delivery Order'              => 'Lieferschein',
@@ -693,6 +695,7 @@ $self->{texts} = {
   'Edit Customer'               => 'Kunde editieren',
   'Edit Dunning'                => 'Mahnungen konfigurieren',
   'Edit Dunning Process Config' => 'Mahnwesenkonfiguration bearbeiten',
+  'Edit Employee #1'            => 'Benutzer #1 bearbeiten',
   'Edit Follow-Up'              => 'Wiedervorlage bearbeiten',
   'Edit Follow-Up for #1'       => 'Wiedervorlage f&uuml;r #1 bearbeiten',
   'Edit General Ledger Transaction' => 'Buchung im Hauptbuch bearbeiten',
@@ -749,6 +752,8 @@ $self->{texts} = {
   'Either there are no open invoices, or you have already initiated bank transfers with the open amounts for those that are still open.' => 'Entweder gibt es keine offenen Rechnungen, oder es wurden bereits Überweisungen über die offenen Beträge aller offenen Rechnungen erstellt.',
   'Element disabled'            => 'Element deaktiviert',
   'Employee'                    => 'Bearbeiter',
+  'Employee #1 saved!'          => 'Benutzer #1 gespeichert!',
+  'Employees'                   => 'Benutzer',
   'Empty transaction!'          => 'Buchung ist leer!',
   'End date'                    => 'Enddatum',
   'Enter a description for this new draft.' => 'Geben Sie eine Beschreibung f&uuml;r diesen Entwurf ein.',
@@ -1078,6 +1083,7 @@ $self->{texts} = {
   'Login'                       => 'Anmelden',
   'Login Name'                  => 'Benutzer',
   'Login name missing!'         => 'Benutzer - Feld darf nicht leer sein!',
+  'Login of User'               => 'Login',
   'Logout'                      => 'Abmelden',
   'Logout now'                  => 'Lx-Office jetzt verlassen',
   'Long Dates'                  => 'Lange Monatsnamen',
index 4277162..ce2babb 100644 (file)
--- a/menu.ini
+++ b/menu.ini
@@ -790,6 +790,11 @@ action=audit_control
 module=am.pl
 action=show_history_search
 
+[System--Employees]
+ACCESS=admin
+module=controller.pl
+action=Employee/list
+
 
 [Program]
 
diff --git a/templates/webpages/employee/_form.html b/templates/webpages/employee/_form.html
new file mode 100644 (file)
index 0000000..841cdc5
--- /dev/null
@@ -0,0 +1,29 @@
+[%- USE HTML %]
+[%- USE LxERP %]
+[%- USE T8 %]
+[%- USE L %]
+
+<form action='controller.pl' method='POST'>
+
+<table>
+<tr>
+ <td align='right' class=''>[% 'Login of User' | $T8 %]:</td>
+ <td>[% employee.login | html %]</td>
+</tr>
+<tr>
+ <td align='right'>[% 'Name' | $T8 %]:</td>
+ <td>[% employee.name | html %]</td>
+</tr>
+<tr>
+ <td align='right'>[% 'Deleted' | $T8 %]:</td>
+ <td> [% L.radio_button_tag('employee.deleted', value=1, checked=employee.deleted, label=LxERP.t8('Yes')) %]
+      [% L.radio_button_tag('employee.deleted', value=0, checked=!employee.deleted, label=LxERP.t8('No')) %]
+ </td>
+</tr>
+</table>
+
+[%- L.hidden_tag('employee.id', employee.id) %]
+[%- L.hidden_tag('action',  'Employee/dispatch')  %]
+[%- L.submit_tag('action_save',  LxERP.t8('Save'))  %]
+</form>
+
diff --git a/templates/webpages/employee/_list.html b/templates/webpages/employee/_list.html
new file mode 100644 (file)
index 0000000..5c92d44
--- /dev/null
@@ -0,0 +1,15 @@
+[%- USE T8 %]
+<table>
+ <tr class='listheading'>
+  <th>[% 'Login of User' | $T8 %]</th>
+  <th>[% 'Name' | $T8 %]</th>
+  <th>[% 'Deleted' | $T8 %]</th>
+ </tr>
+[%- FOREACH row IN SELF.employees %]
+ <tr class='listrow[% loop.count % 2 %]'>
+  <td><a href='[% SELF.url_for(action="edit", "employee.id"=row.id) %]'>[% row.login | html %]</a></td>
+  <td>[% row.name | html %]</td>
+  <td>[% row.deleted_as_bool_yn | html %]</td>
+ </tr>
+[%- END %]
+ </table>
diff --git a/templates/webpages/employee/edit.html b/templates/webpages/employee/edit.html
new file mode 100644 (file)
index 0000000..d4b3ed8
--- /dev/null
@@ -0,0 +1,9 @@
+<h1>[% title | html %]</h1>
+
+[% PROCESS 'common/flash.html' %]
+
+[% PROCESS 'employee/_form.html' employee=SELF.employee %]
+
+<hr>
+
+[% PROCESS 'employee/_list.html' %]
diff --git a/templates/webpages/employee/list.html b/templates/webpages/employee/list.html
new file mode 100644 (file)
index 0000000..056a828
--- /dev/null
@@ -0,0 +1,5 @@
+<h1>[% title | html %]</h1>
+
+[% PROCESS 'common/flash.html' %]
+
+[% PROCESS 'employee/_list.html' %]