Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision bf3cc4b6

Von Moritz Bunkus vor mehr als 17 Jahren hinzugefügt

  • ID bf3cc4b6658497e7f7d15bbe16d1795fefb7cf05
  • Vorgänger 18da4a96
  • Nachfolger 1663bada

Einführung des Modules "Template" als schnellere Alternative (Faktor 9) zu "HTML::Template". Wird via $form->parse_html_template2() aufgerufen. Umstellung der von ReportGenerator verwendeten Vorlage auf die Verwendung von "Template".

Unterschiede anzeigen:

SL/Form.pm
40 40

  
41 41
use Cwd;
42 42
use HTML::Template;
43
use Template;
43 44
use SL::Template;
44 45
use CGI::Ajax;
45 46
use SL::DBUtils;
......
474 475
  $main::lxdebug->leave_sub();
475 476
}
476 477

  
477
sub parse_html_template {
478
sub _prepare_html_template {
478 479
  $main::lxdebug->enter_sub();
479 480

  
480 481
  my ($self, $file, $additional_params) = @_;
......
508 509
    die($info);
509 510
  }
510 511

  
511
  my $template = HTML::Template->new("filename" => $file,
512
                                     "die_on_bad_params" => 0,
513
                                     "strict" => 0,
514
                                     "case_sensitive" => 1,
515
                                     "loop_context_vars" => 1,
516
                                     "global_vars" => 1);
517

  
518
  $additional_params = {} unless ($additional_params);
519 512
  if ($self->{"DEBUG"}) {
520 513
    $additional_params->{"DEBUG"} = $self->{"DEBUG"};
521 514
  }
......
539 532
  $additional_params->{"conf_latex_templates"}        = $main::latex;
540 533
  $additional_params->{"conf_opendocument_templates"} = $main::opendocument_templates;
541 534

  
542
  my @additional_param_names = keys(%{$additional_params});
535
  $main::lxdebug->leave_sub();
536

  
537
  return $file;
538
}
539

  
540
sub parse_html_template {
541
  $main::lxdebug->enter_sub();
542

  
543
  my ($self, $file, $additional_params) = @_;
544

  
545
  $additional_params ||= { };
546

  
547
  $file = $self->_prepare_html_template($file, $additional_params);
548

  
549
  my $template = HTML::Template->new("filename" => $file,
550
                                     "die_on_bad_params" => 0,
551
                                     "strict" => 0,
552
                                     "case_sensitive" => 1,
553
                                     "loop_context_vars" => 1,
554
                                     "global_vars" => 1);
555

  
543 556
  foreach my $key ($template->param()) {
544
    my $param = $self->{$key};
545
    $param = $additional_params->{$key} if (grep(/^${key}$/, @additional_param_names));
557
    my $param = $additional_params->{$key} || $self->{$key};
546 558
    $param = [] if (($template->query("name" => $key) eq "LOOP") && (ref($param) ne "ARRAY"));
547 559
    $template->param($key => $param);
548 560
  }
......
556 568
  return $output;
557 569
}
558 570

  
571
sub parse_html_template2 {
572
  $main::lxdebug->enter_sub();
573

  
574
  my ($self, $file, $additional_params) = @_;
575

  
576
  $additional_params ||= { };
577

  
578
  $file = $self->_prepare_html_template($file, $additional_params);
579

  
580
  my $template = Template->new({ 'INTERPOLATE' => 0,
581
                                 'PRE_CHOMP'   => Template::Constants::CHOMP_COLLAPSE,
582
                                 'POST_CHOMP'  => Template::Constants::CHOMP_COLLAPSE,
583
                                 'EVAL_PERL'   => 0,
584
                                 'ABSOLUTE'    => 1,
585
                                 'CACHE_SIZE'  => 0,
586
                               }) || die;
587

  
588
  map { $additional_params->{$_} ||= $self->{$_} } keys %{ $self };
589

  
590
  my $output;
591
  $template->process($file, $additional_params, \$output);
592
  $main::lxdebug->message(0, $output);
593

  
594
  $output = $main::locale->{iconv}->convert($output) if ($main::locale);
595

  
596
  $main::lxdebug->leave_sub();
597

  
598
  return $output;
599
}
600

  
559 601
sub show_generic_error {
560 602
  my ($self, $error, $title, $action) = @_;
561 603

  
SL/InstallationCheck.pm
16 16
  { "name" => "IO::Wrap", "url" => "http://search.cpan.org/~dskoll/" },
17 17
  { "name" => "Text::CSV_XS", "url" => "http://search.cpan.org/~hmbrand/" },
18 18
  { "name" => "List::Util", "url" => "http://search.cpan.org/~gbarr/" },
19
  { "name" => "Template", "url" => "http://search.cpan.org/~abw/" },
19 20
  );
20 21

  
21 22
sub module_available {
SL/ReportGenerator.pm
279 279
      foreach my $col_name (@visible_columns) {
280 280
        my $col = $row->{$col_name};
281 281
        $col->{CELL_ROWS} = [ ];
282
        foreach my $i (0 .. scalar(@{ $col->{data} })) {
282
        foreach my $i (0 .. scalar(@{ $col->{data} }) - 1) {
283 283
          push @{ $col->{CELL_ROWS} }, {
284 284
            'data' => $self->html_format($col->{data}->[$i]),
285 285
            'link' => $col->{link}->[$i],
......
329 329
  my $self      = shift;
330 330
  my $variables = $self->prepare_html_content();
331 331

  
332
  return $self->{form}->parse_html_template('report_generator/html_report', $variables);
332
  return $self->{form}->parse_html_template2('report_generator/html_report', $variables);
333 333
}
334 334

  
335 335
sub verify_paper_size {
doc/INSTALL
34 34
* Text::CSV_XS
35 35
* IO::Wrap (aus dem Paket IO::Stringy)
36 36
* YAML
37
* Template
37 38

  
38 39
Diese Pakete k?nnen bei den unterschiedlichen Distributionen anders hei?en. 
39
(Debian: apache, postgresql, libdbi-perl, libdbd-pg-perl,  libpgperl, libhtml-template-perl, libclass-accessor-perl, libarchive-zip-perl, libtext-iconv-perl, libyaml-perl, libtext-csv-perl, libio-stringy-perl)
40
(Debian: apache, postgresql, libdbi-perl, libdbd-pg-perl,  libpgperl, libhtml-template-perl, libclass-accessor-perl, libarchive-zip-perl, libtext-iconv-perl, libyaml-perl, libtext-csv-perl, libio-stringy-perl, libtemplate-perl)
40 41
(Fedora: httpd, postgresql-server, perl-DBI, perl-DBD-Pg)
41
(SuSE: apache2, postgresql-server,  perl-DBI, perl-DBD-Pg, perl-Archive-Zip, perl-Class-Accessor, perl-Text-Iconv, perl-Text-CSV_XS, perl-HTML-Template, perl-IO-stringy)
42
(SuSE: apache2, postgresql-server,  perl-DBI, perl-DBD-Pg, perl-Archive-Zip, perl-Class-Accessor, perl-Text-Iconv, perl-Text-CSV_XS, perl-HTML-Template, perl-IO-stringy, perl-Template-Toolkit)
42 43

  
43 44

  
44 45
Da Perl-CGI-Ajax nicht als Paket f?r Distributionen bereit steht, mu? es mit der CPAN-Shell installiert werden.
doc/UPGRADE
15 15
Bitte beachten Sie auch die Liste der ben?tigten Perl-Module am Anfang
16 16
der Datei "doc/INSTALL". Besonders nach einem Upgrade auf 2.4.2 muss
17 17
sichergestellt werden, dass das Modul "YAML" installiert ist. v2.6.0
18
ben?tigt zus?tzlich die Module "Text::CSV_XS" und "IO::Wrap".
18
ben?tigt zus?tzlich die Module "Text::CSV_XS", "IO::Wrap" (aus dem
19
Paket "IO::Stringy") sowie "Template" (Paket "Template-Toolkit").
19 20

  
20 21
Das Datenbankupgrade wird automatisch gestartet, wenn sich der erste
21 22
Benutzer nach dem Upgrade der Dateien an Lx-Office anmeldet.
locale/de/locales.pl
336 336
      }
337 337

  
338 338
      # is this a template call?
339
      if (/parse_html_template\s*\(\s*[\"\']([\w\/]+)/) {
339
      if (/parse_html_template2?\s*\(\s*[\"\']([\w\/]+)/) {
340 340
        my $newfile = "$basedir/templates/webpages/$1_master.html";
341 341
        if (-f $newfile) {
342 342
#           &scanhtmlfile($newfile);
templates/webpages/report_generator/html_report_de.html
1
<body>
1
[% USE HTML %]<body>
2 2

  
3 3
 <script type="text/javascript">
4 4
  <!--
......
10 10
    -->
11 11
 </script>
12 12

  
13
 <TMPL_IF MESSAGE>
14
  <p><TMPL_VAR MESSAGE></p>
15
 </TMPL_IF>
13
 [% IF MESSAGE %]
14
  <p>[% MESSAGE %]</p>
15
 [% END %]
16 16

  
17
 <div class="listtop" width="100%"><TMPL_VAR TITLE></div>
17
 <div class="listtop" width="100%">[% TITLE %]</div>
18 18

  
19
 <TMPL_IF TOP_INFO_TEXT>
20
  <p><TMPL_VAR TOP_INFO_TEXT></p>
21
 </TMPL_IF>
19
 [% IF TOP_INFO_TEXT %]
20
  <p>[% TOP_INFO_TEXT %]</p>
21
 [% END %]
22 22

  
23
 <TMPL_VAR RAW_TOP_INFO_TEXT>
23
 [% RAW_TOP_INFO_TEXT %]
24 24

  
25 25
 <p>
26 26
  <table width="100%">
27 27
   <tr>
28
    <TMPL_LOOP COLUMN_HEADERS>
29
     <th class="listheading"><TMPL_IF link><a href="<TMPL_VAR link>"></TMPL_IF><TMPL_VAR text ESCAPE=HTML><TMPL_IF link><TMPL_IF show_sort_indicator><img border="0" src="image/<TMPL_IF sort_indicator_direction>down<TMPL_ELSE>up</TMPL_IF>.png"></TMPL_IF></a><TMPL_ELSE><TMPL_IF show_sort_indicator><img src="image/<TMPL_IF sort_indicator_direction>down<TMPL_ELSE>up</TMPL_IF>.png"></TMPL_IF></TMPL_IF></th>
30
    </TMPL_LOOP>
28
    [% FOREACH col = COLUMN_HEADERS %]
29
     <th class="listheading">[% IF col.link %]<a href="[% col.link %]">[% END %][% HTML.escape(col.text) %][% IF col.link %][% IF col.show_sort_indicator %]<img border="0" src="image/[% IF col.sort_indicator_direction %]down[% ELSE %]up[% END %].png">[% END %]</a>[% ELSE %][% IF col.show_sort_indicator %]<img src="image/[% IF col.sort_indicator_direction %]down[% ELSE %]up[% END %].png">[% END %][% END %]</th>
30
    [% END %]
31 31
   </tr>
32 32

  
33
   <TMPL_LOOP ROWS>
34
    <TMPL_IF IS_CONTROL>
35
     <TMPL_IF IS_SEPARATOR><tr><td colspan="<TMPL_VAR NUM_COLUMNS>"><hr size="3" noshade></td></tr></TMPL_IF><TMPL_IF IS_COLSPAN_DATA><tr><td colspan="<TMPL_VAR NUM_COLUMNS>"><TMPL_VAR data></td></tr></TMPL_IF>
36
     <TMPL_ELSE>
37
     <tr class="listrow<TMPL_VAR outer_idx_odd>">
38
      <TMPL_LOOP COLUMNS><td<TMPL_IF align> align="<TMPL_VAR align>"</TMPL_IF><TMPL_IF valign> valign="<TMPL_VAR valign>"</TMPL_IF><TMPL_IF class> class="<TMPL_VAR class>"</TMPL_IF>><TMPL_IF raw_data><TMPL_VAR raw_data></TMPL_IF><TMPL_LOOP CELL_ROWS><TMPL_IF data><TMPL_IF link><a href="<TMPL_VAR link>"></TMPL_IF><TMPL_VAR data><TMPL_IF link></a></TMPL_IF></TMPL_IF><TMPL_UNLESS __last__><br></TMPL_UNLESS></TMPL_LOOP></td>
39
      </TMPL_LOOP>
33
   [% FOREACH row = ROWS %]
34
    [% IF row.IS_CONTROL %]
35
     [% IF row.IS_SEPARATOR %]<tr><td colspan="[% row.NUM_COLUMNS %]"><hr size="3" noshade></td></tr>[% END %][% IF row.IS_COLSPAN_DATA %]<tr><td colspan="[% row.NUM_COLUMNS %]">[% row.data %]</td></tr>[% END %]
36
     [% ELSE %]
37
     <tr class="listrow[% row.outer_idx_odd %]">
38
      [% FOREACH col = row.COLUMNS %]<td[% IF col.align %] align="[% col.align %]"[% END %][% IF col.valign %] valign="[% col.valign %]"[% END %][% IF col.class %] class="[% col.class %]"[% END %]>[% IF col.raw_data %][% col.raw_data %][% END %][% USE iterator(col.CELL_ROWS) %][% FOREACH cell_row = iterator %][% IF cell_row.data %][% IF cell_row.link %]<a href="[% cell_row.link %]">[% END %][% cell_row.data %][% IF cell_row.link %]</a>[% END %][% END %][% UNLESS iterator.last %]<br>aa[% END %][% END %]</td>
39
      [% END %]
40 40
     </tr>
41
    </TMPL_IF>
42
   </TMPL_LOOP>
41
    [% END %]
42
   [% END %]
43 43

  
44
   <tr><td colspan="<TMPL_VAR NUM_COLUMNS>"><hr size="3" noshade></td></tr>
44
   <tr><td colspan="[% NUM_COLUMNS %]"><hr size="3" noshade></td></tr>
45 45

  
46 46
  </table>
47 47
 </p>
48 48

  
49
 <TMPL_VAR RAW_BOTTOM_INFO_TEXT>
49
 [% RAW_BOTTOM_INFO_TEXT %]
50 50

  
51
 <TMPL_IF BOTTOM_INFO_TEXT>
52
  <p><TMPL_VAR BOTTOM_INFO_TEXT></p>
53
 </TMPL_IF>
51
 [% IF BOTTOM_INFO_TEXT %]
52
  <p>[% BOTTOM_INFO_TEXT %]</p>
53
 [% END %]
54 54

  
55
 <TMPL_IF SHOW_EXPORT_BUTTONS>
56
  <form action="<TMPL_VAR script ESCAPE=HTML>" name="report_generator_form" method="post">
57
   <input type="hidden" name="login" value="<TMPL_VAR login ESCAPE=HTML>">
58
   <input type="hidden" name="password" value="<TMPL_VAR password ESCAPE=HTML>">
55
 [% IF SHOW_EXPORT_BUTTONS %]
56
  <form action="[% HTML.escape(script) %]" name="report_generator_form" method="post">
57
   <input type="hidden" name="login" value="[% HTML.escape(login) %]">
58
   <input type="hidden" name="password" value="[% HTML.escape(password) %]">
59 59

  
60
   <TMPL_LOOP EXPORT_VARIABLES><input type="hidden" name="report_generator_hidden_<TMPL_VAR key ESCAPE=HTML>" value="<TMPL_VAR value ESCAPE=HTML>">
61
   </TMPL_LOOP>
60
   [% FOREACH var = EXPORT_VARIABLES %]<input type="hidden" name="report_generator_hidden_[% var.key %]" value="[% HTML.escape(var.value) %]">
61
   [% END %]
62 62

  
63
   <input type="hidden" name="report_generator_nextsub" value="<TMPL_VAR EXPORT_NEXTSUB ESCAPE=HTML>">
64
   <input type="hidden" name="report_generator_variable_list" value="<TMPL_VAR EXPORT_VARIABLE_LIST ESCAPE=HTML>">
63
   <input type="hidden" name="report_generator_nextsub" value="[% HTML.escape(EXPORT_NEXTSUB) %]">
64
   <input type="hidden" name="report_generator_variable_list" value="[% HTML.escape(EXPORT_VARIABLE_LIST) %]">
65 65
   <input type="hidden" name="report_generator_dispatch_to" value="">
66 66
   <input type="hidden" name="action" value="report_generator_dispatcher">
67 67

  
68 68
   <p>
69 69
    Listenexport<br>
70
    <TMPL_IF ALLOW_PDF_EXPORT><button type="button" class="submit" onclick="submit_report_generator_form('report_generator_export_as_pdf')">Als PDF exportieren</button></TMPL_IF>
71
    <TMPL_IF ALLOW_CSV_EXPORT><button type="button" class="submit" onclick="submit_report_generator_form('report_generator_export_as_csv')">Als CSV exportieren</button></TMPL_IF>
70
    [% IF ALLOW_PDF_EXPORT %]<button type="button" class="submit" onclick="submit_report_generator_form('report_generator_export_as_pdf')">Als PDF exportieren</button>[% END %]
71
    [% IF ALLOW_CSV_EXPORT %]<button type="button" class="submit" onclick="submit_report_generator_form('report_generator_export_as_csv')">Als CSV exportieren</button>[% END %]
72 72
   </p>
73 73
  </form>
74
 </TMPL_IF>
74
 [% END %]
75 75

  
76 76
</body>
templates/webpages/report_generator/html_report_master.html
1
<body>
1
[% USE HTML %]<body>
2 2

  
3 3
 <script type="text/javascript">
4 4
  <!--
......
10 10
    -->
11 11
 </script>
12 12

  
13
 <TMPL_IF MESSAGE>
14
  <p><TMPL_VAR MESSAGE></p>
15
 </TMPL_IF>
13
 [% IF MESSAGE %]
14
  <p>[% MESSAGE %]</p>
15
 [% END %]
16 16

  
17
 <div class="listtop" width="100%"><TMPL_VAR TITLE></div>
17
 <div class="listtop" width="100%">[% TITLE %]</div>
18 18

  
19
 <TMPL_IF TOP_INFO_TEXT>
20
  <p><TMPL_VAR TOP_INFO_TEXT></p>
21
 </TMPL_IF>
19
 [% IF TOP_INFO_TEXT %]
20
  <p>[% TOP_INFO_TEXT %]</p>
21
 [% END %]
22 22

  
23
 <TMPL_VAR RAW_TOP_INFO_TEXT>
23
 [% RAW_TOP_INFO_TEXT %]
24 24

  
25 25
 <p>
26 26
  <table width="100%">
27 27
   <tr>
28
    <TMPL_LOOP COLUMN_HEADERS>
29
     <th class="listheading"><TMPL_IF link><a href="<TMPL_VAR link>"></TMPL_IF><TMPL_VAR text ESCAPE=HTML><TMPL_IF link><TMPL_IF show_sort_indicator><img border="0" src="image/<TMPL_IF sort_indicator_direction>down<TMPL_ELSE>up</TMPL_IF>.png"></TMPL_IF></a><TMPL_ELSE><TMPL_IF show_sort_indicator><img src="image/<TMPL_IF sort_indicator_direction>down<TMPL_ELSE>up</TMPL_IF>.png"></TMPL_IF></TMPL_IF></th>
30
    </TMPL_LOOP>
28
    [% FOREACH col = COLUMN_HEADERS %]
29
     <th class="listheading">[% IF col.link %]<a href="[% col.link %]">[% END %][% HTML.escape(col.text) %][% IF col.link %][% IF col.show_sort_indicator %]<img border="0" src="image/[% IF col.sort_indicator_direction %]down[% ELSE %]up[% END %].png">[% END %]</a>[% ELSE %][% IF col.show_sort_indicator %]<img src="image/[% IF col.sort_indicator_direction %]down[% ELSE %]up[% END %].png">[% END %][% END %]</th>
30
    [% END %]
31 31
   </tr>
32 32

  
33
   <TMPL_LOOP ROWS>
34
    <TMPL_IF IS_CONTROL>
35
     <TMPL_IF IS_SEPARATOR><tr><td colspan="<TMPL_VAR NUM_COLUMNS>"><hr size="3" noshade></td></tr></TMPL_IF><TMPL_IF IS_COLSPAN_DATA><tr><td colspan="<TMPL_VAR NUM_COLUMNS>"><TMPL_VAR data></td></tr></TMPL_IF>
36
     <TMPL_ELSE>
37
     <tr class="listrow<TMPL_VAR outer_idx_odd>">
38
      <TMPL_LOOP COLUMNS><td<TMPL_IF align> align="<TMPL_VAR align>"</TMPL_IF><TMPL_IF valign> valign="<TMPL_VAR valign>"</TMPL_IF><TMPL_IF class> class="<TMPL_VAR class>"</TMPL_IF>><TMPL_IF raw_data><TMPL_VAR raw_data></TMPL_IF><TMPL_LOOP CELL_ROWS><TMPL_IF data><TMPL_IF link><a href="<TMPL_VAR link>"></TMPL_IF><TMPL_VAR data><TMPL_IF link></a></TMPL_IF></TMPL_IF><TMPL_UNLESS __last__><br></TMPL_UNLESS></TMPL_LOOP></td>
39
      </TMPL_LOOP>
33
   [% FOREACH row = ROWS %]
34
    [% IF row.IS_CONTROL %]
35
     [% IF row.IS_SEPARATOR %]<tr><td colspan="[% row.NUM_COLUMNS %]"><hr size="3" noshade></td></tr>[% END %][% IF row.IS_COLSPAN_DATA %]<tr><td colspan="[% row.NUM_COLUMNS %]">[% row.data %]</td></tr>[% END %]
36
     [% ELSE %]
37
     <tr class="listrow[% row.outer_idx_odd %]">
38
      [% FOREACH col = row.COLUMNS %]<td[% IF col.align %] align="[% col.align %]"[% END %][% IF col.valign %] valign="[% col.valign %]"[% END %][% IF col.class %] class="[% col.class %]"[% END %]>[% IF col.raw_data %][% col.raw_data %][% END %][% USE iterator(col.CELL_ROWS) %][% FOREACH cell_row = iterator %][% IF cell_row.data %][% IF cell_row.link %]<a href="[% cell_row.link %]">[% END %][% cell_row.data %][% IF cell_row.link %]</a>[% END %][% END %][% UNLESS iterator.last %]<br>aa[% END %][% END %]</td>
39
      [% END %]
40 40
     </tr>
41
    </TMPL_IF>
42
   </TMPL_LOOP>
41
    [% END %]
42
   [% END %]
43 43

  
44
   <tr><td colspan="<TMPL_VAR NUM_COLUMNS>"><hr size="3" noshade></td></tr>
44
   <tr><td colspan="[% NUM_COLUMNS %]"><hr size="3" noshade></td></tr>
45 45

  
46 46
  </table>
47 47
 </p>
48 48

  
49
 <TMPL_VAR RAW_BOTTOM_INFO_TEXT>
49
 [% RAW_BOTTOM_INFO_TEXT %]
50 50

  
51
 <TMPL_IF BOTTOM_INFO_TEXT>
52
  <p><TMPL_VAR BOTTOM_INFO_TEXT></p>
53
 </TMPL_IF>
51
 [% IF BOTTOM_INFO_TEXT %]
52
  <p>[% BOTTOM_INFO_TEXT %]</p>
53
 [% END %]
54 54

  
55
 <TMPL_IF SHOW_EXPORT_BUTTONS>
56
  <form action="<TMPL_VAR script ESCAPE=HTML>" name="report_generator_form" method="post">
57
   <input type="hidden" name="login" value="<TMPL_VAR login ESCAPE=HTML>">
58
   <input type="hidden" name="password" value="<TMPL_VAR password ESCAPE=HTML>">
55
 [% IF SHOW_EXPORT_BUTTONS %]
56
  <form action="[% HTML.escape(script) %]" name="report_generator_form" method="post">
57
   <input type="hidden" name="login" value="[% HTML.escape(login) %]">
58
   <input type="hidden" name="password" value="[% HTML.escape(password) %]">
59 59

  
60
   <TMPL_LOOP EXPORT_VARIABLES><input type="hidden" name="report_generator_hidden_<TMPL_VAR key ESCAPE=HTML>" value="<TMPL_VAR value ESCAPE=HTML>">
61
   </TMPL_LOOP>
60
   [% FOREACH var = EXPORT_VARIABLES %]<input type="hidden" name="report_generator_hidden_[% var.key %]" value="[% HTML.escape(var.value) %]">
61
   [% END %]
62 62

  
63
   <input type="hidden" name="report_generator_nextsub" value="<TMPL_VAR EXPORT_NEXTSUB ESCAPE=HTML>">
64
   <input type="hidden" name="report_generator_variable_list" value="<TMPL_VAR EXPORT_VARIABLE_LIST ESCAPE=HTML>">
63
   <input type="hidden" name="report_generator_nextsub" value="[% HTML.escape(EXPORT_NEXTSUB) %]">
64
   <input type="hidden" name="report_generator_variable_list" value="[% HTML.escape(EXPORT_VARIABLE_LIST) %]">
65 65
   <input type="hidden" name="report_generator_dispatch_to" value="">
66 66
   <input type="hidden" name="action" value="report_generator_dispatcher">
67 67

  
68 68
   <p>
69
    <translate>List export</translate><br>
70
    <TMPL_IF ALLOW_PDF_EXPORT><button type="button" class="submit" onclick="submit_report_generator_form('report_generator_export_as_pdf')"><translate>Export as PDF</translate></button></TMPL_IF>
71
    <TMPL_IF ALLOW_CSV_EXPORT><button type="button" class="submit" onclick="submit_report_generator_form('report_generator_export_as_csv')"><translate>Export as CSV</translate></button></TMPL_IF>
69
    Listenexport<br>
70
    [% IF ALLOW_PDF_EXPORT %]<button type="button" class="submit" onclick="submit_report_generator_form('report_generator_export_as_pdf')">Als PDF exportieren</button>[% END %]
71
    [% IF ALLOW_CSV_EXPORT %]<button type="button" class="submit" onclick="submit_report_generator_form('report_generator_export_as_csv')">Als CSV exportieren</button>[% END %]
72 72
   </p>
73 73
  </form>
74
 </TMPL_IF>
74
 [% END %]
75 75

  
76 76
</body>

Auch abrufbar als: Unified diff