Order: mehr fehlende Sachen in Doku ergänzt
[kivitendo-erp.git] / SL / ReportGenerator.pm
index 40beabb..451e9c0 100644 (file)
@@ -121,7 +121,7 @@ sub add_data {
         $row->{$column}->{align}   = $self->{columns}->{$column}->{align} unless (defined $row->{$column}->{align});
       }
 
-      foreach my $field (qw(data link)) {
+      foreach my $field (qw(data link link_class)) {
         map { $row->{$_}->{$field} = [ $row->{$_}->{$field} ] if (ref $row->{$_}->{$field} ne 'ARRAY') } keys %{ $row };
       }
     }
@@ -287,6 +287,7 @@ sub prepare_html_content {
       'align'                    => $column->{align},
       'link'                     => $column->{link},
       'text'                     => $column->{text},
+      'raw_header_data'          => $column->{raw_header_data},
       'show_sort_indicator'      => $name eq $opts->{sort_indicator_column},
       'sort_indicator_direction' => $opts->{sort_indicator_direction},
     };
@@ -349,8 +350,9 @@ sub prepare_html_content {
         $col->{CELL_ROWS} = [ ];
         foreach my $i (0 .. scalar(@{ $col->{data} }) - 1) {
           push @{ $col->{CELL_ROWS} }, {
-            'data' => $self->html_format($col->{data}->[$i]),
+            'data' => '' . $self->html_format($col->{data}->[$i]),
             'link' => $col->{link}->[$i],
+            link_class => $col->{link_class}->[$i],
           };
         }
 
@@ -401,6 +403,7 @@ sub prepare_html_content {
     'EXPORT_NEXTSUB'       => $self->{export}->{nextsub},
     'DATA_PRESENT'         => $self->{data_present},
     'CONTROLLER_DISPATCH'  => $opts->{controller_class},
+    'TABLE_CLASS'          => $opts->{table_class},
   };
 
   return $variables;
@@ -441,7 +444,7 @@ sub generate_pdf_content {
   my $num_columns     = scalar @visible_columns;
   my $num_header_rows = 1;
 
-  my $font_encoding   = $::lx_office_conf{system}->{dbcharset} || 'ISO-8859-15';
+  my $font_encoding   = 'UTF-8';
 
   foreach my $name (@visible_columns) {
     push @column_props, { 'justify' => $self->{columns}->{$name}->{align} eq 'right' ? 'right' : 'left' };
@@ -703,7 +706,7 @@ sub _handle_quoting_and_encoding {
   my ($self, $text, $do_unquote) = @_;
 
   $text = $main::locale->unquote_special_chars('HTML', $text) if $do_unquote;
-  $text = Encode::encode('UTF-8', $text) if $::locale->is_utf8;
+  $text = Encode::encode('UTF-8', $text);
 
   return $text;
 }
@@ -817,7 +820,7 @@ Then there are too many results, you need pagination, you want to print or expor
 
 The ReportGenerator class was designed because this exact scenario happened about half a dozen times in kivitendo.
 It's purpose is to manage all those formating, culling, sorting, and templating.
-Which makes it almost as complicated to use as doing the work for yourself.
+Which makes it almost as complicated to use as doing the work by yourself.
 
 =head1 FUNCTIONS
 
@@ -837,16 +840,21 @@ Sets the order of columns. Any columns not present here are appended in alphabet
 
 =item set_sort_indicator $column,$direction
 
-Sets sorting ot the table by specifying a column and a direction, where the direction will be evaluated to ascending if true.
-Note that this is only for displaying. The data has to be presented already sorted.
+Sets sorting of the table by specifying a column and a direction, where the direction will be evaluated to ascending if true.
+Note that this is only for displaying. The data has to have already been sorted when it was added.
 
 =item add_data \@data
 
 =item add_data \%data
 
-Adds data to the report. A given hash_ref is interpreted as a single line of data, every array_ref as a collection of lines.
-Every line will be expected to be in a kay => value format. Note that the rows have to be already sorted.
-ReportGenerator does only colum sorting on its own, and provides links to sorting and visual cue as to which column was sorted by.
+Adds data to the report. A given hash_ref is interpreted as a single line of
+data, every array_ref as a collection of lines.  Every line will be expected to
+be in a key => value format. Note that the rows have to already have been
+sorted.
+
+The ReportGenerator is only able to display pre-sorted data and to indicate by
+which column and in which direction the data has been sorted via visual clues
+in the column headers. It also provides links to invert the sort direction.
 
 =item add_separator
 
@@ -855,12 +863,12 @@ Adds a separator line to the report.
 =item add_control \%data
 
 Adds a control element to the data. Control elements are an experimental feature to add functionality to a report the regular data cannot.
-Every control element needs to set IS_CONTROL_DATA, in order to be recongnized by the template.
+Every control element needs to set IS_CONTROL_DATA, in order to be recognized by the template.
 Currently the only control element is a colspan element, which can be used as a mini header further down the report.
 
 =item clear_data
 
-Deletes all data filled into the report, but keeps options set.
+Deletes all data added to the report, but keeps options set.
 
 =item set_options %options
 
@@ -894,7 +902,7 @@ Escapes HTML characters in $value and substitutes newlines with '<br>'. Returns
 =item prepare_html_content $column,$name,@column_headers
 
 Parses the data, and sets internal data needed for certain output format. Must be called once before the template is invoked.
-Should not be called extrenally, since all render and generate functions invoke it anyway.
+Should not be called externally, since all render and generate functions invoke it anyway.
 
 =item generate_html_content