S:C:H:ReportGenerator: Spalteninformationen einzeln zuweisen.
authorBernd Bleßmann <bernd@kivitendo-premium.de>
Thu, 17 Dec 2020 21:50:59 +0000 (22:50 +0100)
committerBernd Bleßmann <bernd@kivitendo-premium.de>
Thu, 17 Dec 2020 22:12:53 +0000 (23:12 +0100)
Hintergrund: Das "fat-comma (=>)" interpretiert seine rechte Seite im
Listenkontext, was dazu führen kann, dass der Hash, der aufgebaut werden
soll, durcheinander gerät, wenn z.B. $def->{sub} eine Liste zurückliefert
oder gar nichts ($def->{sub} = sub { return }).

Interessant im Zusammenhang:
https://stackoverflow.com/questions/3435122/whats-the-difference-between-return-and-return-undef-in-perl

SL/Controller/Helper/ReportGenerator.pm

index 41f0c6c..513eda8 100644 (file)
@@ -128,13 +128,13 @@ sub report_generator_list_objects {
   for my $obj (@{ $params{objects} || [] }) {
     my %data = map {
       my $def = $column_defs->{$_};
-      $_ => {
-        raw_data => $def->{raw_data} ? $def->{raw_data}->($obj) : '',
-        data     => $def->{sub}      ? $def->{sub}->($obj)
-                  : $obj->can($_)    ? $obj->$_
-                  :                    $obj->{$_},
-        link     => $def->{obj_link} ? $def->{obj_link}->($obj) : '',
-      },
+      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};