- #warn "filling in $template with $fill_in\n";
- my $data = $template->fill_in(
- PACKAGE => 'FS::SelfService::_selfservicecgi',
- HASH => $fill_in,
- ) || "Error processing template $source"; # at least print _something_
- print $cgi->header( '-expires' => 'now' );
- print $data;
+ if ( $fill_in->{'format'} ) {
+ # then override content-type, and return $fill_in->{'content'} instead
+ # of filling in a template
+ if ( $fill_in->{'format'} eq 'csv') {
+ print $cgi->header('-expires' => 'now',
+ '-Content-Type' => 'text/csv',
+ '-Content-Disposition' => "attachment;filename=output.csv",
+ );
+ } elsif ( $fill_in->{'format'} eq 'xls' ) {
+ print $cgi->header('-expires' => 'now',
+ '-Content-Type' => 'application/vnd.ms-excel',
+ '-Content-Disposition' => "attachment;filename=output.xls",
+ '-Content-Length' => length($fill_in->{'content'}),
+ );
+ } elsif ( $fill_in->{'format'} eq 'png' ) {
+ print $cgi->header('-expires' => 'now',
+ '-Content-Type' => 'image/png',
+ );
+ }
+ print $fill_in->{'content'};
+ } else { # the usual case
+ my $source = "$template_dir/$name.html";
+ my $template = new Text::Template(
+ TYPE => 'FILE',
+ SOURCE => $source,
+ DELIMITERS => [ '<%=', '%>' ],
+ UNTAINT => 1,
+ )
+ or die $Text::Template::ERROR;
+
+ my $data = $template->fill_in(
+ PACKAGE => 'FS::SelfService::_selfservicecgi',
+ HASH => $fill_in,
+ ) || "Error processing template $source"; # at least print _something_
+ print $cgi->header( '-cookie' => $cookie,
+ '-expires' => 'now' );
+ print $data;
+ }