Sprachentabelle um Felder erweitert, um bei jeder Sprache auch die Ausgabeformate...
authorMoritz Bunkus <m.bunkus@linet-services.de>
Mon, 18 Dec 2006 10:24:32 +0000 (10:24 +0000)
committerMoritz Bunkus <m.bunkus@linet-services.de>
Mon, 18 Dec 2006 10:24:32 +0000 (10:24 +0000)
SL/AM.pm
bin/mozilla/am.pl
locale/de/all
locale/de/am
sql/Pg-upgrade/Pg-upgrade-2.4.0.0-2.4.0.1.sql [new file with mode: 0644]

index 6249f54..a3f7f7c 100644 (file)
--- a/SL/AM.pm
+++ b/SL/AM.pm
@@ -856,9 +856,10 @@ sub language {
   # connect to database
   my $dbh = $form->dbconnect($myconfig);
 
-  my $query = qq|SELECT id, description, template_code, article_code
-                 FROM language
-                ORDER BY 2|;
+  my $query =
+    "SELECT id, description, template_code, article_code, " .
+    "  output_numberformat, output_dateformat, output_longdates " .
+    "FROM language ORDER BY description";
 
   $sth = $dbh->prepare($query);
   $sth->execute || $form->dberror($query);
@@ -882,11 +883,11 @@ sub get_language {
   my $dbh = $form->dbconnect($myconfig);
 
   my $query =
-    qq|SELECT l.description, l.template_code, l.article_code
-                 FROM language l
-                WHERE l.id = $form->{id}|;
+    "SELECT description, template_code, article_code, " .
+    "  output_numberformat, output_dateformat, output_longdates " .
+    "FROM language WHERE id = ?";
   my $sth = $dbh->prepare($query);
-  $sth->execute || $form->dberror($query);
+  $sth->execute($form->{"id"}) || $form->dberror($query . " ($form->{id})");
 
   my $ref = $sth->fetchrow_hashref(NAME_lc);
 
@@ -899,6 +900,26 @@ sub get_language {
   $main::lxdebug->leave_sub();
 }
 
+sub get_language_details {
+  $main::lxdebug->enter_sub();
+
+  my ($self, $myconfig, $form, $id) = @_;
+
+  # connect to database
+  my $dbh = $form->dbconnect($myconfig);
+
+  my $query =
+    "SELECT template_code, " .
+    "  output_numberformat, output_dateformat, output_longdates " .
+    "FROM language WHERE id = ?";
+  my @res = $dbh->selectrow_array($query, undef, $id);
+  $dbh->disconnect;
+
+  $main::lxdebug->leave_sub();
+
+  return @res;
+}
+
 sub save_language {
   $main::lxdebug->enter_sub();
 
@@ -906,25 +927,30 @@ sub save_language {
 
   # connect to database
   my $dbh = $form->dbconnect($myconfig);
+  my (@values, $query);
 
-  $form->{description} =~ s/\'/\'\'/g;
-  $form->{article_code} =~ s/\'/\'\'/g;
-  $form->{template_code} =~ s/\'/\'\'/g;
-
+  map({ push(@values, $form->{$_}); }
+      qw(description template_code article_code
+         output_numberformat output_dateformat output_longdates));
 
   # id is the old record
   if ($form->{id}) {
-    $query = qq|UPDATE language SET
-               description = '$form->{description}',
-               template_code = '$form->{template_code}',
-               article_code = '$form->{article_code}'
-               WHERE id = $form->{id}|;
+    $query =
+      "UPDATE language SET " .
+      "  description = ?, template_code = ?, article_code = ?, " .
+      "  output_numberformat = ?, output_dateformat = ?, " .
+      "  output_longdates = ? " .
+      "WHERE id = ?";
+    push(@values, $form->{id});
   } else {
-    $query = qq|INSERT INTO language
-                (description, template_code, article_code)
-                VALUES ('$form->{description}', '$form->{template_code}', '$form->{article_code}')|;
+    $query =
+      "INSERT INTO language (" .
+      "  description, template_code, article_code, " .
+      "  output_numberformat, output_dateformat, output_longdates" .
+      ") VALUES (?, ?, ?, ?, ?, ?)";
   }
-  $dbh->do($query) || $form->dberror($query);
+  $dbh->do($query, undef, @values) ||
+    $form->dberror($query . " (" . join(", ", @values) . ")");
 
   $dbh->disconnect;
 
@@ -939,9 +965,9 @@ sub delete_language {
   # connect to database
   my $dbh = $form->dbconnect($myconfig);
 
-  $query = qq|DELETE FROM language
-             WHERE id = $form->{id}|;
-  $dbh->do($query) || $form->dberror($query);
+  my $query = "DELETE FROM language WHERE id = ?";
+  $dbh->do($query, undef, $form->{"id"}) ||
+    $form->dberror($query . " ($form->{id})");
 
   $dbh->disconnect;
 
index 1ebd598..4d3a88f 100644 (file)
@@ -1532,7 +1532,7 @@ sub list_language {
 
   $form->{title} = $locale->text('Languages');
 
-  @column_index = qw(description template_code article_code);
+  @column_index = qw(description template_code article_code output_numberformat output_dateformat output_longdates);
 
   $column_header{description} =
       qq|<th class=listheading width=60%>|
@@ -1546,6 +1546,18 @@ sub list_language {
       qq|<th class=listheading>|
     . $locale->text('Article Code')
     . qq|</th>|;
+  $column_header{output_numberformat} =
+      qq|<th class=listheading>|
+    . $locale->text('Number Format')
+    . qq|</th>|;
+  $column_header{output_dateformat} =
+      qq|<th class=listheading>|
+    . $locale->text('Date Format')
+    . qq|</th>|;
+  $column_header{output_longdates} =
+      qq|<th class=listheading>|
+    . $locale->text('Long Dates')
+    . qq|</th>|;
 
   $form->header;
 
@@ -1584,6 +1596,20 @@ sub list_language {
     $column_data{template_code}           = qq|<td align=right>$ref->{template_code}</td>|;
     $column_data{article_code} =
       qq|<td align=right>$ref->{article_code}</td>|;
+    $column_data{output_numberformat} =
+      "<td nowrap>" .
+      ($ref->{output_numberformat} ? $ref->{output_numberformat} :
+       $locale->text("use program settings")) .
+      "</td>";
+    $column_data{output_dateformat} =
+      "<td nowrap>" .
+      ($ref->{output_dateformat} ? $ref->{output_dateformat} :
+       $locale->text("use program settings")) .
+      "</td>";
+    $column_data{output_longdates} =
+      "<td nowrap>" .
+      ($ref->{output_longdates} ? $locale->text("Yes") : $locale->text("No")) .
+      "</td>";
 
     map { print "$column_data{$_}\n" } @column_index;
 
@@ -1646,6 +1672,28 @@ sub language_header {
 
   $form->header;
 
+  my $numberformat =
+    qq|<option value="">| . $locale->text("use program settings") .
+    qq|</option>|;
+  foreach $item (qw(1,000.00 1000.00 1.000,00 1000,00)) {
+    $numberformat .=
+      ($item eq $form->{output_numberformat})
+      ? "<option selected>$item"
+      : "<option>$item"
+      . "</option>";
+  }
+
+  my $dateformat =
+    qq|<option value="">| . $locale->text("use program settings") .
+    qq|</option>|;
+  foreach $item (qw(mm-dd-yy mm/dd/yy dd-mm-yy dd/mm/yy dd.mm.yy yyyy-mm-dd)) {
+    $dateformat .=
+      ($item eq $form->{output_dateformat})
+      ? "<option selected>$item"
+      : "<option>$item"
+      . "</option>";
+  }
+
   print qq|
 <body>
 
@@ -1661,15 +1709,33 @@ sub language_header {
   <tr height="5"></tr>
   <tr>
     <th align=right>| . $locale->text('Language') . qq|</th>
-    <td><input name=description size=30 value="$form->{description}"></td>
+    <td><input name=description size=30 value="| . $form->quote($form->{description}) . qq|"></td>
   <tr>
   <tr>
     <th align=right>| . $locale->text('Template Code') . qq|</th>
-    <td><input name=template_code size=5 value=$form->{template_code}></td>
+    <td><input name=template_code size=5 value="| . $form->quote($form->{template_code}) . qq|"></td>
   </tr>
   <tr>
     <th align=right>| . $locale->text('Article Code') . qq|</th>
-    <td><input name=article_code size=10 value=$form->{article_code}></td>
+    <td><input name=article_code size=10 value="| . $form->quote($form->{article_code}) . qq|"></td>
+  </tr>
+  <tr>
+    <th align=right>| . $locale->text('Number Format') . qq|</th>
+    <td><select name="output_numberformat">$numberformat</select></td>
+  </tr>
+  <tr>
+    <th align=right>| . $locale->text('Date Format') . qq|</th>
+    <td><select name="output_dateformat">$dateformat</select></td>
+  </tr>
+  <tr>
+    <th align=right>| . $locale->text('Long Dates') . qq|</th>
+    <td><input type="radio" name="output_longdates" value="1"| .
+    ($form->{output_longdates} ? " checked" : "") .
+    qq|>| . $locale->text("Yes") .
+    qq|<input type="radio" name="output_longdates" value="0"| .
+    ($form->{output_longdates} ? "" : " checked") .
+    qq|>| . $locale->text("No") .
+    qq|</td>
   </tr>
   <td colspan=2><hr size=3 noshade></td>
   </tr>
index 609e65f..2ddbf25 100644 (file)
@@ -602,6 +602,7 @@ gestartet',
   'Login Name'                  => 'Benutzername',
   'Login name missing!'         => 'Loginname fehlt.',
   'Logout'                      => 'Abmeldung',
+  'Long Dates'                  => 'Lange Monatsnamen',
   'Long Description'            => 'Langtext',
   'Lx-Office 2.4.0 introduces two new concepts: tax zones and Buchungsgruppen.' => 'Lx-Office 2.4.0 f&uuml;hrt zwei neue Konzepte ein: Steuerzonen und Buchungsgruppen.',
   'Lx-Office is about to update the database <b><TMPL_VAR dbname ESCAPE=HTML></b>. You should create a backup of the database before proceeding because the backup might not be reversible.' => 'Lx-Office wird gleich die Datenbank <b><TMPL_VAR dbname ESCAPE=HTML></b> aktualisieren. Sie sollten eine Sicherungskopie der Datenbank erstellen, bevor Sie fortfahren, da die Aktualisierung unter Umst&auml;nden nicht umkehrbar ist.',
@@ -1160,6 +1161,7 @@ gestartet',
   'soldtotal'                   => 'Verkaufte Anzahl',
   'successfully created!'       => 'wurde erfolgreich erstellt',
   'successfully deleted!'       => 'wurde erfolgreich gelöscht',
+  'use program settings'        => 'benutze Programmeinstellungen',
   'ustva'                       => 'UStVA',
   'website'                     => 'Webseite',
   'winston_export'              => 'Winston-Export',
index d37d99e..9add76b 100644 (file)
@@ -136,6 +136,7 @@ $self->{texts} = {
   'Lead'                        => 'Kundenquelle',
   'Liability'                   => 'Passiva/Mittelherkunft',
   'Link'                        => 'Verknüpfungen',
+  'Long Dates'                  => 'Lange Monatsnamen',
   'Long Description'            => 'Langtext',
   'Name'                        => 'Name',
   'Netto Terms'                 => 'Zahlungsziel netto',
@@ -147,6 +148,7 @@ $self->{texts} = {
   'No part was found matching the search parameters.' => 'Es wurde kein Artikel gefunden, auf den die Suchparameter zutreffen.',
   'No project was found matching the search parameters.' => 'Es wurde kein Projekt gefunden, auf das die Suchparameter zutreffen.',
   'Number'                      => 'Nummer',
+  'Number Format'               => 'Zahlenformat',
   'Output Number Format'        => 'Zahlenformat (Ausgabe)',
   'Part Number'                 => 'Artikelnummer',
   'Part description'            => 'Artikelbeschreibung',
@@ -267,6 +269,7 @@ $self->{texts} = {
   'lead deleted!'               => 'Kundenquelle gelöscht',
   'lead saved!'                 => 'Kundenquelle geichert',
   'service units'               => 'Dienstleistungseinheiten',
+  'use program settings'        => 'benutze Programmeinstellungen',
 };
 
 $self->{subs} = {
diff --git a/sql/Pg-upgrade/Pg-upgrade-2.4.0.0-2.4.0.1.sql b/sql/Pg-upgrade/Pg-upgrade-2.4.0.0-2.4.0.1.sql
new file mode 100644 (file)
index 0000000..b55199e
--- /dev/null
@@ -0,0 +1,3 @@
+ALTER TABLE language ADD COLUMN output_numberformat text;
+ALTER TABLE language ADD COLUMN output_dateformat text;
+ALTER TABLE language ADD COLUMN output_longdates boolean;