X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;ds=inline;f=SL%2FForm.pm;h=e5b1e745906d36873c7973d646a3a89c905a3f5f;hb=a4c8924a3a105f8b4ba750a5911ed0099f9bb4bc;hp=43a3a39cb8946beee8d9c18b2526d066dede81fa;hpb=d90b14b107fc7859eb0b197208276919ded2079d;p=kivitendo-erp.git
diff --git a/SL/Form.pm b/SL/Form.pm
index 43a3a39cb..e5b1e7459 100644
--- a/SL/Form.pm
+++ b/SL/Form.pm
@@ -150,7 +150,7 @@ sub _flatten_variables_rec {
$first_array_entry = 0;
}
} else {
- @result = ({ 'key' => $prefix . $key . ($first_array_entry ? '[+]' : '[]'), 'value' => $element });
+ push @result, { 'key' => $prefix . $key . '[]', 'value' => $element };
}
}
}
@@ -194,36 +194,6 @@ sub flatten_standard_variables {
return @variables;
}
-sub debug {
- $main::lxdebug->enter_sub();
-
- my ($self) = @_;
-
- print "\n";
-
- map { print "$_ = $self->{$_}\n" } (sort keys %{$self});
-
- $main::lxdebug->leave_sub();
-}
-
-sub dumper {
- $main::lxdebug->enter_sub(2);
-
- my $self = shift;
- my $password = $self->{password};
-
- $self->{password} = 'X' x 8;
-
- local $Data::Dumper::Sortkeys = 1;
- my $output = Dumper($self);
-
- $self->{password} = $password;
-
- $main::lxdebug->leave_sub(2);
-
- return $output;
-}
-
sub escape {
my ($self, $str) = @_;
@@ -279,7 +249,7 @@ sub hide_form {
sub throw_on_error {
my ($self, $code) = @_;
- local $self->{__ERROR_HANDLER} = sub { die SL::X::FormError->new($_[0]) };
+ local $self->{__ERROR_HANDLER} = sub { SL::X::FormError->throw(error => $_[0]) };
$code->();
}
@@ -341,9 +311,9 @@ sub numtextrows {
sub dberror {
my ($self, $msg) = @_;
- die SL::X::DBError->new(
- msg => $msg,
- error => $DBI::errstr,
+ SL::X::DBError->throw(
+ msg => $msg,
+ db_error => $DBI::errstr,
);
}
@@ -427,7 +397,7 @@ sub create_http_response {
$cgi_params{'-charset'} = $params{charset} if ($params{charset});
$cgi_params{'-cookie'} = $session_cookie if ($session_cookie);
- map { $cgi_params{'-' . $_} = $params{$_} if exists $params{$_} } qw(content_disposition content_length);
+ map { $cgi_params{'-' . $_} = $params{$_} if exists $params{$_} } qw(content_disposition content_length status);
my $output = $cgi->header(%cgi_params);
@@ -1065,7 +1035,14 @@ sub parse_template {
}
if ($self->{media} eq 'file') {
copy(join('/', $self->{cwd}, $userspath, $self->{tmpfile}), $out =~ m|^/| ? $out : join('/', $self->{cwd}, $out)) if $template->uses_temp_file;
- Common::copy_file_to_webdav_folder($self) if $copy_to_webdav;
+
+ if ($copy_to_webdav) {
+ if (my $error = Common::copy_file_to_webdav_folder($self)) {
+ chdir("$self->{cwd}");
+ $self->error($error);
+ }
+ }
+
if (!$self->{preview} && $self->doc_storage_enabled)
{
$self->{attachment_filename} ||= $self->generate_attachment_filename;
@@ -1079,7 +1056,12 @@ sub parse_template {
return;
}
- Common::copy_file_to_webdav_folder($self) if $copy_to_webdav;
+ if ($copy_to_webdav) {
+ if (my $error = Common::copy_file_to_webdav_folder($self)) {
+ chdir("$self->{cwd}");
+ $self->error($error);
+ }
+ }
if ( !$self->{preview} && $ext_for_format eq 'pdf' && $self->doc_storage_enabled) {
$self->{attachment_filename} ||= $self->generate_attachment_filename;
@@ -1140,7 +1122,7 @@ sub send_email {
my @attfiles;
# if we send html or plain text inline
if (($self->{format} eq 'html') && ($self->{sendmode} eq 'inline')) {
- $mail->{contenttype} = "text/html";
+ $mail->{content_type} = "text/html";
$mail->{message} =~ s/\r//g;
$mail->{message} =~ s/\n/
\n/g;
$full_signature =~ s/\n/
\n/g;
@@ -1374,7 +1356,7 @@ sub generate_email_subject {
sub generate_email_body {
$main::lxdebug->enter_sub();
- my ($self) = @_;
+ my ($self, %params) = @_;
# simple german and english will work grammatically (most european languages as well)
# Dear Mr Alan Greenspan:
# Sehr geehrte Frau Meyer,
@@ -1382,7 +1364,7 @@ sub generate_email_body {
# Gentile Signora Ferrari,
my $body = '';
- if ($self->{cp_id}) {
+ if ($self->{cp_id} && !$params{record_email}) {
my $givenname = SL::DB::Contact->load_cached($self->{cp_id})->cp_givenname; # for qw(gender givename name);
my $name = SL::DB::Contact->load_cached($self->{cp_id})->cp_name; # for qw(gender givename name);
my $gender = SL::DB::Contact->load_cached($self->{cp_id})->cp_gender; # for qw(gender givename name);
@@ -1890,7 +1872,7 @@ sub add_shipto {
my @values;
foreach my $item (qw(name department_1 department_2 street zipcode city country gln
- contact cp_gender phone fax email)) {
+ contact phone fax email)) {
if ($self->{"shipto$item"}) {
$shipto = 1 if ($self->{$item} ne $self->{"shipto$item"});
}
@@ -3437,6 +3419,14 @@ sub prepare_for_printing {
$self->reformat_numbers($output_numberformat, $precision, @{ $field_list });
}
+ # Translate units
+ if (($self->{language} // '') ne '') {
+ my $template_arrays = $self->{TEMPLATE_ARRAYS} || $self;
+ for my $idx (0..scalar(@{ $template_arrays->{unit} }) - 1) {
+ $template_arrays->{unit}->[$idx] = AM->translate_units($self, $self->{language}, $template_arrays->{unit}->[$idx], $template_arrays->{qty}->[$idx])
+ }
+ }
+
$self->{template_meta} = {
formname => $self->{formname},
language => SL::DB::Manager::Language->find_by_or_create(id => $self->{language_id} || undef),
@@ -3615,29 +3605,6 @@ sub create_email_signature {
};
-sub layout {
- my ($self) = @_;
- $::lxdebug->enter_sub;
-
- my %style_to_script_map = (
- v3 => 'v3',
- neu => 'new',
- );
-
- my $menu_script = $style_to_script_map{$::myconfig{menustyle}} || '';
-
- package main;
- require "bin/mozilla/menu$menu_script.pl";
- package Form;
- require SL::Controller::FrameHeader;
-
-
- my $layout = SL::Controller::FrameHeader->new->action_header . ::render();
-
- $::lxdebug->leave_sub;
- return $layout;
-}
-
sub calculate_tax {
# this function calculates the net amount and tax for the lines in ar, ap and
# gl and is used for update as well as post. When used with update the return