Revision 81f99fbd
Von Moritz Bunkus vor mehr als 2 Jahren hinzugefügt
SL/Form.pm | ||
---|---|---|
3214 | 3214 |
today => DateTime->today, |
3215 | 3215 |
}; |
3216 | 3216 |
|
3217 |
if ($defaults->print_interpolate_variables_in_positions) { |
|
3218 |
$self->substitute_placeholders_in_template_arrays({ field => 'description', type => 'text' }, { field => 'longdescription', type => 'html' }); |
|
3219 |
} |
|
3220 |
|
|
3221 |
return $self; |
|
3222 |
} |
|
3223 |
|
|
3224 |
sub substitute_placeholders_in_template_arrays { |
|
3225 |
my ($self, @fields) = @_; |
|
3226 |
|
|
3227 |
foreach my $spec (@fields) { |
|
3228 |
$spec = { field => $spec, type => 'text' } if !ref($spec); |
|
3229 |
my $field = $spec->{field}; |
|
3230 |
|
|
3231 |
next unless exists $self->{TEMPLATE_ARRAYS} && exists $self->{TEMPLATE_ARRAYS}->{$field}; |
|
3232 |
|
|
3233 |
my $tag_start = $spec->{type} eq 'html' ? '<%' : '<%'; |
|
3234 |
my $tag_end = $spec->{type} eq 'html' ? '%>' : '%>'; |
|
3235 |
my $formatter = $spec->{type} eq 'html' ? sub { $::locale->quote_special_chars('html', $_[0] // '') } : sub { $_[0] }; |
|
3236 |
|
|
3237 |
$self->{TEMPLATE_ARRAYS}->{$field} = [ |
|
3238 |
apply { s{${tag_start}(.+?)${tag_end}}{ $formatter->($self->{$1}) }eg } |
|
3239 |
@{ $self->{TEMPLATE_ARRAYS}->{$field} } |
|
3240 |
]; |
|
3241 |
} |
|
3242 |
|
|
3217 | 3243 |
return $self; |
3218 | 3244 |
} |
3219 | 3245 |
|
Auch abrufbar als: Unified diff
Drucken: Variablen in Positionen interpolieren
Alle Variablen, die in Schleifen ausgegeben
werden (z.B. Artikelbeschreibung, Langtext, aber auch die Steuern)
werden nun ebenfalls der Interpolation unterzogen, sodass
z.B. in wiederkehrenden Rechnungen <%current_quarter%> in
Artikelbeschreibungen genutzt werden kann — aber auch Belegfelder.