X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FForm.pm;h=a6ce5afc38c30dc120b8e0c33c9937164927e6d4;hb=0a4891e33e1ee05dd0363d985fb1a2205e25c63c;hp=d7da58c160f312e8fbe35bd2d0bd3a47fbbb711b;hpb=d707f7ac60b9dbe7da50d733db1e73eae84952f7;p=kivitendo-erp.git diff --git a/SL/Form.pm b/SL/Form.pm index d7da58c16..a6ce5afc3 100644 --- a/SL/Form.pm +++ b/SL/Form.pm @@ -376,53 +376,6 @@ sub unquote { } -sub quote_html { - $main::lxdebug->enter_sub(2); - - my ($self, $str) = @_; - - my %replace = - ('order' => ['&', '"', '<', '>'], - '<' => '<', - '>' => '>', - '"' => '"', - '&' => '&', - ); - - map({ $str =~ s/$_/$replace{$_}/g; } @{ $replace{"order"} }); - - $main::lxdebug->leave_sub(2); - - return $str; -} - -sub unquote_html { - $main::lxdebug->enter_sub(2); - - my ($self, $str) = @_; - - my %replace = - ('ä' => 'ä', - 'ö' => 'ö', - 'ü' => 'ü', - 'Ä' => 'Ä', - 'Ö' => 'Ö', - 'Ü' => 'Ü', - 'ß' => 'ß', - '>' => '>', - '<' => '<', - '"' => '"', - ); - - map { $str =~ s/\Q$_\E/$replace{$_}/g; } keys %replace; - $str =~ s/\&/\&/g; - - $main::lxdebug->leave_sub(2); - - return $str; -} - - sub hide_form { my $self = shift; @@ -528,6 +481,48 @@ sub isblank { $main::lxdebug->leave_sub(); } +sub create_http_response { + $main::lxdebug->enter_sub(); + + my $self = shift; + my %params = @_; + + my $cgi = $main::cgi; + $cgi ||= CGI->new(''); + + my $base_path; + + if ($ENV{HTTP_X_FORWARDED_FOR}) { + $base_path = $ENV{HTTP_REFERER}; + $base_path =~ s|^.*?://.*?/|/|; + } else { + $base_path = $ENV{REQUEST_URI}; + } + $base_path =~ s|[^/]+$||; + $base_path =~ s|/$||; + + my $session_cookie; + if (defined $main::auth) { + my $session_cookie_value = $main::auth->get_session_id(); + $session_cookie_value ||= 'NO_SESSION'; + + $session_cookie = $cgi->cookie('-name' => $main::auth->get_session_cookie_name(), + '-value' => $session_cookie_value, + '-path' => $base_path); + } + + my %cgi_params = ('-type' => $params{content_type}); + $cgi_params{'-charset'} = $params{charset} if ($parmas{charset}); + + my $output = $cgi->header('-cookie' => $session_cookie, + %cgi_params); + + $main::lxdebug->leave_sub(); + + return $output; +} + + sub header { $main::lxdebug->enter_sub(); @@ -538,9 +533,6 @@ sub header { return; } - my $cgi = $main::cgi; - $cgi ||= CGI->new(''); - my ($stylesheet, $favicon); if ($ENV{HTTP_USER_AGENT}) { @@ -602,30 +594,8 @@ sub header { $ajax .= $item->show_javascript(); } - my $base_path; - - if ($ENV{HTTP_X_FORWARDED_FOR}) { - $base_path = $ENV{HTTP_REFERER}; - $base_path =~ s|^.*?://.*?/|/|; - } else { - $base_path = $ENV{REQUEST_URI}; - } - $base_path =~ s|[^/]+$||; - $base_path =~ s|/$||; - - my $session_cookie; - if (defined $main::auth) { - my $session_cookie_value = $main::auth->get_session_id(); - $session_cookie_value ||= 'NO_SESSION'; - - $session_cookie = $cgi->cookie('-name' => $main::auth->get_session_cookie_name(), - '-value' => $session_cookie_value, - '-path' => $base_path); - } - - print $cgi->header('-type' => 'text/html', - '-charset' => $db_charset, - '-cookie' => $session_cookie); + print $self->create_http_response('content_type' => 'text/html', + 'charset' => $db_charset,); print qq|${doctype} $self->{titlebar} @@ -1276,27 +1246,40 @@ sub get_formname_translation { return $formname_translations{$formname} } -sub generate_attachment_filename { +sub get_number_prefix_for_type { my ($self) = @_; - my $attachment_filename = $self->unquote_html($self->get_formname_translation()); my $prefix = (first { $self->{type} eq $_ } qw(invoice credit_note)) ? 'inv' : ($self->{type} =~ /_quotation$/) ? 'quo' : ($self->{type} =~ /_delivery_order$/) ? 'do' : 'ord'; + return $prefix; +} + +sub get_extension_for_format { + my ($self) = @_; + + my $extension = $self->{format} =~ /pdf/i ? ".pdf" + : $self->{format} =~ /postscript/i ? ".ps" + : $self->{format} =~ /opendocument/i ? ".odt" + : $self->{format} =~ /html/i ? ".html" + : ""; + + return $extension; +} + +sub generate_attachment_filename { + my ($self) = @_; + + my $attachment_filename = $main::locale->unquote_special_chars('HTML', $self->get_formname_translation()); + my $prefix = $self->get_number_prefix_for_type(); + if ($attachment_filename && $self->{"${prefix}number"}) { - $attachment_filename .= "_" . $self->{"${prefix}number"} - . ( $self->{format} =~ /pdf/i ? ".pdf" - : $self->{format} =~ /postscript/i ? ".ps" - : $self->{format} =~ /opendocument/i ? ".odt" - : $self->{format} =~ /html/i ? ".html" - : ""); - $attachment_filename =~ s/ /_/g; - my %umlaute = ( "ä" => "ae", "ö" => "oe", "ü" => "ue", - "Ä" => "Ae", "Ö" => "Oe", "Ü" => "Ue", "ß" => "ss"); - map { $attachment_filename =~ s/$_/$umlaute{$_}/g } keys %umlaute; + $attachment_filename .= "_" . $self->{"${prefix}number"} . $self->get_extension_for_format(); + $attachment_filename = $main::locale->quote_special_chars('filenames', $attachment_filename); + $attachment_filename =~ s|[\s/\\]+|_|g; } else { $attachment_filename = ""; } @@ -1304,6 +1287,19 @@ sub generate_attachment_filename { return $attachment_filename; } +sub generate_email_subject { + my ($self) = @_; + + my $subject = $main::locale->unquote_special_chars('HTML', $self->get_formname_translation()); + my $prefix = $self->get_number_prefix_for_type(); + + if ($subject && $self->{"${prefix}number"}) { + $subject .= " " . $self->{"${prefix}number"} + } + + return $subject; +} + sub cleanup { $main::lxdebug->enter_sub();