Revision 9b36c563
Von Moritz Bunkus vor mehr als 11 Jahren hinzugefügt
SL/Controller/Admin.pm | ||
---|---|---|
378 | 378 |
# actions: database administration |
379 | 379 |
# |
380 | 380 |
|
381 |
sub action_database_administration {
|
|
381 |
sub action_create_dataset_login {
|
|
382 | 382 |
my ($self) = @_; |
383 | 383 |
|
384 |
$::form->{dbhost} ||= $::auth->{DB_config}->{host} || 'localhost'; |
|
385 |
$::form->{dbport} ||= $::auth->{DB_config}->{port} || 5432; |
|
386 |
$::form->{dbuser} ||= $::auth->{DB_config}->{user} || 'kivitendo'; |
|
387 |
$::form->{dbpasswd} ||= $::auth->{DB_config}->{password}; |
|
388 |
$::form->{dbdefault} ||= 'template1'; |
|
389 |
|
|
390 |
$self->render('admin/dbadmin', title => t8('Database Administration')); |
|
384 |
$self->database_administration_login_form( |
|
385 |
title => t8('Create Dataset'), |
|
386 |
next_action => 'create_dataset', |
|
387 |
); |
|
391 | 388 |
} |
392 | 389 |
|
393 | 390 |
sub action_create_dataset { |
... | ... | |
414 | 411 |
$self->redirect_to(action => 'database_administration'); |
415 | 412 |
} |
416 | 413 |
|
414 |
sub action_delete_dataset_login { |
|
415 |
my ($self) = @_; |
|
416 |
|
|
417 |
$self->database_administration_login_form( |
|
418 |
title => t8('Delete Dataset'), |
|
419 |
next_action => 'delete_dataset', |
|
420 |
); |
|
421 |
} |
|
422 |
|
|
417 | 423 |
sub action_delete_dataset { |
418 | 424 |
my ($self) = @_; |
419 | 425 |
$self->delete_dataset_form; |
... | ... | |
440 | 446 |
# actions: locking, unlocking |
441 | 447 |
# |
442 | 448 |
|
449 |
sub action_show_lock { |
|
450 |
my ($self) = @_; |
|
451 |
|
|
452 |
$self->render( |
|
453 |
"admin/show_lock", |
|
454 |
title => "kivitendo " . t8('Administration'), |
|
455 |
); |
|
456 |
} |
|
457 |
|
|
443 | 458 |
sub action_unlock_system { |
444 | 459 |
my ($self) = @_; |
445 | 460 |
|
... | ... | |
451 | 466 |
sub action_lock_system { |
452 | 467 |
my ($self) = @_; |
453 | 468 |
|
454 |
SL::System::InstallationLock->unlock;
|
|
469 |
SL::System::InstallationLock->lock; |
|
455 | 470 |
flash_later('info', t8('Lockfile created!')); |
456 | 471 |
$self->redirect_to(action => 'show'); |
457 | 472 |
} |
... | ... | |
532 | 547 |
my ($self, $action) = @_; |
533 | 548 |
|
534 | 549 |
$::request->layout(SL::Layout::Dispatcher->new(style => 'admin')); |
535 |
$::request->layout->use_stylesheet("lx-office-erp.css"); |
|
536 | 550 |
$::form->{favicon} = "favicon.ico"; |
537 | 551 |
%::myconfig = ( |
538 | 552 |
countrycode => 'de', |
... | ... | |
544 | 558 |
sub setup_client { |
545 | 559 |
my ($self) = @_; |
546 | 560 |
|
547 |
$self->client((first { $_->is_default } @{ $self->all_clients }) || $self->all_clients->[0]) if !$self->client;
|
|
561 |
$self->client(SL::DB::Manager::AuthClient->get_default || $self->all_clients->[0]) if !$self->client;
|
|
548 | 562 |
$::auth->set_client($self->client->id); |
549 | 563 |
} |
550 | 564 |
|
551 |
|
|
552 | 565 |
# |
553 | 566 |
# displaying forms |
554 | 567 |
# |
... | ... | |
563 | 576 |
sub login_form { |
564 | 577 |
my ($self, %params) = @_; |
565 | 578 |
my $version = $::form->read_version; |
579 |
$::request->layout->no_menu(1); |
|
566 | 580 |
$self->render('admin/adminlogin', title => t8('kivitendo v#1 administration', $version), %params, version => $version); |
567 | 581 |
} |
568 | 582 |
|
... | ... | |
586 | 600 |
$self->render('admin/edit_printer', %params); |
587 | 601 |
} |
588 | 602 |
|
603 |
sub database_administration_login_form { |
|
604 |
my ($self, %params) = @_; |
|
605 |
|
|
606 |
$self->render( |
|
607 |
'admin/dbadmin', |
|
608 |
dbhost => $::form->{dbhost} || $::auth->{DB_config}->{host} || 'localhost', |
|
609 |
dbport => $::form->{dbport} || $::auth->{DB_config}->{port} || 5432, |
|
610 |
dbuser => $::form->{dbuser} || $::auth->{DB_config}->{user} || 'kivitendo', |
|
611 |
dbpasswd => $::form->{dbpasswd} || $::auth->{DB_config}->{password}, |
|
612 |
dbdefault => $::form->{dbdefault} || 'template1', |
|
613 |
%params, |
|
614 |
); |
|
615 |
} |
|
616 |
|
|
589 | 617 |
sub create_dataset_form { |
590 | 618 |
my ($self, %params) = @_; |
591 | 619 |
$self->render('admin/create_dataset', title => (t8('Database Administration') . " / " . t8('Create Dataset'))); |
SL/DB/Manager/AuthClient.pm | ||
---|---|---|
17 | 17 |
columns => { SIMPLE => 'ALL' } ); |
18 | 18 |
} |
19 | 19 |
|
20 |
sub get_default { |
|
21 |
return $_[0]->get_first(where => [ is_default => 1 ]); |
|
22 |
} |
|
23 |
|
|
20 | 24 |
1; |
SL/Layout/Admin.pm | ||
---|---|---|
1 | 1 |
package SL::Layout::Admin; |
2 | 2 |
|
3 | 3 |
use strict; |
4 |
use parent qw(SL::Layout::Base);
|
|
4 |
use parent qw(SL::Layout::V3);
|
|
5 | 5 |
|
6 |
sub init_sub_layouts { |
|
7 |
[ SL::Layout::None->new ] |
|
6 |
use SL::Menu; |
|
7 |
|
|
8 |
use Rose::Object::MakeMethods::Generic ( |
|
9 |
scalar => [ qw(no_menu) ], |
|
10 |
); |
|
11 |
|
|
12 |
|
|
13 |
sub init_menu { |
|
14 |
Menu->new('admin-menu.ini'); |
|
8 | 15 |
} |
9 | 16 |
|
10 | 17 |
sub start_content { |
11 | 18 |
"<div id='admin' class='admin'>\n"; |
12 | 19 |
} |
13 | 20 |
|
14 |
sub end_content { |
|
15 |
"</div>\n"; |
|
21 |
sub render { |
|
22 |
my ($self) = @_; |
|
23 |
|
|
24 |
$self->presenter->render( |
|
25 |
'menu/menuv3', |
|
26 |
force_ul_width => 1, |
|
27 |
skip_frame_header => 1, |
|
28 |
menu => $self->no_menu ? '' : $self->print_menu, |
|
29 |
); |
|
16 | 30 |
} |
17 | 31 |
|
18 | 32 |
1; |
SL/Layout/V3.pm | ||
---|---|---|
146 | 146 |
} |
147 | 147 |
|
148 | 148 |
sub pre_content { |
149 |
&render;
|
|
149 |
$_[0]->render;
|
|
150 | 150 |
} |
151 | 151 |
|
152 | 152 |
sub start_content { |
admin-menu.ini | ||
---|---|---|
1 |
[Users, Clients and User Groups] |
|
2 |
|
|
3 |
[Users, Clients and User Groups--List Users, Clients and User Groups] |
|
4 |
module=controller.pl |
|
5 |
action=Admin/show |
|
6 |
|
|
7 |
[Users, Clients and User Groups--Add User] |
|
8 |
module=controller.pl |
|
9 |
action=Admin/new_user |
|
10 |
|
|
11 |
[Users, Clients and User Groups--Add Client] |
|
12 |
module=controller.pl |
|
13 |
action=Admin/new_client |
|
14 |
|
|
15 |
[Users, Clients and User Groups--Add User Group] |
|
16 |
module=controller.pl |
|
17 |
action=Admin/new_group |
|
18 |
|
|
19 |
[Database Management] |
|
20 |
|
|
21 |
[Database Management--Create Dataset] |
|
22 |
module=controller.pl |
|
23 |
action=Admin/create_dataset_login |
|
24 |
|
|
25 |
[Database Management--Delete Dataset] |
|
26 |
module=controller.pl |
|
27 |
action=Admin/delete_dataset_login |
|
28 |
|
|
29 |
[Printer Management] |
|
30 |
|
|
31 |
[Printer Management--List Printers] |
|
32 |
module=controller.pl |
|
33 |
action=Admin/list_printers |
|
34 |
|
|
35 |
[Printer Management--Add Printer] |
|
36 |
module=controller.pl |
|
37 |
action=Admin/new_printer |
|
38 |
|
|
39 |
[System] |
|
40 |
|
|
41 |
[System--Lock and unlock installation] |
|
42 |
module=controller.pl |
|
43 |
action=Admin/show_lock |
|
44 |
|
|
45 |
[System--To user login] |
|
46 |
module=controller.pl |
|
47 |
action=LoginScreen/user_login |
|
48 |
|
|
49 |
[System--Logout] |
|
50 |
module=controller.pl |
|
51 |
action=Admin/logout |
locale/de/all | ||
---|---|---|
113 | 113 |
'Accounting method' => 'Versteuerungsart', |
114 | 114 |
'Accrual' => 'Soll-Versteuerung', |
115 | 115 |
'Accrual accounting' => 'Soll-Versteuerung', |
116 |
'Actions' => 'Aktionen', |
|
117 | 116 |
'Active' => 'Aktiv', |
118 | 117 |
'Active?' => 'Aktiviert?', |
119 | 118 |
'Add' => 'Erfassen', |
... | ... | |
141 | 140 |
'Add Part' => 'Ware erfassen', |
142 | 141 |
'Add Price Factor' => 'Preisfaktor erfassen', |
143 | 142 |
'Add Pricegroup' => 'Preisgruppe erfassen', |
143 |
'Add Printer' => 'Drucker hinzufügen', |
|
144 | 144 |
'Add Project' => 'Projekt erfassen', |
145 | 145 |
'Add Purchase Delivery Order' => 'Lieferschein (Einkauf) erfassen', |
146 | 146 |
'Add Purchase Order' => 'Lieferantenauftrag erfassen', |
... | ... | |
166 | 166 |
'Add new currency' => 'Neue Währung hinzufügen', |
167 | 167 |
'Add new custom variable' => 'Neue benutzerdefinierte Variable erfassen', |
168 | 168 |
'Add note' => 'Notiz erfassen', |
169 |
'Add printer' => 'Drucker hinzufügen', |
|
170 | 169 |
'Add unit' => 'Einheit hinzufügen', |
171 | 170 |
'Address' => 'Adresse', |
172 | 171 |
'Administration' => 'Administration', |
... | ... | |
594 | 593 |
'Database Connection Test' => 'Test der Datenbankverbindung', |
595 | 594 |
'Database Host' => 'Datenbankcomputer', |
596 | 595 |
'Database ID' => 'Datenbank-ID', |
596 |
'Database Management' => 'Datenbankadministration', |
|
597 | 597 |
'Database User' => 'Datenbankbenutzer', |
598 | 598 |
'Database host and port' => 'Datenbankhost und -port', |
599 |
'Database login (#1)' => 'Datenbankanmeldung (#1)', |
|
599 | 600 |
'Database name' => 'Datenbankname', |
600 | 601 |
'Database settings' => 'Datenbankeinstellungen', |
601 | 602 |
'Database template' => 'Datenbankvorlage', |
... | ... | |
860 | 861 |
'Ertrag' => 'Ertrag', |
861 | 862 |
'Ertrag prozentual' => 'Ertrag prozentual', |
862 | 863 |
'Escape character' => 'Escape-Zeichen', |
864 |
'Everyone can log in.' => 'Alle können sich anmelden.', |
|
863 | 865 |
'Exact' => 'Genau', |
864 | 866 |
'Example: http://kivitendo.de' => 'Beispiel: http://kivitendo.de', |
865 | 867 |
'Excel' => 'Excel', |
... | ... | |
997 | 999 |
'Help Template Variables' => 'Hilfe zu Dokumenten-Variablen', |
998 | 1000 |
'Help on column names' => 'Hilfe zu Spaltennamen', |
999 | 1001 |
'Here' => 'Hier', |
1002 |
'Here you only provide the credentials for logging into the database.' => 'Hier geben Sie nur die Logindaten für die Anmeldung an der Datenbank ein.', |
|
1000 | 1003 |
'Here\'s an example command line:' => 'Hier ist eine Kommandozeile, die als Beispiel dient:', |
1001 | 1004 |
'Hide Filter' => 'Filter verbergen', |
1002 | 1005 |
'Hide by default' => 'Standardmäßig verstecken', |
... | ... | |
1024 | 1027 |
'If the default transfer out always succeed use this bin for negative stock quantity.' => 'Standardlagerplatz für Auslagern ohne Prüfung auf Bestand', |
1025 | 1028 |
'If you enter values for the part number and / or part description then only those bins containing parts whose part number or part description match your input will be shown.' => 'Wenn Sie für die Artikelnummer und / oder die Beschreibung etwas eingeben, so werden nur die Lagerplätze angezeigt, in denen Waren eingelagert sind, die Ihre Suchbegriffe enthalten.', |
1026 | 1029 |
'If you have not chosen for example the category revenue for a tax and you choose an revenue account to create a transfer in the general ledger, this tax will not be displayed in the tax dropdown.' => 'Wenn Sie z.B. die Kategory Erlös für eine Steuer nicht gewählt haben und ein Erlöskonto beim Erstellen einer Dialogbuchung wählen, wird diese Steuer auch nicht im Dropdown-Menü für die Steuern angezeigt.', |
1030 |
'If you lock the system normal users won\'t be able to log in.' => 'Wenn Sie das System sperren, so werden sich normale Benutzer nicht mehr anmelden können.', |
|
1027 | 1031 |
'If you see this message, you most likely just setup your LX-Office and haven\'t added any entry types. If this is the case, the option is accessible for administrators in the System menu.' => 'Wenn Sie diese Meldung sehen haben Sie wahrscheinlich ein frisches LX-Office Setup und noch keine Buchungsgruppen eingerichtet. Ein Administrator kann dies im Systemmenü erledigen.', |
1028 | 1032 |
'If you select a base unit then you also have to enter a factor.' => 'Wenn Sie eine Basiseinheit auswählen, dann müssen Sie auch einen Faktor eingeben.', |
1029 | 1033 |
'If you want to change any of these parameters then press the "Back" button, edit the file "config/kivitendo.conf" and login into the admin module again.' => 'Wenn Sie einen der Parameter ändern wollen, so drücken Sie auf den "Zurück"-Button, bearbeiten Sie die Datei "config/kivitendo.conf", und melden Sie sich erneut im Administrationsbereich an.', |
... | ... | |
1178 | 1182 |
'List Accounts' => 'Konten anzeigen', |
1179 | 1183 |
'List Languages' => 'Sprachen anzeigen', |
1180 | 1184 |
'List Price' => 'Listenpreis', |
1185 |
'List Printers' => 'Drucker anzeigen', |
|
1181 | 1186 |
'List Transactions' => 'Buchungsliste', |
1187 |
'List Users, Clients and User Groups' => 'Benutzer, Mandanten und Benutzergruppen anzeigen', |
|
1182 | 1188 |
'List current background jobs' => 'Aktuelle Hintergrund-Jobs anzeigen', |
1183 | 1189 |
'List export' => 'Export anzeigen', |
1184 | 1190 |
'List of bank accounts' => 'Liste der Bankkonten', |
... | ... | |
1191 | 1197 |
'Loading...' => 'Wird geladen...', |
1192 | 1198 |
'Local Tax Office Preferences' => 'Angaben zum Finanzamt', |
1193 | 1199 |
'Lock System' => 'System sperren', |
1200 |
'Lock and unlock installation' => 'Installation sperren/entsperren', |
|
1194 | 1201 |
'Lock file handling failed. Please verify that the directory "#1" is writeable by the webserver.' => 'Die Lockdateibehandlung schlug fehl. Bitte stellen Sie sicher, dass der Webserver das Verzeichnis "#1" beschreiben darf.', |
1195 | 1202 |
'Lockfile created!' => 'System gesperrt!', |
1196 | 1203 |
'Lockfile removed!' => 'System entsperrt!', |
... | ... | |
1331 | 1338 |
'No warehouse has been created yet or the quantity of the bins is not configured yet.' => 'Es wurde noch kein Lager angelegt, bzw. die dazugehörigen Lagerplätze sind noch nicht konfiguriert.', |
1332 | 1339 |
'No.' => 'Position', |
1333 | 1340 |
'None' => 'Kein', |
1341 |
'Normal users cannot log in.' => 'Normale Benutzer können sich nicht anmelden.', |
|
1334 | 1342 |
'Not Discountable' => 'Nicht rabattierfähig', |
1335 | 1343 |
'Not delivered' => 'Nicht geliefert', |
1336 | 1344 |
'Not done yet' => 'Noch nicht fertig', |
... | ... | |
1346 | 1354 |
'Nothing has been selected for transfer.' => 'Es wurde nichts zum Umlagern ausgewählt.', |
1347 | 1355 |
'Nothing selected!' => 'Es wurde nichts ausgewählt!', |
1348 | 1356 |
'Nothing stocked yet.' => 'Noch nichts eingelagert.', |
1357 |
'Nothing will be created or deleted at this stage!' => 'In diesem Schritt wird nichts angelegt oder gelöscht!', |
|
1349 | 1358 |
'Nov' => 'Nov', |
1350 | 1359 |
'November' => 'November', |
1351 | 1360 |
'Number' => 'Nummer', |
... | ... | |
1469 | 1478 |
'Periodicity' => 'Periodizität', |
1470 | 1479 |
'Perpetual inventory' => 'Bestandsmethode', |
1471 | 1480 |
'Personal settings' => 'Persönliche Einstellungen', |
1472 |
'Pg Database Administration' => 'Datenbankadministration', |
|
1473 | 1481 |
'Phone' => 'Telefon', |
1474 | 1482 |
'Phone1' => 'Telefon 1 ', |
1475 | 1483 |
'Phone2' => 'Telefon 2', |
... | ... | |
1977 | 1985 |
'The account 3804 already exists, the update will be skipped.' => 'Das Konto 3804 existiert schon, das Update wird übersprungen.', |
1978 | 1986 |
'The account 3804 will not be added automatically.' => 'Das Konto 3804 wird nicht automatisch hinzugefügt.', |
1979 | 1987 |
'The action you\'ve chosen has not been executed because the document does not contain any item yet.' => 'Die von Ihnen ausgewählte Aktion wurde nicht ausgeführt, weil der Beleg noch keine Positionen enthält.', |
1988 |
'The administration area is always accessible.' => 'Der Administrationsbereich ist immer zugänglich.', |
|
1980 | 1989 |
'The application "#1" was not found on the system.' => 'Die Anwendung "#1" wurde auf dem System nicht gefunden.', |
1981 | 1990 |
'The assembly has been created.' => 'Das Erzeugnis wurde hergestellt.', |
1982 | 1991 |
'The assistant could not find anything wrong with #1. Maybe the problem has been solved in the meantime.' => 'Der Korrekturassistent konnte kein Problem bei #1 feststellen. Eventuell wurde das Problem in der Zwischenzeit bereits behoben.', |
... | ... | |
2062 | 2071 |
'The following users will have access to this client' => 'Die folgenden Benutzer werden auf diesen Mandanten Zugriff haben', |
2063 | 2072 |
'The formula needs the following syntax:<br>For regular article:<br>Variablename= Variable Unit;<br>Variablename2= Variable2 Unit2;<br>...<br>###<br>Variable + ( Variable2 / Variable )<br><b>Please be beware of the spaces in the formula</b><br>' => 'Die Formeln müssen in der folgenden Syntax eingegeben werden:<br>Bei normalen Artikeln:<br>Variablenname = Variable Einheit;<br>Variablenname2 = Variable2 Einheit2;<br>...<br>###<br>Variable + Variable2 * ( Variable - Variable2 )<br>Variablennamen und Einheiten dürfen nur aus alphanumerischen Zeichen bestehen.<br>Es muss jeweils die Gesamte Zeile eingegeben werden', |
2064 | 2073 |
'The greetings have been saved.' => 'Die Anreden wurden gespeichert', |
2074 |
'The installation is currently locked.' => 'Die Installation ist momentan gesperrt.', |
|
2075 |
'The installation is currently unlocked.' => 'Die Installation ist momentan entsperrt.', |
|
2065 | 2076 |
'The items are imported accoring do their number "X" regardless of the column order inside the file.' => 'Die Einträge werden in der Reihenfolge ihrer Indizes "X" unabhängig von der Spaltenreihenfolge in der Datei importiert.', |
2066 | 2077 |
'The link target to add has been created from the existing record.' => 'Das auszuwählende Verknüpfungsziel wurde aus dem bestehenden Beleg erstellt.', |
2067 | 2078 |
'The list has been printed.' => 'Die Liste wurde ausgedruckt.', |
... | ... | |
2188 | 2199 |
'This group is valid for the following clients' => 'Diese Gruppe ist für die folgenden Mandanten gültig', |
2189 | 2200 |
'This has been changed in this version, therefore please change the "old" bins to some real warehouse bins.' => 'Das wurde in dieser Version umgestellt, bitte ändern Sie die Freitext-Lagerplätze auf vorhandene Lagerplätze.', |
2190 | 2201 |
'This has been changed in this version.' => 'Ab dieser Version ist dies nicht mehr so.', |
2191 |
'This is a preliminary check for existing sources. Nothing will be created or deleted at this stage!' => 'In diesem Schritt werden bestehende Datenbanken gesucht. Es werden noch keine Änderungen vorgenommen!', |
|
2192 | 2202 |
'This is a very critical problem.' => 'Dieses Problem ist sehr schwerwiegend.', |
2193 | 2203 |
'This is the client to be selected by default on the login screen.' => 'Dies ist derjenige Mandant, der im Loginbildschirm standardmäßig ausgewählt sein wird.', |
2194 | 2204 |
'This is the default bin for ignoring onhand' => 'Standardlagerplatz für Auslagern ohne Bestandsprüfung', |
... | ... | |
2320 | 2330 |
'Users that have access to this client' => 'Benutzer mit Zugriff auf diesen Mandanten', |
2321 | 2331 |
'Users with access' => 'Benutzer mit Zugriff', |
2322 | 2332 |
'Users with access to this client' => 'Benutzer mit Zugriff auf diesen Mandanten', |
2333 |
'Users, Clients and User Groups' => 'Benutzer, Mandanten und Benutzergruppen', |
|
2323 | 2334 |
'VAT ID' => 'UStdID-Nr', |
2324 | 2335 |
'Valid' => 'Gültig', |
2325 | 2336 |
'Valid from' => 'Gültig ab', |
scripts/locales.pl | ||
---|---|---|
18 | 18 |
use Getopt::Long; |
19 | 19 |
use IO::Dir; |
20 | 20 |
use List::Util qw(first); |
21 |
use POSIX; |
|
22 | 21 |
use Pod::Usage; |
23 | 22 |
|
24 | 23 |
$OUTPUT_AUTOFLUSH = 1; |
... | ... | |
35 | 34 |
my $locales_dir = "."; |
36 | 35 |
my $bindir = "$basedir/bin/mozilla"; |
37 | 36 |
my @progdirs = ( "$basedir/SL" ); |
38 |
my $menufile = "menu.ini";
|
|
37 |
my @menufiles = ("${basedir}/menu.ini", "${basedir}/admin-menu.ini");
|
|
39 | 38 |
my @javascript_dirs = ($basedir .'/js', $basedir .'/templates/webpages'); |
40 | 39 |
my $javascript_output_dir = $basedir .'/js'; |
41 | 40 |
my $submitsearch = qr/type\s*=\s*[\"\']?submit/i; |
... | ... | |
89 | 88 |
push @progfiles, map { m:^(.+)/([^/]+)$:; [ $2, $1 ] } grep { /\.pm$/ } map { find_files($_) } @progdirs; |
90 | 89 |
|
91 | 90 |
# put customized files into @customfiles |
92 |
my (@menufiles, %dir_h);
|
|
91 |
my %dir_h;
|
|
93 | 92 |
|
94 | 93 |
if ($opt_n) { |
95 | 94 |
@customfiles = (); |
96 |
@menufiles = ($menufile); |
|
97 | 95 |
} else { |
98 | 96 |
tie %dir_h, 'IO::Dir', $basedir; |
99 |
@menufiles = map { "$basedir/$_" } grep { /.*?_$menufile$/ } keys %dir_h; |
|
100 |
unshift @menufiles, "$basedir/$menufile"; |
|
97 |
push @menufiles, map { "$basedir/$_" } grep { /.*_menu.ini$/ } keys %dir_h; |
|
101 | 98 |
} |
102 | 99 |
|
103 | 100 |
my @dbplfiles; |
... | ... | |
724 | 721 |
close $fh; |
725 | 722 |
} |
726 | 723 |
|
727 |
sub slurp { |
|
728 |
my $file = shift; |
|
729 |
do { local ( @ARGV, $/ ) = $file; <> } |
|
730 |
} |
|
731 |
|
|
732 | 724 |
__END__ |
733 | 725 |
|
734 | 726 |
=head1 NAME |
templates/webpages/admin/create_dataset.html | ||
---|---|---|
4 | 4 |
|
5 | 5 |
<h1>[% HTML.escape(title) %]</h1> |
6 | 6 |
|
7 |
<p><a href="controller.pl?action=Admin/database_administration">[% LxERP.t8('Back') %]</a></p> |
|
8 |
|
|
9 | 7 |
<form method="post" action="controller.pl"> |
10 | 8 |
<p> |
11 | 9 |
[% LxERP.t8('You can either create a new database or chose an existing database.') %] |
templates/webpages/admin/dbadmin.html | ||
---|---|---|
2 | 2 |
|
3 | 3 |
[% INCLUDE 'common/flash.html' %] |
4 | 4 |
|
5 |
<h1>[% HTML.escape(title) %]</h1>
|
|
5 |
<h1>[% LxERP.t8("Database login (#1)", title) %]</h1>
|
|
6 | 6 |
|
7 |
<p><a href="controller.pl?action=Admin/show">[% LxERP.t8('Back') %]</a></p>
|
|
7 |
<p>[% LxERP.t8('Here you only provide the credentials for logging into the database.') %] [% LxERP.t8('Nothing will be created or deleted at this stage!') %]</p>
|
|
8 | 8 |
|
9 | 9 |
<form method="post" action="controller.pl"> |
10 | 10 |
<table> |
11 | 11 |
<tr> |
12 | 12 |
<th align="right">[% LxERP.t8('Host') %]</th> |
13 |
<td>[% L.input_tag('dbhost', FORM.dbhost, size=30, class="initial_focus") %]</td>
|
|
13 |
<td>[% L.input_tag('dbhost', dbhost, size=30, class="initial_focus") %]</td> |
|
14 | 14 |
<th align="right">[% LxERP.t8('Port') %]</th> |
15 |
<td>[% L.input_tag('dbport', FORM.dbport, size=6) %]</td>
|
|
15 |
<td>[% L.input_tag('dbport', dbport, size=6) %]</td> |
|
16 | 16 |
</tr> |
17 | 17 |
|
18 | 18 |
<tr> |
19 | 19 |
<th align="right">[% LxERP.t8('Database User') %]</th> |
20 |
<td>[% L.input_tag("dbuser", FORM.dbuser, size=30) %]</td>
|
|
20 |
<td>[% L.input_tag("dbuser", dbuser, size=30) %]</td> |
|
21 | 21 |
<th align="right">[% LxERP.t8('Password') %]</th> |
22 |
<td>[% L.input_tag("dbpasswd", FORM.dbpasswd, type='password', size=30) %]</td>
|
|
22 |
<td>[% L.input_tag("dbpasswd", dbpasswd, type='password', size=30) %]</td> |
|
23 | 23 |
</tr> |
24 | 24 |
|
25 | 25 |
<tr> |
26 | 26 |
<th align="right">[% LxERP.t8('Database template') %]</th> |
27 |
<td>[% L.input_tag("dbdefault", FORM.dbdefault, size=30) %]</td>
|
|
27 |
<td>[% L.input_tag("dbdefault", dbdefault, size=30) %]</td> |
|
28 | 28 |
</tr> |
29 | 29 |
</table> |
30 | 30 |
|
31 |
<div> |
|
32 |
[% L.hidden_tag("action", 'Admin/dispatch') %] |
|
33 |
[% L.submit_tag('action_create_dataset', LxERP.t8('Create Dataset')) %] |
|
34 |
[% L.submit_tag('action_delete_dataset', LxERP.t8('Delete Dataset')) %] |
|
35 |
</div> |
|
36 |
</form> |
|
31 |
[% L.hidden_tag("action", 'Admin/dispatch') %] |
|
37 | 32 |
|
38 |
<p>[% LxERP.t8('This is a preliminary check for existing sources. Nothing will be created or deleted at this stage!') %]</p> |
|
33 |
<p> |
|
34 |
[% L.submit_tag('action_' _ next_action, LxERP.t8('Login')) %] |
|
35 |
</p> |
|
36 |
</form> |
templates/webpages/admin/delete_dataset.html | ||
---|---|---|
4 | 4 |
|
5 | 5 |
<h1>[% HTML.escape(title) %]</h1> |
6 | 6 |
|
7 |
<p><a href="controller.pl?action=Admin/database_administration">[% LxERP.t8('Back') %]</a></p> |
|
8 |
|
|
9 | 7 |
<p> |
10 | 8 |
[% LxERP.t8('You can only delete datasets that are not in use.') %] |
11 | 9 |
[% LxERP.t8('If you want to delete such a dataset you have to edit the client(s) that are using the dataset in question and have them use another dataset.') %] |
templates/webpages/admin/edit_client.html | ||
---|---|---|
5 | 5 |
|
6 | 6 |
<h1>[% HTML.escape(title) %]</h1> |
7 | 7 |
|
8 |
<p>[% L.link(SELF.url_for(action="show"), LxERP.t8("Back")) %]</p> |
|
9 |
|
|
10 | 8 |
<form method="post" action="controller.pl" id="form"> |
11 | 9 |
[% L.hidden_tag("client.id", SELF.client.id) %] |
12 | 10 |
[% L.hidden_tag("action", "") %] |
templates/webpages/admin/edit_group.html | ||
---|---|---|
5 | 5 |
|
6 | 6 |
<h1>[% HTML.escape(title) %]</h1> |
7 | 7 |
|
8 |
<p>[% L.link(SELF.url_for(action="show"), LxERP.t8("Back")) %]</p> |
|
9 |
|
|
10 | 8 |
<form method="post" action="controller.pl" id="form"> |
11 | 9 |
[% L.hidden_tag("group.id", SELF.group.id) %] |
12 | 10 |
[% L.hidden_tag("action", "") %] |
templates/webpages/admin/edit_printer.html | ||
---|---|---|
2 | 2 |
|
3 | 3 |
[% INCLUDE 'common/flash.html' %] |
4 | 4 |
|
5 |
[% IF !SELF.all_clients.size %] |
|
6 |
<div class="error"> |
|
7 |
[% LxERP.t8("Error") %]: |
|
8 |
[% LxERP.t8("No clients have been created yet.") %] |
|
9 |
</div> |
|
10 |
|
|
11 |
[%- ELSE %] |
|
12 |
|
|
5 | 13 |
<h1>[% HTML.escape(title) %]</h1> |
6 | 14 |
|
7 | 15 |
<form method="post"> |
8 |
[% L.hidden_tag("client.id", SELF.client.id) %] |
|
9 | 16 |
[% L.hidden_tag("action", 'Admin/dispatch') %] |
10 | 17 |
[% L.hidden_tag("printer.id", SELF.printer.id) %] |
11 | 18 |
|
12 | 19 |
<table> |
20 |
<tr> |
|
21 |
<th align="right">[% LxERP.t8('Client') %]</th> |
|
22 |
<td>[% L.select_tag("client.id", SELF.all_clients, default=SELF.client.id, title_key='name') %]</td> |
|
23 |
<tr> |
|
24 |
|
|
13 | 25 |
<tr> |
14 | 26 |
<th align="right">[% LxERP.t8('Printer Description') %]</th> |
15 | 27 |
<td>[% L.input_tag("printer.printer_description", SELF.printer.printer_description, size=30, class="initial_focus") %]</td> |
... | ... | |
33 | 45 |
</p> |
34 | 46 |
|
35 | 47 |
</form> |
48 |
|
|
49 |
[% END %] |
templates/webpages/admin/edit_user.html | ||
---|---|---|
5 | 5 |
|
6 | 6 |
<h1>[% HTML.escape(title) %]</h1> |
7 | 7 |
|
8 |
<p>[% L.link(SELF.url_for(action="show"), LxERP.t8("Back")) %]</p> |
|
9 |
|
|
10 | 8 |
<form method="post" action="controller.pl" id="form"> |
11 | 9 |
[% L.hidden_tag("user.id", SELF.user.id) %] |
12 | 10 |
[% L.hidden_tag("action", "") %] |
templates/webpages/admin/list_printers.html | ||
---|---|---|
10 | 10 |
[% LxERP.t8("No clients have been created yet.") %] |
11 | 11 |
</div> |
12 | 12 |
|
13 |
<div> |
|
14 |
<a href="[% SELF.url_for(action='show') %]">[% LxERP.t8("Back") %]</a> |
|
15 |
</div> |
|
16 |
|
|
17 | 13 |
[%- ELSE %] |
18 | 14 |
|
19 |
<div> |
|
20 |
[% LxERP.t8("Actions") %]: |
|
21 |
<span class="link_separator"></span> |
|
22 |
<a href="[% SELF.url_for(action='show') %]">[% LxERP.t8("Back") %]</a> |
|
23 |
<span class="link_separator">|</span> |
|
24 |
<a href="[% SELF.url_for(action='new_printer', 'client.id'=SELF.client.id) %]">[% LxERP.t8("Add printer") %]</a> |
|
25 |
</div> |
|
26 |
|
|
27 |
<hr> |
|
28 |
|
|
29 | 15 |
<p> |
30 | 16 |
[% LxERP.t8("Client to configure the printers for") %]: |
31 | 17 |
[% L.select_tag('client.id', SELF.all_clients, id='client_id', title_key='name', default=SELF.client.id) %] |
templates/webpages/admin/show.html | ||
---|---|---|
4 | 4 |
|
5 | 5 |
<h1>[% HTML.escape(title) %]</h1> |
6 | 6 |
|
7 |
<div> |
|
8 |
[% LxERP.t8("Actions") %]: |
|
9 |
<span class="link_separator"></span> |
|
10 |
[% L.link(SELF.url_for(action="new_user"), LxERP.t8("Add User")) %] |
|
11 |
<span class="link_separator">|</span> |
|
12 |
[% L.link(SELF.url_for(action="new_client"), LxERP.t8("Add Client")) %] |
|
13 |
<span class="link_separator">|</span> |
|
14 |
[% L.link(SELF.url_for(action="new_group"), LxERP.t8("Add User Group")) %] |
|
15 |
<span class="link_separator">|</span> |
|
16 |
[% L.link(SELF.url_for(action="database_administration"), LxERP.t8("Pg Database Administration")) %] |
|
17 |
<span class="link_separator">|</span> |
|
18 |
[% L.link(SELF.url_for(action="list_printers"), LxERP.t8("Printer Management")) %] |
|
19 |
<span class="link_separator">|</span> |
|
20 |
[% IF SELF.is_locked %] |
|
21 |
[% L.link(SELF.url_for(action="unlock_system"), LxERP.t8("Unlock System")) %] |
|
22 |
[% ELSE %] |
|
23 |
[% L.link(SELF.url_for(action="lock_system"), LxERP.t8("Lock System")) %] |
|
24 |
[% END %] |
|
25 |
<span class="link_separator">|</span> |
|
26 |
[% L.link(SELF.url_for(action="logout"), LxERP.t8("Logout")) %] |
|
27 |
<span class="link_separator">|</span> |
|
28 |
[% L.link(SELF.url_for(controller="LoginScreen", action="user_login"), LxERP.t8("To user login")) %] |
|
29 |
</div> |
|
30 |
|
|
31 |
<hr> |
|
32 |
|
|
33 | 7 |
<div class="tabwidget"> |
34 | 8 |
<ul> |
35 | 9 |
<li><a href="#user_list">[%- LxERP.t8("User list") %]</a></li> |
templates/webpages/admin/show_lock.html | ||
---|---|---|
1 |
[%- USE HTML %][%- USE LxERP -%][%- USE L -%] |
|
2 |
|
|
3 |
[% INCLUDE 'common/flash.html' %] |
|
4 |
|
|
5 |
<h1>[% HTML.escape(title) %]</h1> |
|
6 |
|
|
7 |
[% IF SELF.is_locked %] |
|
8 |
<p> |
|
9 |
[% LxERP.t8("The installation is currently locked.") %] |
|
10 |
[% LxERP.t8("Normal users cannot log in.") %] |
|
11 |
[% LxERP.t8("The administration area is always accessible.") %] |
|
12 |
</p> |
|
13 |
|
|
14 |
<p><a href="[% SELF.url_for(action='unlock_system') %]">[% LxERP.t8("Unlock System") %]</a></p> |
|
15 |
|
|
16 |
[% ELSE %] |
|
17 |
|
|
18 |
<p> |
|
19 |
[% LxERP.t8("The installation is currently unlocked.") %] |
|
20 |
[% LxERP.t8("Everyone can log in.") %] |
|
21 |
</p> |
|
22 |
|
|
23 |
<p> |
|
24 |
[% LxERP.t8("If you lock the system normal users won't be able to log in.") %] |
|
25 |
[% LxERP.t8("The administration area is always accessible.") %] |
|
26 |
</p> |
|
27 |
|
|
28 |
<p><a href="[% SELF.url_for(action='lock_system') %]">[% LxERP.t8("Lock System") %]</a></p> |
|
29 |
|
|
30 |
[% END %] |
templates/webpages/menu/menuv3.html | ||
---|---|---|
1 | 1 |
[%- USE T8 %] |
2 | 2 |
[% USE HTML %][%- USE LxERP -%] |
3 |
[% UNLESS skip_frame_header %] |
|
3 | 4 |
<script type="text/javascript" src="js/quicksearch_input.js"></script> |
4 | 5 |
<script type="text/javascript"> |
5 | 6 |
<!-- |
... | ... | |
30 | 31 |
<img src="image/[% IF MYCONFIG.stylesheet == 'lx-office-erp.css' %]spinner-blue.gif[% ELSE %]spinner-white.gif[% END %]" alt="[% LxERP.t8('Loading...') %]"> |
31 | 32 |
</span> |
32 | 33 |
</div> |
34 |
[% END %] |
|
33 | 35 |
<div id="menuv3"> |
34 | 36 |
|
35 | 37 |
[% menu %] |
Auch abrufbar als: Unified diff
Administrationsbereich mit Menüsystem versehen