+__END__
+
+=pod
+
+=encoding utf8
+
+=head1 NAME
+
+SL::Controller::Helper::ReportGenerator - Mixin for controllers that
+use the L<SL::ReportGenerator> class
+
+=head1 SYNOPSIS
+
+ package SL::Controller::Unicorn;
+
+ use SL::Controller::Helper::ReportGenerator;
+
+ sub action_list {
+ my ($self) = @_;
+
+ # Set up the report generator instance. In this example this is
+ # hidden in "prepare_report".
+ my $report = $self->prepare_report;
+
+ # Get objects from database.
+ my $orders = SL::DB::Manager::Order->get_all(...);
+
+ # Let report generator create the output.
+ $self->report_generator_list_objects(
+ report => $report,
+ objects => $orders,
+ );
+ }
+
+=head1 FUNCTIONS
+
+=over 4
+
+=item C<action_report_generator_back>
+
+This is the controller action that's called from the one of the report
+generator's 'export options' pages when the user clicks on the 'back'
+button.
+
+It is never called from a controller manually and should just work
+as-is.
+
+=item C<action_report_generator_export_as_csv>
+
+This is the controller action that's called from the generated report
+when the user wants to export as CSV. First the CSV export options are
+shown and afterwards the CSV file is generated and offered for
+download.
+
+It is never called from a controller manually and should just work
+as-is.
+
+=item C<action_report_generator_export_as_pdf>
+
+This is the controller action that's called from the generated report
+when the user wants to export as PDF. First the PDF export options are
+shown and afterwards the PDF file is generated and offered for
+download.
+
+It is never called from a controller manually and should just work
+as-is.
+
+=item C<report_generator_do>
+
+This is a common function that's called from
+L<action_report_generator_back>,
+L<action_report_generator_export_as_csv> and
+L<action_report_generator_export_as_pdf>. It handles common options
+and report generation after options have been set.
+
+It is never called from a controller manually and should just work
+as-is.
+
+=item C<report_generator_list_objects %params>
+
+Iterates over all objects, creates the actual rows of data, hands them
+over to the report generator and lets the report generator create the
+output.
+
+C<%params> can contain the following values:
+
+=over 2
+
+=item C<report>
+
+Mandatory. An instance of L<SL::ReportGenerator> that has been set up
+already (column definitions, title, sort handling etc).
+
+=item C<objects>
+
+Mandatory. An array reference of RDBO models to output.
+
+=item C<data_callback>
+
+Optional. A callback handler (code reference) that gets called for
+each row before it is passed to the report generator. The row passed
+will be the handler's first and only argument (a hash reference). It's
+the same hash reference that's passed to
+L<SL::ReportGenrator/add_data>.
+
+=item C<options>
+
+An optional hash reference that's passed verbatim to the function
+L<SL::ReportGenerator/generate_with_headers>.
+
+=back
+
+=back
+
+=head1 BUGS
+
+Nothing here yet.
+
+=head1 AUTHOR
+
+Moritz Bunkus E<lt>m.bunkus@linet-services.deE<gt>
+
+=cut