Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision 231a7390

Von Bernd Bleßmann vor fast 2 Jahren hinzugefügt

  • ID 231a7390c39fbd2055228485826288451277d3ee
  • Vorgänger b387f6fa
  • Nachfolger 22ab10f7

Benutzerdefinierte Datenexporte mit ReportGenerator: Direkten CSV-Export entfernt

Unterschiede anzeigen:

SL/Controller/CustomDataExport.pm
sub action_export {
my ($self) = @_;
if (!$::form->{format}) {
if (!$::form->{parameters_set}) {
$self->setup_export_action_bar;
return $self->render('custom_data_export/export', title => t8("Execute custom data export '#1'", $self->query->name));
}
......
return $self->render('custom_data_export/empty_result_set', title => t8("Execute custom data export '#1'", $self->query->name));
}
my $method = "export_as_" . $::form->{format};
$self->$method;
}
sub action_export_with_rep_gen {
my ($self) = @_;
$self->execute_query;
if (scalar(@{ $self->rows // [] }) == 1) {
$self->setup_empty_result_set_action_bar;
return $self->render('custom_data_export/empty_result_set', title => t8("Execute custom data export '#1'", $self->query->name));
}
my $report = SL::ReportGenerator->new(\%::myconfig, $::form);
my $report_name = $self->query->name;
......
$report->set_columns(%column_defs);
$report->set_column_order(@{ $self->rows->[0] });
$report->set_export_options(qw(export_with_rep_gen id parameters));
$report->set_export_options(qw(export id parameters_set parameters));
$report->set_options_from_form;
# Setup data objects (which in this case is an array of hashes).
......
for my $bar ($::request->layout->get('actionbar')) {
$bar->add(
combobox => [
action => [
t8('Export'),
],
action => [
t8('Direct Export'),
submit => [ '#form', { action => 'CustomDataExport/export' } ],
checks => [ 'kivi.validate_form' ],
],
action => [
t8('Export with RepGen'),
submit => [ '#form', { action => 'CustomDataExport/export_with_rep_gen' } ],
checks => [ 'kivi.validate_form' ],
],
action => [
t8('Export'),
submit => [ '#form', { action => 'CustomDataExport/export' } ],
checks => [ 'kivi.validate_form' ],
],
action => [
t8('Back'),
......
]);
}
sub export_as_csv {
my ($self) = @_;
my $csv = Text::CSV_XS->new({
binary => 1,
sep_char => ';',
eol => "\n",
});
my ($file_handle, $file_name) = File::Temp::tempfile;
binmode $file_handle, ":encoding(utf8)";
$csv->print($file_handle, $_) for @{ $self->rows };
$file_handle->close;
my $report_name = $self->query->name;
$report_name =~ s{[^[:word:]]+}{_}ig;
$report_name .= strftime('_%Y-%m-%d_%H-%M-%S.csv', localtime());
$self->send_file(
$file_name,
content_type => 'text/csv',
name => $report_name,
);
}
1;
templates/design40_webpages/custom_data_export/export.html
<form method="post" action="controller.pl" id="form">
[% L.hidden_tag("id", SELF.query.id) %]
[% L.hidden_tag("format", "csv") %]
[% L.hidden_tag("parameters_set", "1") %]
[% IF !SELF.parameters.size %]
<p>
templates/webpages/custom_data_export/export.html
<form method="post" action="controller.pl" id="form">
[% L.hidden_tag("id", SELF.query.id) %]
[% L.hidden_tag("format", "csv") %]
[% L.hidden_tag("parameters_set", "1") %]
[% IF !SELF.parameters.size %]
<p>

Auch abrufbar als: Unified diff