Revision aa925eed
Von Moritz Bunkus vor fast 11 Jahren hinzugefügt
SL/Helper/CreatePDF.pm | ||
---|---|---|
2 | 2 |
|
3 | 3 |
use strict; |
4 | 4 |
|
5 |
use Carp; |
|
5 | 6 |
use Cwd; |
6 | 7 |
use English qw(-no_match_vars); |
7 | 8 |
use File::Slurp (); |
8 | 9 |
use File::Temp (); |
10 |
use List::MoreUtils qw(uniq); |
|
11 |
use List::Util qw(first); |
|
9 | 12 |
use String::ShellQuote (); |
10 | 13 |
|
11 | 14 |
use SL::Form; |
12 | 15 |
use SL::Common; |
16 |
use SL::DB::Language; |
|
17 |
use SL::DB::Printer; |
|
13 | 18 |
use SL::MoreCommon; |
14 | 19 |
use SL::Template; |
15 | 20 |
use SL::Template::LaTeX; |
16 | 21 |
|
17 | 22 |
use Exporter 'import'; |
18 |
our @EXPORT_OK = qw(create_pdf merge_pdfs); |
|
23 |
our @EXPORT_OK = qw(create_pdf merge_pdfs find_template);
|
|
19 | 24 |
our %EXPORT_TAGS = ( |
20 | 25 |
all => \@EXPORT_OK, |
21 | 26 |
); |
... | ... | |
98 | 103 |
return scalar File::Slurp::read_file($temp_name); |
99 | 104 |
} |
100 | 105 |
|
106 |
sub find_template { |
|
107 |
my ($class, %params) = @_; |
|
108 |
|
|
109 |
$params{name} or croak "Missing parameter 'name'"; |
|
110 |
|
|
111 |
my $path = $::instance_conf->get_templates; |
|
112 |
my $extension = $params{extension} || "tex"; |
|
113 |
my ($printer, $language) = ('', ''); |
|
114 |
|
|
115 |
if ($params{printer} || $params{printer_id}) { |
|
116 |
if ($params{printer} && !ref $params{printer}) { |
|
117 |
$printer = '_' . $params{printer}; |
|
118 |
} else { |
|
119 |
$printer = $params{printer} || SL::DB::Printer->new(id => $params{printer_id})->load; |
|
120 |
$printer = $printer->template_code ? '_' . $printer->template_code : ''; |
|
121 |
} |
|
122 |
} |
|
123 |
|
|
124 |
if ($params{language} || $params{language_id}) { |
|
125 |
if ($params{language} && !ref $params{language}) { |
|
126 |
$language = '_' . $params{language}; |
|
127 |
} else { |
|
128 |
$language = $params{language} || SL::DB::Language->new(id => $params{language_id})->load; |
|
129 |
$language = $language->template_code ? '_' . $language->template_code : ''; |
|
130 |
} |
|
131 |
} |
|
132 |
|
|
133 |
my @template_files = ( |
|
134 |
$params{name} . "${language}${printer}", |
|
135 |
$params{name} . "${language}", |
|
136 |
$params{name}, |
|
137 |
"default", |
|
138 |
); |
|
139 |
|
|
140 |
if ($params{email}) { |
|
141 |
unshift @template_files, ( |
|
142 |
$params{name} . "_email${language}${printer}", |
|
143 |
$params{name} . "_email${language}", |
|
144 |
); |
|
145 |
} |
|
146 |
|
|
147 |
@template_files = map { "${_}.${extension}" } uniq grep { $_ } @template_files; |
|
148 |
|
|
149 |
my $template = first { -f ($path . "/$_") } @template_files; |
|
150 |
|
|
151 |
return wantarray ? ($template, @template_files) : $template; |
|
152 |
} |
|
153 |
|
|
101 | 154 |
1; |
Auch abrufbar als: Unified diff
CreatePDF-Helfer: Funktion zum Auffinden des zu verwendenden Templates