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;
}
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)) {
);
}
- $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;
};
my $self = shift;
+ my %params = @_;
my $variables = $self->prepare_html_content();
my $form = $self->{form};
my $myconfig = $self->{myconfig};
$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,
$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|;
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.