X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FReportGenerator.pm;h=275e2e33a1ca80165824f314bf51504bdccad863;hb=2a0cbd885790174fa0f212e6661b30362650a42c;hp=36a81f35b869dc8e2dd9801cea3d87b437618dc5;hpb=40e0911a4ec0bbae2036839e0d9a954ea5c76d07;p=kivitendo-erp.git diff --git a/SL/ReportGenerator.pm b/SL/ReportGenerator.pm index 36a81f35b..275e2e33a 100644 --- a/SL/ReportGenerator.pm +++ b/SL/ReportGenerator.pm @@ -165,7 +165,9 @@ sub set_options { while (my ($key, $value) = each %options) { if ($key eq 'pdf_export') { - map { $self->{options}->{pdf_export}->{$_} = $value->{$_} } keys %{ $value }; + $self->{options}->{pdf_export}->{$_} = $value->{$_} for keys %{ $value }; + } elsif ($key eq 'csv_export') { + $self->{options}->{csv_export}->{$_} = $value->{$_} for keys %{ $value }; } else { $self->{options}->{$key} = $value; } @@ -415,8 +417,8 @@ sub prepare_html_content { return $variables; } -sub setup_action_bar { - my ($self, $action_bar, $variables) = @_; +sub create_action_bar_actions { + my ($self, $variables) = @_; my @actions; foreach my $type (qw(pdf csv)) { @@ -441,15 +443,31 @@ sub setup_action_bar { ); } - $action_bar = ($::request->layout->get('actionbar'))[0] unless blessed($action_bar); - $action_bar->add(@actions) if @actions; + return @actions; +} + +sub setup_action_bar { + my ($self, $variables, %params) = @_; + + my @actions = $self->create_action_bar_actions($variables); + + if ($params{action_bar_setup_hook}) { + $params{action_bar_setup_hook}->(@actions); + + } elsif (@actions) { + my $action_bar = blessed($params{action_bar}) ? $params{action_bar} : ($::request->layout->get('actionbar'))[0]; + $action_bar->add(@actions); + } } sub generate_html_content { my ($self, %params) = @_; + + $params{action_bar} //= 1; + my $variables = $self->prepare_html_content(%params); - $self->setup_action_bar($params{action_bar}, $variables) if $params{action_bar}; + $self->setup_action_bar($variables, %params) if $params{action_bar}; my $stuff = $self->{form}->parse_html_template($self->{options}->{html_template}, $variables); return $stuff; @@ -468,6 +486,7 @@ sub generate_pdf_content { }; my $self = shift; + my %params = @_; my $variables = $self->prepare_html_content(); my $form = $self->{form}; my $myconfig = $self->{myconfig}; @@ -700,13 +719,17 @@ sub generate_pdf_content { $content = $self->append_gl_pdf_attachments($form,$content); } + # 1. check if we return the report as binary pdf + if ($params{want_binary_pdf}) { + return $content; + } + # 2. check if we want and can directly print the report my $printer_command; if ($pdfopts->{print} && $pdfopts->{printer_id}) { $form->{printer_id} = $pdfopts->{printer_id}; $form->get_printer_code($myconfig); $printer_command = $form->{printer_command}; } - if ($printer_command) { $self->_print_content('printer_command' => $printer_command, 'content' => $content, @@ -714,6 +737,7 @@ sub generate_pdf_content { $form->{report_generator_printed} = 1; } else { + # 3. default: redirect http with file attached my $filename = $self->get_attachment_basename(); print qq|content-type: application/pdf\n|; @@ -957,6 +981,11 @@ The html generation function. Is invoked by generate_with_headers. The PDF generation function. It is invoked by generate_with_headers and renders the PDF with the PDF::API2 library. +If the param want_binary_pdf is set, the binary pdf stream will be returned. +If $pdfopts->{print} && $pdfopts->{printer_id} are set, the pdf will be printed (output is directed to print command). + +Otherwise and the default a html form with a downloadable file is returned. + =item generate_csv_content The CSV generation function. Uses XS_CSV to parse the information into csv.