Revision bf3cc4b6
Von Moritz Bunkus vor mehr als 17 Jahren hinzugefügt
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
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".