X-Git-Url: http://wagnertech.de/gitweb/gitweb.cgi/mfinanz.git/blobdiff_plain/f0e446302ba371a2fd371a7f15168d3c125cbf3f..53593baa211863fbf66540cf1bcc36c8fb37257f:/SL/Controller/Helper/ReportGenerator.pm diff --git a/SL/Controller/Helper/ReportGenerator.pm b/SL/Controller/Helper/ReportGenerator.pm index 513eda85b..be9b8306d 100644 --- a/SL/Controller/Helper/ReportGenerator.pm +++ b/SL/Controller/Helper/ReportGenerator.pm @@ -4,6 +4,7 @@ use strict; use Carp; use List::Util qw(max); +use Scalar::Util qw(blessed); use SL::Common; use SL::MoreCommon; @@ -126,16 +127,24 @@ sub report_generator_list_objects { my @columns = $params{report}->get_visible_columns('HTML'); for my $obj (@{ $params{objects} || [] }) { - my %data = map { - my $def = $column_defs->{$_}; - my $tmp; - $tmp->{raw_data} = $def->{raw_data} ? $def->{raw_data}->($obj) : ''; - $tmp->{data} = $def->{sub} ? $def->{sub}->($obj) - : $obj->can($_) ? $obj->$_ - : $obj->{$_}; - $tmp->{link} = $def->{obj_link} ? $def->{obj_link}->($obj) : ''; - $_ => $tmp; - } @columns; + my %data; + + if (blessed($obj) && $obj->isa('SL::Controller::Helper::ReportGenerator::ControlRow::Base')) { + $obj->set_data($params{report}); + next; + + } else { + %data = map { + my $def = $column_defs->{$_}; + my $tmp; + $tmp->{raw_data} = $def->{raw_data} ? $def->{raw_data}->($obj) : ''; + $tmp->{data} = $def->{sub} ? $def->{sub}->($obj) + : $obj->can($_) ? $obj->$_ + : $obj->{$_}; + $tmp->{link} = $def->{obj_link} ? $def->{obj_link}->($obj) : ''; + $_ => $tmp; + } @columns; + } $params{data_callback}->(\%data) if $params{data_callback}; @@ -251,6 +260,14 @@ already (column definitions, title, sort handling etc). Mandatory. An array reference of RDBO models to output. +An element of the array can also be an instance of a control row, i.e. +an instance of a class derived from +C. +See also: + +L +L + =item C Optional. A callback handler (code reference) that gets called for