Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision 83381f25

Von Moritz Bunkus vor fast 11 Jahren hinzugefügt

Artikelstammdaten: Spracheinstellungen rein in eigenem Tab bearbeiten

Der alte Mechanismus öffnete ein normales Popup-Fenster, in dem eine
URL geladen wurde, die dann die Maske angezeigt hat. Das
Zurückschreiben geschah schon via JavaScript.

Mit der Methode gibt's zwei Probleme:

1. Es ist langsam, weil ein überflüssiger Roundtrip zum Server gemacht
wird. Die Informationen sind bereits alle beim initialen Anzeigen
der Maske vorhanden.
2. Es handelt sich um einen GET-Request, an den sämtliche
Übersetzungen als GET-Parameter angehängt werden. Damit kann man
problemlos in die Größenbeschränkung bei GET-Requests laufen.

Unterschiede anzeigen:

SL/IC.pm
146 146
  }
147 147

  
148 148
  # get translations
149
  $form->{language_values} = "";
150 149
  $query = qq|SELECT language_id, translation, longdescription
151 150
              FROM translation
152 151
              WHERE parts_id = ?|;
153
  my $trq = prepare_execute_query($form, $dbh, $query, conv_i($form->{id}));
154
  while (my $tr = $trq->fetchrow_hashref("NAME_lc")) {
155
    $form->{language_values} .= "---+++---" . join('--++--', @{$tr}{qw(language_id translation longdescription)});
156
  }
157
  $trq->finish;
152
  $form->{translations} = selectall_hashref_query($form, $dbh, $query, conv_i($form->{id}));
158 153

  
159 154
  # is it an orphan
160 155
  my @referencing_tables = qw(invoice orderitems inventory);
......
401 396
  # delete translation records
402 397
  do_query($form, $dbh, qq|DELETE FROM translation WHERE parts_id = ?|, conv_i($form->{id}));
403 398

  
404
  if ($form->{language_values} ne "") {
405
    foreach my $item (split(/---\+\+\+---/, $form->{language_values})) {
406
      my ($language_id, $translation, $longdescription) = split(/--\+\+--/, $item);
407
      if ($translation ne "") {
408
        $query = qq|INSERT into translation (parts_id, language_id, translation, longdescription)
409
                    VALUES ( ?, ?, ?, ? )|;
410
        @values = (conv_i($form->{id}), conv_i($language_id), $translation, $longdescription);
411
        do_query($form, $dbh, $query, @values);
412
      }
399
  my @translations = grep { $_->{language_id} && $_->{translation} } @{ $form->{translations} || [] };
400
  if (@translations) {
401
    $query = qq|INSERT into translation (parts_id, language_id, translation, longdescription)
402
                VALUES ( ?, ?, ?, ? )|;
403
    $sth   = $dbh->prepare($query);
404

  
405
    foreach my $translation (@translations) {
406
      do_statement($form, $sth, $query, conv_i($form->{id}), conv_i($translation->{language_id}), $translation->{translation}, $translation->{longdescription});
413 407
    }
408

  
409
    $sth->finish();
414 410
  }
415 411

  
416 412
  # delete price records

Auch abrufbar als: Unified diff