Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision 44d893c2

Von Moritz Bunkus vor mehr als 11 Jahren hinzugefügt

  • ID 44d893c2d2589ac8d09d255f9be0e38d74c48407
  • Vorgänger 839ed59d
  • Nachfolger cb347e6a

Datenbankverwaltung in neuen Admin-Controller verschoben

Unterschiede anzeigen:

SL/Controller/Admin.pm
4 4

  
5 5
use parent qw(SL::Controller::Base);
6 6

  
7
use IO::File;
7
use IO::Dir;
8 8
use List::Util qw(first);
9 9

  
10
use SL::Common ();
10 11
use SL::DB::AuthUser;
11 12
use SL::DB::AuthGroup;
12 13
use SL::DB::Printer;
......
18 19
use Rose::Object::MakeMethods::Generic
19 20
(
20 21
  'scalar --get_set_init' => [ qw(client user group printer db_cfg is_locked
21
                                  all_dateformats all_numberformats all_countrycodes all_stylesheets all_menustyles all_clients all_groups all_users all_rights all_printers) ],
22
                                  all_dateformats all_numberformats all_countrycodes all_stylesheets all_menustyles all_clients all_groups all_users all_rights all_printers
23
                                  all_dbsources all_unused_dbsources all_accounting_methods all_inventory_systems all_profit_determinations all_charts) ],
22 24
);
23 25

  
24 26
__PACKAGE__->run_before(\&setup_layout);
......
360 362
  $self->redirect_to(action => 'list_printers', 'client.id' => $self->client->id);
361 363
}
362 364

  
365
#
366
# actions: database administration
367
#
368

  
369
sub action_database_administration {
370
  my ($self) = @_;
371

  
372
  $::form->{dbhost}    ||= $::auth->{DB_config}->{host} || 'localhost';
373
  $::form->{dbport}    ||= $::auth->{DB_config}->{port} || 5432;
374
  $::form->{dbuser}    ||= $::auth->{DB_config}->{user} || 'kivitendo';
375
  $::form->{dbpasswd}  ||= $::auth->{DB_config}->{password};
376
  $::form->{dbdefault} ||= 'template1';
377

  
378
  $::request->layout->focus('#dbhost');
379

  
380
  $self->render('admin/dbadmin', title => t8('Database Administration'));
381
}
382

  
383
sub action_create_dataset {
384
  my ($self) = @_;
385
  $self->create_dataset_form;
386
}
387

  
388
sub action_do_create_dataset {
389
  my ($self) = @_;
390

  
391
  my @errors;
392
  push @errors, t8("Dataset missing!")          if !$::form->{db};
393
  push @errors, t8("Default currency missing!") if !$::form->{defaultcurrency};
394

  
395
  if (@errors) {
396
    flash('error', @errors);
397
    return $self->create_dataset_form;
398
  }
399

  
400
  $::form->{encoding} = 'UNICODE';
401
  User->new->dbcreate($::form);
402

  
403
  flash_later('info', t8("The dataset #1 has been created.", $::form->{db}));
404
  $self->redirect_to(action => 'database_administration');
405
}
406

  
407
sub action_delete_dataset {
408
  my ($self) = @_;
409
  $self->delete_dataset_form;
410
}
411

  
412
sub action_do_delete_dataset {
413
  my ($self) = @_;
414

  
415
  my @errors;
416
  push @errors, t8("Dataset missing!") if !$::form->{db};
417

  
418
  if (@errors) {
419
    flash('error', @errors);
420
    return $self->create_dataset_form;
421
  }
422

  
423
  User->new->dbdelete($::form);
424

  
425
  flash_later('info', t8("The dataset #1 has been deleted.", $::form->{db}));
426
  $self->redirect_to(action => 'database_administration');
427
}
428

  
363 429
#
364 430
# actions: locking, unlocking
365 431
#
......
397 463
sub init_all_dateformats   { [ qw(mm/dd/yy dd/mm/yy dd.mm.yy yyyy-mm-dd)      ]                                              }
398 464
sub init_all_numberformats { [ qw(1,000.00 1000.00 1.000,00 1000,00)          ]                                              }
399 465
sub init_all_stylesheets   { [ qw(lx-office-erp.css Mobile.css kivitendo.css) ]                                              }
466
sub init_all_dbsources             { [ sort User->dbsources($::form)                               ] }
467
sub init_all_unused_dbsources      { [ sort User->dbsources_unused($::form)                        ] }
468
sub init_all_accounting_methods    { [ { id => 'accrual',   name => t8('Accrual accounting')  }, { id => 'cash',     name => t8('Cash accounting')       } ] }
469
sub init_all_inventory_systems     { [ { id => 'perpetual', name => t8('Perpetual inventory') }, { id => 'periodic', name => t8('Periodic inventory')    } ] }
470
sub init_all_profit_determinations { [ { id => 'balance',   name => t8('Balancing')           }, { id => 'income',   name => t8('Cash basis accounting') } ] }
471

  
472
sub init_all_charts {
473
  tie my %dir_h, 'IO::Dir', 'sql/';
474

  
475
  return [
476
    map { s/-chart\.sql$//; +{ id => $_ } }
477
    sort
478
    grep { /-chart\.sql\z/ && !/Default-chart.sql\z/ }
479
    keys %dir_h
480
  ];
481
}
482

  
400 483
sub init_all_menustyles    {
401 484
  return [
402 485
    { id => 'old', title => $::locale->text('Old (on the side)') },
......
488 571
  $self->render('admin/edit_printer', %params);
489 572
}
490 573

  
574
sub create_dataset_form {
575
  my ($self, %params) = @_;
576
  $self->render('admin/create_dataset', title => (t8('Database Administration') . " / " . t8('Create Dataset')));
577
}
578

  
579
sub delete_dataset_form {
580
  my ($self, %params) = @_;
581
  $self->render('admin/delete_dataset', title => (t8('Database Administration') . " / " . t8('Delete Dataset')));
582
}
583

  
491 584
#
492 585
# helpers
493 586
#
SL/User.pm
38 38
use Fcntl qw(:seek);
39 39

  
40 40
#use SL::Auth;
41
use SL::DB::AuthClient;
41 42
use SL::DBConnect;
42 43
use SL::DBUpgrade2;
43 44
use SL::DBUtils;
......
224 225
  return @dbsources;
225 226
}
226 227

  
227
sub dbclusterencoding {
228
  $main::lxdebug->enter_sub();
229

  
230
  my ($self, $form) = @_;
231

  
232
  $form->{dbdefault} ||= $form->{dbuser};
233

  
234
  dbconnect_vars($form, $form->{dbdefault});
235

  
236
  my $dbh                = SL::DBConnect->connect($form->{dbconnect}, $form->{dbuser}, $form->{dbpasswd}, SL::DBConnect->get_options) || $form->dberror();
237
  my $query              = qq|SELECT pg_encoding_to_char(encoding) FROM pg_database WHERE datname = 'template0'|;
238
  my ($cluster_encoding) = $dbh->selectrow_array($query);
239
  $dbh->disconnect();
240

  
241
  $main::lxdebug->leave_sub();
242

  
243
  return $cluster_encoding;
244
}
245

  
246 228
sub dbcreate {
247 229
  $main::lxdebug->enter_sub();
248 230

  
......
316 298

  
317 299
  my ($self, $form) = @_;
318 300

  
319
  $form->{only_acc_db} = 1;
301
  my %dbexcl = map  { $_->dbname => 1 }
302
               grep { ($_->dbhost eq $form->{dbhost}) && ($_->dbport eq $form->{dbport}) }
303
                    @{ SL::DB::Manager::AuthClient->get_all };
320 304

  
321
  my %members = $main::auth->read_all_users();
322
  my %dbexcl  = map { $_ => 1 } grep { $_ } map { $_->{dbname} } values %members;
305
  $form->{only_acc_db} = 1;
323 306

  
324 307
  $dbexcl{$form->{dbdefault}}             = 1;
325 308
  $dbexcl{$main::auth->{DB_config}->{db}} = 1;
......
331 314
  return @dbunused;
332 315
}
333 316

  
334
sub dbneedsupdate {
335
  $main::lxdebug->enter_sub();
336

  
337
  my ($self, $form) = @_;
338

  
339
  my %members   = $main::auth->read_all_users();
340
  my $dbupdater = SL::DBUpgrade2->new(form => $form)->parse_dbupdate_controls;
341

  
342
  my ($query, $sth, %dbs_needing_updates);
343

  
344
  foreach my $login (grep /[a-z]/, keys %members) {
345
    my $member = $members{$login};
346

  
347
    map { $form->{$_} = $member->{$_} } qw(dbname dbuser dbpasswd dbhost dbport);
348
    dbconnect_vars($form, $form->{dbname});
349

  
350
    my $dbh = SL::DBConnect->connect($form->{dbconnect}, $form->{dbuser}, $form->{dbpasswd}, SL::DBConnect->get_options);
351

  
352
    next unless $dbh;
353

  
354
    my $version;
355

  
356
    $query = qq|SELECT version FROM defaults|;
357
    $sth = prepare_query($form, $dbh, $query);
358
    if ($sth->execute()) {
359
      ($version) = $sth->fetchrow_array();
360
    }
361
    $sth->finish();
362

  
363
    $dbh->disconnect and next unless $version;
364

  
365
    my $update_available = $dbupdater->update_available($version) || $dbupdater->update2_available($dbh);
366
    $dbh->disconnect;
367

  
368
   if ($update_available) {
369
      my $dbinfo = {};
370
      map { $dbinfo->{$_} = $member->{$_} } grep /^db/, keys %{ $member };
371
      $dbs_needing_updates{$member->{dbhost} . "::" . $member->{dbname}} = $dbinfo;
372
    }
373
  }
374

  
375
  $main::lxdebug->leave_sub();
376

  
377
  return values %dbs_needing_updates;
378
}
379

  
380 317
sub calc_version {
381 318
  $main::lxdebug->enter_sub(2);
382 319

  
bin/mozilla/admin.pl
1
#=====================================================================
2
# LX-Office ERP
3
# Copyright (C) 2004
4
# Based on SQL-Ledger Version 2.1.9
5
# Web http://www.lx-office.org
6
#
7
#=====================================================================
8
# SQL-Ledger Accounting
9
# Copyright (c) 2002
10
#
11
#  Author: Dieter Simader
12
#   Email: dsimader@sql-ledger.org
13
#     Web: http://www.sql-ledger.org
14
#
15
#
16
# This program is free software; you can redistribute it and/or modify
17
# it under the terms of the GNU General Public License as published by
18
# the Free Software Foundation; either version 2 of the License, or
19
# (at your option) any later version.
20
#
21
# This program is distributed in the hope that it will be useful,
22
# but WITHOUT ANY WARRANTY; without even the implied warranty of
23
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
24
# GNU General Public License for more details.
25
# You should have received a copy of the GNU General Public License
26
# along with this program; if not, write to the Free Software
27
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
28
#======================================================================
29
#
30
# setup module
31
# add/edit/delete users
32
#
33
#======================================================================
34

  
35
use DBI;
36
use Encode;
37
use English qw(-no_match_vars);
38
use Fcntl;
39
use File::Copy;
40
use File::Find;
41
use File::Spec;
42
use Cwd;
43
use IO::Dir;
44
use IO::File;
45
use POSIX qw(strftime);
46
use Sys::Hostname;
47

  
48
use SL::Auth;
49
use SL::Auth::PasswordPolicy;
50
use SL::DB::AuthClient;
51
use SL::DB::AuthUser;
52
use SL::Form;
53
use SL::Iconv;
54
use SL::Mailer;
55
use SL::User;
56
use SL::Common;
57
use SL::Inifile;
58
use SL::DBUpgrade2;
59
use SL::DBUtils;
60
use SL::Template;
61

  
62
require "bin/mozilla/common.pl";
63

  
64
use strict;
65

  
66
# parserhappy(R):
67

  
68
#  $locale->text('periodic')
69
#  $locale->text('income')
70
#  $locale->text('perpetual')
71
#  $locale->text('balance')
72

  
73
our $cgi;
74
our $form;
75
our $locale;
76
our $auth;
77

  
78
sub run {
79
  $::lxdebug->enter_sub;
80
  my $session_result = shift;
81

  
82
  $form   = $::form;
83
  $locale = $::locale;
84
  $auth   = $::auth;
85

  
86
  $::request->{layout} = SL::Layout::Dispatcher->new(style => 'admin');
87
  $::request->{layout}->use_stylesheet("lx-office-erp.css");
88
  $form->{favicon}    = "favicon.ico";
89

  
90
  if ($form->{action}) {
91
    if ($auth->authenticate_root($form->{'{AUTH}admin_password'}) != $auth->OK()) {
92
      $auth->punish_wrong_login;
93
      $form->{error} = $locale->text('Incorrect password!');
94
      $auth->delete_session_value('admin_password');
95
      adminlogin();
96
    } else {
97
      if ($auth->session_tables_present()) {
98
        delete $::form->{'{AUTH}admin_password'};
99
      }
100

  
101
      call_sub($locale->findsub($form->{action}));
102
    }
103
  } else {
104
    adminlogin();
105
  }
106
  $::lxdebug->leave_sub;
107
}
108

  
109
sub adminlogin {
110
  print $::request->cgi->redirect('controller.pl?action=Admin/login');
111
}
112

  
113
sub pg_database_administration {
114
  my $form = $main::form;
115
  dbselect_source();
116
}
117

  
118
sub dbselect_source {
119
  my $form           = $main::form;
120
  my $locale         = $main::locale;
121

  
122
  $form->{dbport}    = $::auth->{DB_config}->{port} || 5432;
123
  $form->{dbuser}    = $::auth->{DB_config}->{user} || 'lxoffice';
124
  $form->{dbdefault} = 'template1';
125
  $form->{dbhost}    = $::auth->{DB_config}->{host} || 'localhost';
126

  
127
  $form->{title}     = "kivitendo / " . $locale->text('Database Administration');
128

  
129
  $form->header();
130
  print $form->parse_html_template("admin/dbadmin");
131
}
132

  
133
sub continue {
134
  call_sub($main::form->{"nextsub"});
135
}
136

  
137

  
138
sub create_dataset {
139
  my $form           = $main::form;
140
  my $locale         = $main::locale;
141

  
142
  $form->{dbsources} = join " ", map { "[${_}]" } sort User->dbsources($form);
143

  
144
  $form->{CHARTS}    = [];
145

  
146
  tie my %dir_h, 'IO::Dir', 'sql/';
147
  foreach my $item (map { s/-chart\.sql$//; $_ } sort grep { /-chart\.sql\z/ && !/Default-chart.sql\z/ } keys %dir_h) {
148
    push @{ $form->{CHARTS} }, { name     => $item,
149
                                 selected => $item eq "Germany-DATEV-SKR03EU" };
150
  }
151

  
152
  $form->{ACCOUNTING_METHODS}    = [ map { { name => $_, selected => $_ eq 'cash'     } } qw(accrual cash)       ];
153
  $form->{INVENTORY_SYSTEMS}     = [ map { { name => $_, selected => $_ eq 'periodic' } } qw(perpetual periodic) ];
154
  $form->{PROFIT_DETERMINATIONS} = [ map { { name => $_, selected => $_ eq 'income'   } } qw(balance income)     ];
155

  
156
  my $default_charset = $::lx_office_conf{system}->{dbcharset} || Common::DEFAULT_CHARSET;
157

  
158
  my $cluster_encoding = User->dbclusterencoding($form);
159
  if ($cluster_encoding && ($cluster_encoding =~ m/^(?:UTF-?8|UNICODE)$/i)) {
160
    if ($::lx_office_conf{system}->{dbcharset} !~ m/^UTF-?8$/i) {
161
      $form->show_generic_error($locale->text('The selected  PostgreSQL installation uses UTF-8 as its encoding. ' .
162
                                              'Therefore you have to configure kivitendo to use UTF-8 as well.'),
163
                                'back_button' => 1);
164
    }
165

  
166
    $form->{FORCE_DBENCODING} = 'UNICODE';
167

  
168
  } else {
169
    $form->{DBENCODINGS} = [ map { { %{$_}, selected => $_->{charset} eq $default_charset } } @Common::db_encodings ];
170
  }
171

  
172
  $form->{title} = "kivitendo " . $locale->text('Database Administration') . " / " . $locale->text('Create Dataset');
173

  
174
  $form->header();
175
  print $form->parse_html_template("admin/create_dataset");
176
}
177

  
178
sub dbcreate {
179
  my $form   = $main::form;
180
  my $locale = $main::locale;
181

  
182
  $form->isblank("db", $locale->text('Dataset missing!'));
183
  $form->isblank("defaultcurrency", $locale->text('Default currency missing!'));
184

  
185
  User->dbcreate(\%$form);
186

  
187
  $form->{title} = "kivitendo " . $locale->text('Database Administration') . " / " . $locale->text('Create Dataset');
188

  
189
  $form->header();
190
  print $form->parse_html_template("admin/dbcreate");
191
}
192

  
193
sub delete_dataset {
194
  my $form      = $main::form;
195
  my $locale    = $main::locale;
196

  
197
  my @dbsources = User->dbsources_unused($form);
198
  $form->error($locale->text('Nothing to delete!')) unless @dbsources;
199

  
200
  $form->{title}     = "kivitendo " . $locale->text('Database Administration') . " / " . $locale->text('Delete Dataset');
201
  $form->{DBSOURCES} = [ map { { "name", $_ } } sort @dbsources ];
202

  
203
  $form->header();
204
  print $form->parse_html_template("admin/delete_dataset");
205
}
206

  
207
sub dbdelete {
208
  my $form   = $main::form;
209
  my $locale = $main::locale;
210

  
211
  if (!$form->{db}) {
212
    $form->error($locale->text('No Dataset selected!'));
213
  }
214

  
215
  User->dbdelete(\%$form);
216

  
217
  $form->{title} = "kivitendo " . $locale->text('Database Administration') . " / " . $locale->text('Delete Dataset');
218
  $form->header();
219
  print $form->parse_html_template("admin/dbdelete");
220
}
221

  
222
1;
locale/de/all
19 19
  '#1 of #2 importable objects were imported.' => '#1 von #2 importierbaren Objekten wurden importiert.',
20 20
  '#1 prices were updated.'     => '#1 Preise wurden aktualisiert.',
21 21
  '(recommended) Insert the used currencies in the system. You can simply change the name of the currencies by editing the textfields above. Do not use a name of a currency that is already in use.' => '(empfohlen) Fügen Sie die verwaisten Währungen in Ihr System ein. Sie können den Namen der Währung einfach ändern, indem Sie die Felder oben bearbeiten. Benutzen Sie keine Namen von Währungen, die Sie bereits benutzen.',
22
  '* there are restrictions for the perpetual method, look at chapter "Bemerkungen zu Bestandsmethode"  in' => ' für die Bestandsmethode gibt es Einschränkungen, siehe Kapitel "Bemerkungen zu Bestandsmethode"  in',
23
  '*) Since version 2.7 these parameters ares set in the client database and not in the configuration file, details in chapter:' => '*) Seit 2.7 werden Gewinnermittlungsart, Versteuerungsart und Warenbuchungsmethode in der Mandanten-DB gesteuert und nicht mehr in der Konfigurationsdatei, Umstellungs-Details:',
24 22
  '*/'                          => '*/',
25 23
  ', if set'                    => ', falls gesetzt',
26 24
  '---please select---'         => '---bitte auswählen---',
......
115 113
  'Accounting Group saved!'     => 'Buchungsgruppe gespeichert!',
116 114
  'Accounting method'           => 'Versteuerungsart',
117 115
  'Accrual'                     => 'Soll-Versteuerung',
116
  'Accrual accounting'          => 'Soll-Versteuerung',
118 117
  'Actions'                     => 'Aktionen',
119 118
  'Active'                      => 'Aktiv',
120 119
  'Active?'                     => 'Aktiviert?',
......
177 176
  'Aktion'                      => 'Aktion',
178 177
  'All'                         => 'Alle',
179 178
  'All Accounts'                => 'Alle Konten',
180
  'All Datasets up to date!'    => 'Alle Datenbanken sind auf aktuellem Stand.',
181 179
  'All changes in that file have been reverted.' => 'Alle Änderungen in dieser Datei wurden rückgängig gemacht.',
182 180
  'All clients'                 => 'Alle Mandanten',
183
  'All database upgrades have been applied.' => 'Alle Datenbankupdates wurden eingespielt.',
184 181
  'All general ledger entries'  => 'Alle Hauptbucheinträge',
185 182
  'All groups'                  => 'Alle Gruppen',
186 183
  'All of the exports you have selected were already closed.' => 'Alle von Ihnen ausgewählten Exporte sind bereits abgeschlossen.',
......
268 265
  'Background job history'      => 'Verlauf der Hintergrund-Jobs',
269 266
  'Background jobs'             => 'Hintergrund-Jobs',
270 267
  'Background jobs and task server' => 'Hintergrund-Jobs und Task-Server',
271
  'Backup Dataset'              => 'Datenbank sichern',
272 268
  'Balance'                     => 'Bilanz',
273 269
  'Balance Sheet'               => 'Bilanz',
270
  'Balancing'                   => 'Bilanzierung',
274 271
  'Bank'                        => 'Bank',
275 272
  'Bank Code'                   => 'BLZ',
276 273
  'Bank Code (long)'            => 'Bankleitzahl (BLZ)',
......
403 400
  'Cannot transfer. <br> Reason:<br>#1' => 'Kann nicht auslagern. <br>Grund:<br>#1',
404 401
  'Carry over shipping address' => 'Lieferadresse &uuml;bernehmen',
405 402
  'Cash'                        => 'Zahlungsverkehr',
403
  'Cash accounting'             => 'Ist-Versteuerung',
404
  'Cash basis accounting'       => 'Einnahmen-Überschuss-Rechnung',
406 405
  'Cc'                          => 'Cc',
407 406
  'Cc E-mail'                   => 'CC (E-Mail)',
408 407
  'Change default bin for this parts' => 'Standardlagerplatz für diese Waren ändern',
......
726 725
  'Download sample file'        => 'Beispieldatei herunterladen',
727 726
  'Draft saved.'                => 'Entwurf gespeichert.',
728 727
  'Drawing'                     => 'Zeichnung',
729
  'Driver'                      => 'Treiber',
730 728
  'Dropdown Limit'              => 'Auswahllistenbegrenzung',
731 729
  'Due'                         => 'Fällig',
732 730
  'Due Date'                    => 'Fälligkeitsdatum',
......
1042 1040
  '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&uuml; erledigen.',
1043 1041
  '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.',
1044 1042
  '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.',
1045
  'If you want to delete such a dataset you have to edit the user(s) that are using the dataset in question and have them use another dataset.' => 'Wenn Sie eine solche Datenbank l&ouml;schen wollen, so m&uuml;ssen Sie zuerst die Benutzer bearbeiten, die die fragliche Datenbank benutzen, und sie so &auml;ndern, dass sie eine andere Datenbank benutzen.',
1043
  '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.' => 'Wenn Sie eine solche Datenbank löschen möchten, dann müssen Sie zuerst den/die Mandanten auf eine andere Datenbank umstellen, die die zu löschende Datenbank benutzen.',
1046 1044
  'If you want to set up the authentication database yourself then log in to the administration panel. kivitendo will then create the database and tables for you.' => 'Wenn Sie die Authentifizierungs-Datenbank selber einrichten wollen, so melden Sie sich im Administrationsbereich an. kivitendo wird dann die Datenbank und die erforderlichen Tabellen für Sie anlegen.',
1047 1045
  'If your old bins match exactly Bins in the Warehouse CLICK on <b>AUTOMATICALLY MATCH BINS</b>.' => 'Falls die alte Lagerplatz-Beschreibung in Stammdaten genau mit einem Lagerplatz in einem vorhandenem Lager übereinstimmt, KLICK auf <b>LAGERPLÄTZE AUTOMATISCH ZUWEISEN</b>',
1048 1046
  'Illegal characters have been removed from the following fields: #1' => 'Ungültige Zeichen wurden aus den folgenden Feldern entfernt: #1',
......
1186 1184
  'Lastcost (with X being a number)' => 'Einkaufspreis (X ist eine fortlaufende Zahl)',
1187 1185
  'Lead'                        => 'Kundenquelle',
1188 1186
  'Leads'                       => 'Leads',
1189
  'Leave host and port field empty unless you want to make a remote connection.' => 'F&uuml;r lokale Verbindungen "Rechner" und "Port" freilassen.',
1190 1187
  'Left'                        => 'Links',
1191 1188
  'Liability'                   => 'Passiva/Mittelherkunft',
1192 1189
  'Limit part selection'        => 'Artikelauswahl eingrenzen',
......
1285 1282
  'More than one #1 found matching, please be more specific.' => 'Mehr als ein #1 wurde gefunden, bitte geben Sie den Namen genauer an.',
1286 1283
  'More than one control file with the tag \'%s\' exist.' => 'Es gibt mehr als eine Kontrolldatei mit dem Tag \'%s\'.',
1287 1284
  'Multi mode not supported.'   => 'Multimodus wird nicht unterstützt.',
1288
  'Multibyte Encoding'          => 'Zeichenkodierung',
1289 1285
  'MwSt. inkl.'                 => 'MwSt. inkl.',
1290 1286
  'Name'                        => 'Name',
1291 1287
  'Name and Street'             => 'Name und Straße',
......
1320 1316
  'No Company Address given'    => 'Keine Firmenadresse hinterlegt!',
1321 1317
  'No Company Name given'       => 'Kein Firmenname hinterlegt!',
1322 1318
  'No Customer was found matching the search parameters.' => 'Zu dem Suchbegriff wurde kein Endkunde gefunden',
1323
  'No Dataset selected!'        => 'Keine Datenbank ausgewählt!',
1324 1319
  'No Vendor was found matching the search parameters.' => 'Zu dem Suchbegriff wurde kein Händler gefunden',
1325 1320
  'No action defined.'          => 'Keine Aktion definiert.',
1326 1321
  'No background job has been created yet.' => 'Es wurden noch keine Hintergrund-Jobs angelegt.',
......
1332 1327
  'No contact selected to delete' => 'Keine Ansprechperson zum Löschen ausgewählt',
1333 1328
  'No customer has been selected yet.' => 'Es wurde noch kein Kunde ausgewählt.',
1334 1329
  'No data was found.'          => 'Es wurden keine Daten gefunden.',
1335
  'No datasets have been selected.' => 'Es wurden keine Datenbanken ausgew&auml;hlt.',
1336 1330
  'No default currency'         => 'Keine Standardwährung',
1337 1331
  'No department has been created yet.' => 'Es wurde noch keine Abteilung erfasst.',
1338 1332
  'No dunnings have been selected for printing.' => 'Es wurden keine Mahnungen zum Drucken ausgew&auml;hlt.',
......
1372 1366
  'Nothing has been selected for removal.' => 'Es wurde nichts f&uuml;r eine Entnahme ausgew&auml;hlt.',
1373 1367
  'Nothing has been selected for transfer.' => 'Es wurde nichts zum Umlagern ausgew&auml;hlt.',
1374 1368
  'Nothing selected!'           => 'Es wurde nichts ausgewählt!',
1375
  'Nothing to delete!'          => 'Es konnte nichts gelöscht werden!',
1376 1369
  'Nov'                         => 'Nov',
1377 1370
  'November'                    => 'November',
1378 1371
  'Now the user must select a single Buchungsgruppe for each part instead of three distinct accounts.' => 'Der Benutzer muss nun f&uuml;r jeden Artikel nur noch die Buchungsgruppe anstelle der drei einzelnen Konten ausw&auml;hlen.',
......
1489 1482
  'Period'                      => 'Zeitraum',
1490 1483
  'Period:'                     => 'Zeitraum:',
1491 1484
  'Periodic Invoices'           => 'Wiederkehrende Rechnungen',
1485
  'Periodic inventory'          => 'Aufwandsmethode',
1492 1486
  'Periodic invoices active'    => 'Wiederkehrende Rechnungen aktiv',
1493 1487
  'Periodic invoices inactive'  => 'Wiederkehrende Rechnungen inaktiv',
1494 1488
  'Periodicity'                 => 'Periodizität',
1489
  'Perpetual inventory'         => 'Bestandsmethode',
1495 1490
  'Personal settings'           => 'Pers&ouml;nliche Einstellungen',
1496 1491
  'Pg Database Administration'  => 'Datenbankadministration',
1497 1492
  'Phone'                       => 'Telefon',
......
1528 1523
  'Please select a part from the list below.' => 'Bitte w&auml;hlen Sie einen Artikel aus der Liste aus.',
1529 1524
  'Please select a vendor from the list below.' => 'Bitte einen Händler aus der Liste auswählen',
1530 1525
  'Please select the chart of accounts this installation is using from the list below.' => 'Bitte w&auml;hlen Sie den Kontenrahmen aus, der bei dieser Installation verwendet wird.',
1526
  'Please select the dataset you want to delete:' => 'Bitte wählen Sie die zu löschende Datenbank aus:',
1531 1527
  'Please select the destination bank account for the collections:' => 'Bitte wählen Sie das Bankkonto als Ziel für die Einzüge aus:',
1532 1528
  'Please select the source bank account for the transfers:' => 'Bitte wählen Sie das Bankkonto als Quelle für die Überweisungen aus:',
1533 1529
  'Please select which client configurations you want to create.' => 'Bitte wählen Sie aus, welche Mandanten mit welchen Einstellungen angelegt werden sollen.',
1534
  'Please seletct the dataset you want to delete:' => 'Bitte w&auml;hlen Sie die zu l&ouml;schende Datenbank aus:',
1535 1530
  'Please set another taxnumber for the following taxes and run the update again:' => 'Bitte wählen Sie ein anderes Steuerautomatik-Konto für die folgenden Steuern aus uns starten Sie dann das Update erneut.',
1536 1531
  'Please specify a description for the warehouse designated for these goods.' => 'Bitte geben Sie den Namen des Ziellagers f&uuml;r die &uuml;bernommenen Daten ein.',
1537 1532
  'Plural'                      => 'Plural',
......
1690 1685
  'Requested execution date to' => 'Gewünschtes Ausführungsdatum bis',
1691 1686
  'Required by'                 => 'Lieferdatum',
1692 1687
  'Reset'                       => 'Zurücksetzen',
1693
  'Restore Dataset'             => 'Datenbank wiederherstellen',
1694 1688
  'Result'                      => 'Ergebnis',
1695 1689
  'Revenue'                     => 'Erlöskonto',
1696 1690
  'Revenue Account'             => 'Erlöskonto',
......
2040 2034
  'The creation of the authentication database failed:' => 'Das Anlegen der Authentifizierungsdatenbank schlug fehl:',
2041 2035
  'The custom variable has been deleted.' => 'Die benutzerdefinierte Variable wurde gel&ouml;scht.',
2042 2036
  'The custom variable has been saved.' => 'Die benutzerdefinierte Variable wurde gespeichert.',
2043
  'The database #1 has been successfully deleted.' => 'Die Datenbank #1 wurde erfolgreich gelöscht.',
2044 2037
  'The database for user management and authentication does not exist. You can create let kivitendo create it with the following parameters:' => 'Die Datenbank für die Benutzeranmeldung existiert nicht. Sie können Sie von kivitendo automatisch mit den folgenden Parametern anlegen lassen:',
2045 2038
  'The database host is missing.' => 'Der Datenbankhost fehlt.',
2046 2039
  'The database name is missing.' => 'Der Datenbankname fehlt.',
......
2049 2042
  'The database upgrade for the introduction of Buchungsgruppen is now complete.' => 'Das Datenbankupgrade f&uuml;r die Einf&uuml;hrung von Buchungsgruppen ist jetzt beendet.',
2050 2043
  'The database upgrade for the introduction of units is now complete.' => 'Das Datenbankupgrade zwecks Einf&uuml;hrung von Einheiten ist nun beendet.',
2051 2044
  'The database user is missing.' => 'Der Datenbankbenutzer fehlt.',
2052
  'The dataset #1 has been successfully created.' => 'Die Datenbank #1 wurde erfolgreich angelegt.',
2045
  'The dataset #1 has been created.' => 'Die Datenbank #1 wurde angelegt.',
2046
  'The dataset #1 has been deleted.' => 'Die Datenbank #1 wurde gelöscht.',
2053 2047
  'The deductible amount'       => 'Der abziehbare Skontobetrag',
2054 2048
  'The default value depends on the variable type:' => 'Die Bedeutung des Standardwertes h&auml;ngt vom Variablentypen ab:',
2055 2049
  'The delivery order has not been marked as delivered. The warehouse contents have not changed.' => 'Der Lieferschein wurde nicht als geliefert markiert. Der Lagerinhalt wurde nicht verändert.',
......
2075 2069
  'The first reason is that kivitendo contained a bug which resulted in the wrong taxkeys being recorded for transactions in which two entries are posted for the same chart with different taxkeys.' => 'Der erste Grund war ein Fehler in kivitendo, der dazu führte, dass bei einer Transaktion, bei der zwei Buchungen mit unterschiedlichen Steuerschlüsseln auf dasselbe Konto durchgeführt wurden, die falschen Steuerschlüssel gespeichert wurden.',
2076 2070
  'The follow-up date is missing.' => 'Das Wiedervorlagedatum fehlt.',
2077 2071
  'The following Buchungsgruppen have already been created:' => 'Die folgenden Buchungsgruppen wurden bereits angelegt:',
2078
  'The following Datasets need to be updated' => 'Folgende Datenbanken müssen aktualisiert werden',
2079 2072
  'The following currencies have been used, but they are not defined:' => 'Die folgenden Währungen wurden benutzt, sind aber nicht ordnungsgemäß in der Datenbank eingetragen:',
2080 2073
  'The following drafts have been saved and can be loaded.' => 'Die folgenden Entw&uuml;rfe wurden gespeichert und k&ouml;nnen geladen werden.',
2081 2074
  'The following groups are valid for this client' => 'Die folgenden Gruppen sind für diesen Mandanten gültig',
......
2134 2127
  'The project number is missing.' => 'Die Projektnummer fehlt.',
2135 2128
  'The second reason is that kivitendo allowed the user to enter the tax amount manually regardless of the taxkey used.' => 'Der zweite Grund war, dass kivitendo zuließ, dass die Benutzer beliebige, von den tatsächlichen Steuerschlüsseln unabhängige Steuerbeträge eintrugen.',
2136 2129
  'The second way is to use Perl\'s CPAN module and let it download and install the module for you.' => 'Die zweite Variante besteht darin, Perls CPAN-Modul zu benutzen und es das Modul f&uuml;r Sie installieren zu lassen.',
2137
  'The selected  PostgreSQL installation uses UTF-8 as its encoding. Therefore you have to configure kivitendo to use UTF-8 as well.' => 'Die ausgewählte PostgreSQL-Installation benutzt UTF-8 als Zeichensatz. Deshalb müssen Sie kivitendo so konfigurieren, dass es ebenfalls UTF-8 als Zeichensatz benutzt.',
2138 2130
  'The selected bank account does not exist anymore.' => 'Das ausgewählte Bankkonto existiert nicht mehr.',
2139 2131
  'The selected bin does not exist.' => 'Der ausgew&auml;hlte Lagerplatz existiert nicht.',
2140 2132
  'The selected currency'       => 'Die ausgewählte Währung',
......
2327 2319
  'Unlock System'               => 'System entsperren',
2328 2320
  'Until'                       => 'Bis',
2329 2321
  'Update'                      => 'Erneuern',
2330
  'Update Dataset'              => 'Datenbank aktualisieren',
2331 2322
  'Update Prices'               => 'Preise aktualisieren',
2332 2323
  'Update SKR04: new tax account 3804 (19%)' => 'Update SKR04: neues Steuerkonto 3804 (19%) für innergemeinschaftlichen Erwerb',
2333 2324
  'Update complete'             => 'Update beendet.',
2334 2325
  'Update prices'               => 'Preise aktualisieren',
2335 2326
  'Update prices of existing entries' => 'Preise von vorhandenen Artikeln aktualisieren',
2336 2327
  'Update properties of existing entries' => 'Eigenschaften von existierenden Einträgen aktualisieren',
2337
  'Update?'                     => 'Aktualisieren?',
2338 2328
  'Updated'                     => 'Erneuert am',
2339 2329
  'Updating existing entry in database' => 'Existierenden Eintrag in Datenbank aktualisieren',
2340 2330
  'Updating prices of existing entry in database' => 'Preis des Eintrags in der Datenbank wird aktualisiert',
templates/webpages/admin/create_dataset.html
1
[%- USE T8 %]
2
[%- USE HTML %]
3
  <h1>[% title %]</h1>
4

  
5
  <form method="post" action="admin.pl">
6
   <p><a href="admin.pl?action=pg_database_administration">[% 'Back' | $T8 %]</a></p>
7
   <p>
8
    [% 'You can either create a new database or chose an existing database.' | $T8 %]
9
    [% 'In the latter case the tables needed by kivitendo will be created in that database.' | $T8 %]
10
   </p>
11

  
12
   <table border="0">
13
    <tr>
14
     <th valign="top" align="right" nowrap>[% 'Existing Datasets' | $T8 %]</th>
15
     <td valign="top">[% HTML.escape(dbsources) %]</td>
16
    </tr>
17

  
18
    <tr>
19
     <th align="right" nowrap>[% 'Create Dataset' | $T8 %]</th>
20
     <td><input name="db"></td>
21
    </tr>
22

  
23
    <tr>
24
     <th align="right" nowrap>[% 'Multibyte Encoding' | $T8 %]</th>
25
     <td>
26
      [%- IF FORCE_DBENCODING %]
27
      <input type="hidden" name="encoding" value="[% HTML.escape(FORCE_DBENCODING) %]">
28
      [% HTML.escape(FORCE_DBENCODING) %]
29
      [%- ELSE %]
30
      <select name="encoding">
31
       [% FOREACH row = DBENCODINGS %]<option value="[% HTML.escape(row.dbencoding) %]" [% IF row.selected %]selected[% END %]>[% HTML.escape(row.label) %]</option>[% END %]
32
      </select>
33
      [%- END %]
34
     </td>
35
    </tr>
36

  
37
    <tr>
38
     <th align="right" nowrap>[% 'Default currency' | $T8 %]</th>
39
     <td><input name="defaultcurrency" value="EUR"></td>
40
     </td>
41
   </tr>
42

  
43
    <tr>
44
     <th valign="top" align="right" nowrap>[% 'Create Chart of Accounts' | $T8 %]</th>
45
     <td>
46
      <select name="chart" onChange="comment_selected_chart(this.value)">
47
       [% FOREACH row = CHARTS %]<option [% IF row.selected %]selected[% END %]>[% HTML.escape(row.name) %]</option>[% END %]
48
      </select>
49
     </td>
50
    </tr>
51

  
52
    <tr>
53
     <th valign="top" align="right" nowrap>[% 'Accounting method' | $T8 %] *</th>
54
     <td>
55
      <select name="accounting_method">
56
       [% FOREACH row = ACCOUNTING_METHODS %]<option value=[% HTML.escape(row.name) %] [% IF row.selected %]selected[% END %]>[% HTML.escape(row.name) | $T8 %]</option>[% END %]
57
      </select>
58
     </td>
59
    </tr>
60
    <tr>
61
     <th valign="top" align="right" nowrap>[% 'Inventory system' | $T8 %] *</th>
62
     <td>
63
      <select name="inventory_system">
64
       [% FOREACH row = INVENTORY_SYSTEMS %]<option value=[% HTML.escape(row.name) %] [% IF row.selected %]selected[% END %]>[% HTML.escape(row.name) | $T8 %]</option>[% END %]
65
      </select>
66
     [% '* there are restrictions for the perpetual method, look at chapter "Bemerkungen zu Bestandsmethode"  in' | $T8 %] <a href="doc/kivitendo-Dokumentation.pdf">kivitendo-Dokumentation.pdf</a>.
67
     </td>
68

  
69
    </tr>
70

  
71
    <tr>
72
     <th valign="top" align="right" nowrap>[% 'Profit determination' | $T8 %] *</th>
73
     <td>
74
      <select name="profit_determination">
75
       [% FOREACH row = PROFIT_DETERMINATIONS %]<option value=[% HTML.escape(row.name) %] [% IF row.selected %]selected[% END %]>[% HTML.escape(row.name) | $T8 %]</option>[% END %]
76
      </select>
77
     </td>
78
   </tr>
79
    <tr>
80
    <td colspan="2">
81
    [% '*) Since version 2.7 these parameters ares set in the client database and not in the configuration file, details in chapter:' | $T8 %] <a href="doc/kivitendo-Dokumentation.pdf">Kapitel Konfiguration zur Einnahmen&uuml;berschussrechnung/ Bilanzierung: EUR</a>
82
    </td>
83
    </tr>
84
   </table>
85

  
86
   <input type="hidden" name="dbuser"    value="[% HTML.escape(dbuser) %]">
87
   <input type="hidden" name="dbhost"    value="[% HTML.escape(dbhost) %]">
88
   <input type="hidden" name="dbport"    value="[% HTML.escape(dbport) %]">
89
   <input type="hidden" name="dbpasswd"  value="[% HTML.escape(dbpasswd) %]">
90
   <input type="hidden" name="dbdefault" value="[% HTML.escape(dbdefault) %]">
91

  
92
   <input type="hidden" name="callback" value="controller.pl?action=Admin/show">
93

  
94
   <input type="hidden" name="nextsub" value="dbcreate">
95

  
96
   <hr size="3" noshade>
97

  
98
   <p><input type="submit" class="submit" name="action" value="[% 'Continue' | $T8 %]"></p>
99

  
100
  </form>
101

  
102
  <script type="text/javascript">
103
    <!--
104

  
105
    function comment_selected_chart(s) {
106
      if (s == 'Austria') {
107
        alert("SKR07 Austria ist noch Stand 2002." +
108
              "\n" +
109
              "Die Buchungsgruppen sind nicht korrekt vorkonfiguriert" +
110
              "\n" +
111
              "fuer Kunden im Ausland." +
112
              "\n" +
113
              "Hinweis vom 20.09.2011");
114
      }
115
      if (s == 'Swiss-German') {
116
        alert("Hinweis: Das ist weder ein Schweizer Kontorahmen nach Kaefer noch ein " +
117
              "Schweizer KMU-Kontenrahmen, sondern ein angelehnter KMU-Kontenrahmen fuer " +
118
              "ein EDV-Dienstleistungsunternehmen mit Stand 2006 (Bspw. 32001 Hardware, " +
119
              "statt 3200 Warenertrag)." +
120
              "\n" +
121
              "Ferner sind keine Buchungsgruppe vorkonfiguriert, somit wird " +
122
              "standardmaessig keine Rechnung mit Steuer ausgewiesen." +
123
              "\n" +
124
              "Zum schnellen Testen und Zusammenhaenge verstehen waehlen Sie lieber einen " +
125
              "deutschen Kontenrahmen aus (SKR03 oder SKR04) und passen die Steuer an." +
126
              "\n" +
127
              "Hinweis vom 21.09.2011");
128
      }
129
    return true;
130
    }
131

  
132
    -->
133
  </script>
1
[%- USE HTML %][%- USE LxERP -%][%- USE T8 -%][%- USE L -%]
2

  
3
[% INCLUDE 'common/flash.html' %]
4

  
5
<h1>[% HTML.escape(title) %]</h1>
6

  
7
<p><a href="controller.pl?action=Admin/database_administration">[% LxERP.t8('Back') %]</a></p>
8

  
9
<form method="post" action="controller.pl">
10
 <p>
11
  [% LxERP.t8('You can either create a new database or chose an existing database.') %]
12
  [% LxERP.t8('In the latter case the tables needed by kivitendo will be created in that database.') %]
13
 </p>
14

  
15
 <table border="0">
16
  <tr>
17
   <th valign="top" align="right" nowrap>[% LxERP.t8('Existing Datasets') %]</th>
18
   <td valign="top">[% FOREACH db = SELF.all_dbsources %][% UNLESS loop.first %] [% END %][[% HTML.escape(db) %]][% END %]</td>
19
  </tr>
20

  
21
  <tr>
22
   <th align="right" nowrap>[% LxERP.t8('Create Dataset') %]</th>
23
   <td>[% L.input_tag('db', FORM.db) %]</td>
24
  </tr>
25

  
26
  <tr>
27
   <th align="right" nowrap>[% LxERP.t8('Default currency') %]</th>
28
   <td>[% L.input_tag('defaultcurrency', FORM.defaultcurrency || 'EUR') %]</td>
29
  </tr>
30

  
31
  <tr>
32
   <th valign="top" align="right" nowrap>[% LxERP.t8('Create Chart of Accounts') %]</th>
33
   <td>[% L.select_tag('chart', SELF.all_charts, onchange='comment_selected_chart(this.value)', default=(FORM.chart || 'Germany-DATEV-SKR03EU')) %]</td>
34
  </tr>
35

  
36
  <tr>
37
   <th valign="top" align="right" nowrap>[% LxERP.t8('Accounting method') %] *</th>
38
   <td>[% L.select_tag('accounting_method', SELF.all_accounting_methods, title_key='name', default=(FORM.accounting_method || 'cash')) %]</td>
39
  </tr>
40

  
41
  <tr>
42
   <th valign="top" align="right" nowrap>[% LxERP.t8('Inventory system') %] *</th>
43
   <td>[% L.select_tag('inventory_system', SELF.all_inventory_systems, title_key='name', default=(FORM.inventory_system || 'periodic')) %]</td>
44
  </tr>
45

  
46
  <tr>
47
   <th valign="top" align="right" nowrap>[% LxERP.t8('Profit determination') %] *</th>
48
   <td>[% L.select_tag('profit_determination', SELF.all_profit_determinations, title_key='name', default=(FORM.profit_determination || 'income')) %]</td>
49
  </tr>
50
 </table>
51

  
52
 [% L.hidden_tag("dbhost", FORM.dbhost) %]
53
 [% L.hidden_tag("dbport", FORM.dbport) %]
54
 [% L.hidden_tag("dbuser", FORM.dbuser) %]
55
 [% L.hidden_tag("dbpasswd", FORM.dbpasswd) %]
56
 [% L.hidden_tag("dbdefault", FORM.dbdefault) %]
57
 [% L.hidden_tag("action", "Admin/do_create_dataset") %]
58

  
59
 <hr size="3" noshade>
60

  
61
 <div>
62
  [% L.submit_tag('dummy', LxERP.t8('Create Dataset')) %]
63
 </div>
64

  
65
</form>
66

  
67
<script type="text/javascript">
68
 <!--
69

  
70
function comment_selected_chart(s) {
71
  if (s == 'Austria') {
72
   alert("SKR07 Austria ist noch Stand 2002." +
73
         "\n" +
74
         "Die Buchungsgruppen sind nicht korrekt vorkonfiguriert" +
75
         "\n" +
76
         "fuer Kunden im Ausland." +
77
         "\n" +
78
         "Hinweis vom 20.09.2011");
79

  
80
  } else if (s == 'Swiss-German') {
81
   alert("Hinweis: Das ist weder ein Schweizer Kontorahmen nach Kaefer noch ein " +
82
         "Schweizer KMU-Kontenrahmen, sondern ein angelehnter KMU-Kontenrahmen fuer " +
83
         "ein EDV-Dienstleistungsunternehmen mit Stand 2006 (Bspw. 32001 Hardware, " +
84
         "statt 3200 Warenertrag)." +
85
         "\n" +
86
         "Ferner sind keine Buchungsgruppe vorkonfiguriert, somit wird " +
87
         "standardmaessig keine Rechnung mit Steuer ausgewiesen." +
88
         "\n" +
89
         "Zum schnellen Testen und Zusammenhaenge verstehen waehlen Sie lieber einen " +
90
         "deutschen Kontenrahmen aus (SKR03 oder SKR04) und passen die Steuer an." +
91
         "\n" +
92
         "Hinweis vom 21.09.2011");
93
  }
94

  
95
  return true;
96
}
97
   -->
98
</script>
templates/webpages/admin/dbadmin.html
1
[%- USE T8 %]
2
[%- USE HTML %]
3
  <h1>[% title %]</h1>
4

  
5
  <form method="post" action="admin.pl">
6
   <a href="controller.pl?action=Admin/show">[% 'Back' | $T8 %]</a>
7

  
8
   <table>
9
    <tr>
10
     <td>
11

  
12
      <table>
13

  
14
       <tr>
15
        <td>
16
         <table>
17

  
18
          <tr>
19

  
20
           <th align="right">[% 'Host' | $T8 %]</th>
21
           <td><input name="dbhost" size="25" value="[% HTML.escape(dbhost) %]"></td>
22
           <th align="right">[% 'Port' | $T8 %]</th>
23
           <td><input name="dbport" size="5" value="[% HTML.escape(dbport) %]"></td>
24

  
25
          </tr>
26

  
27
          <tr>
28

  
29
           <th align="right">[% 'Database User' | $T8 %]</th>
30
           <td><input name="dbuser" size="10" value="[% HTML.escape(dbuser) %]"></td>
31
           <th align="right">[% 'Password' | $T8 %]</th>
32
           <td><input type="password" name="dbpasswd" size="10"></td>
33

  
34
          </tr>
35

  
36
          <tr>
37

  
38
           <th align="right">[% 'Database template' | $T8 %]</th>
39
           <td colspan="3"><input name="dbdefault" size="10" value="[% HTML.escape(dbdefault) %]"></td>
40

  
41
          </tr>
42

  
43
         </table>
44

  
45
        </td>
46
       </tr>
47
      </table>
48

  
49
      <input name="callback" type="hidden" value="controller.pl?action=Admin/show">
50

  
51
      <br>
52
      <input type="submit" class="submit" name="action" value="[% 'Create Dataset' | $T8 %]">
53
      <input type="submit" class="submit" name="action" value="[% 'Update Dataset' | $T8 %]">
54
      <input type="submit" class="submit" name="action" value="[% 'Delete Dataset' | $T8 %]">
55
      [% IF ALLOW_DBBACKUP %]
56
       <input type="submit" class="submit" name="action" value="[% 'Backup Dataset' | $T8 %]">
57
       <input type="submit" class="submit" name="action" value="[% 'Restore Dataset' | $T8 %]">
58
      [% END %]
59
     </td>
60
    </tr>
61
   </table>
62
  </form>
63

  
64
  <p>[% 'This is a preliminary check for existing sources. Nothing will be created or deleted at this stage!' | $T8 %]</p>
65

  
66
  <p>[% 'Leave host and port field empty unless you want to make a remote connection.' | $T8 %]</p>
1
[%- USE HTML %][%- USE LxERP -%][%- USE L -%]
2

  
3
[% INCLUDE 'common/flash.html' %]
4

  
5
<h1>[% HTML.escape(title) %]</h1>
6

  
7
<p><a href="controller.pl?action=Admin/show">[% LxERP.t8('Back') %]</a></p>
8

  
9
<form method="post" action="controller.pl">
10
 <table>
11
  <tr>
12
   <th align="right">[% LxERP.t8('Host') %]</th>
13
   <td>[% L.input_tag('dbhost', FORM.dbhost, size=30) %]</td>
14
   <th align="right">[% LxERP.t8('Port') %]</th>
15
   <td>[% L.input_tag('dbport', FORM.dbport, size=6) %]</td>
16
  </tr>
17

  
18
  <tr>
19
   <th align="right">[% LxERP.t8('Database User') %]</th>
20
   <td>[% L.input_tag("dbuser", FORM.dbuser, size=30) %]</td>
21
   <th align="right">[% LxERP.t8('Password') %]</th>
22
   <td>[% L.input_tag("dbpasswd", FORM.dbpasswd, type='password', size=30) %]</td>
23
  </tr>
24

  
25
  <tr>
26
   <th align="right">[% LxERP.t8('Database template') %]</th>
27
   <td>[% L.input_tag("dbdefault", FORM.dbdefault, size=30) %]</td>
28
  </tr>
29
 </table>
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>
37

  
38
<p>[% LxERP.t8('This is a preliminary check for existing sources. Nothing will be created or deleted at this stage!') %]</p>
templates/webpages/admin/dbcreate.html
1
[%- USE T8 %]
2
[%- USE HTML %]
3
[%- USE LxERP %][%- USE L -%]
4
  <h1>[% title %]</h1>
5

  
6
  <p>[% LxERP.t8('The dataset #1 has been successfully created.', db) | html %]</p>
7

  
8
  <p>[% L.link("controller.pl?action=Admin/show", LxERP.t8("Continue")) %]</p>
templates/webpages/admin/delete_dataset.html
1
[%- USE T8 %]
2
[%- USE HTML %]
3
 <h1>[% title %]</h1>
4
 <p><a href="admin.pl?action=pg_database_administration">[% 'Back' | $T8 %]</a></p>
5
 <form method="post" action="admin.pl">
1
[%- USE HTML %][%- USE LxERP -%][%- USE L -%]
6 2

  
7
  <p>[% 'You can only delete datasets that are not in use.' | $T8 %]
8
   [% 'If you want to delete such a dataset you have to edit the user(s) that are using the dataset in question and have them use another dataset.' | $T8 %]</p>
3
[% INCLUDE 'common/flash.html' %]
9 4

  
10
  <p>[% 'Please seletct the dataset you want to delete:' | $T8 %]
11
   <select name="db">[% FOREACH row = DBSOURCES %]<option>[% HTML.escape(row.name) %]</option>[% END %]</select>
12
  </p>
5
<h1>[% HTML.escape(title) %]</h1>
13 6

  
14
  <input type="hidden" name="dbuser"    value="[% HTML.escape(dbuser) %]">
15
  <input type="hidden" name="dbhost"    value="[% HTML.escape(dbhost) %]">
16
  <input type="hidden" name="dbport"    value="[% HTML.escape(dbport) %]">
17
  <input type="hidden" name="dbpasswd"  value="[% HTML.escape(dbpasswd) %]">
18
  <input type="hidden" name="dbdefault" value="[% HTML.escape(dbdefault) %]">
7
<p><a href="controller.pl?action=Admin/database_administration">[% LxERP.t8('Back') %]</a></p>
19 8

  
20
  <input name="callback" type="hidden" value="controller.pl?action=Admin/show">
9
<p>
10
 [% LxERP.t8('You can only delete datasets that are not in use.') %]
11
 [% 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.') %]
12
</p>
21 13

  
14
[% IF SELF.all_unused_dbsources.size %]
22 15

  
23
  <input type="hidden" name="nextsub" value="dbdelete">
16
<form method="post" action="controller.pl">
17
 <p>
18
  [% LxERP.t8('Please select the dataset you want to delete:') %]
19
  [% L.select_tag('db', SELF.all_unused_dbsources) %]
20
 </p>
24 21

  
25
  <p><input type="submit" class="submit" name="action" value="[% 'Continue' | $T8 %]"></p>
22
 [% L.hidden_tag("dbhost", FORM.dbhost) %]
23
 [% L.hidden_tag("dbport", FORM.dbport) %]
24
 [% L.hidden_tag("dbuser", FORM.dbuser) %]
25
 [% L.hidden_tag("dbpasswd", FORM.dbpasswd) %]
26
 [% L.hidden_tag("dbdefault", FORM.dbdefault) %]
27
 [% L.hidden_tag("action", "Admin/do_delete_dataset") %]
26 28

  
27
 </form>
29
 <div>
30
  [% L.submit_tag('dummy', LxERP.t8('Delete Dataset'), confirm=LxERP.t8('Are you sure?')) %]
31
 </div>
32

  
33
</form>
34

  
35
[% END %]
templates/webpages/admin/show.html
2 2

  
3 3
[% INCLUDE 'common/flash.html' %]
4 4

  
5
<h1>[% title %]</h1>
5
<h1>[% HTML.escape(title) %]</h1>
6 6

  
7 7
<div>
8 8
 [% LxERP.t8("Actions") %]:
......
13 13
 <span class="link_separator">|</span>
14 14
 [% L.link(SELF.url_for(action="new_group"), LxERP.t8("Add User Group")) %]
15 15
 <span class="link_separator">|</span>
16
 [% L.link(SELF.url_for(action="pg_database_administration", controller="admin.pl"), LxERP.t8("Pg Database Administration")) %]
16
 [% L.link(SELF.url_for(action="database_administration"), LxERP.t8("Pg Database Administration")) %]
17 17
 <span class="link_separator">|</span>
18 18
 [% L.link(SELF.url_for(action="list_printers"), LxERP.t8("Printer Management")) %]
19 19
 <span class="link_separator">|</span>

Auch abrufbar als: Unified diff