X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FTemplate%2FSimple.pm;h=35e6cc1e94edf4404da5065142c8adb8b5f64cfd;hb=47db6ae13df64092d401896ec476b9335e9ec807;hp=8696796bc914b40681cf5e6c379885abf8ff87b4;hpb=7e0814bb34ae9e6c424aa10e37ccb9ca4541fc49;p=kivitendo-erp.git diff --git a/SL/Template/Simple.pm b/SL/Template/Simple.pm index 8696796bc..35e6cc1e9 100644 --- a/SL/Template/Simple.pm +++ b/SL/Template/Simple.pm @@ -32,8 +32,15 @@ sub new { sub _init { my ($self, %params) = @_; + $params{myconfig} ||= \%::myconfig; + $params{userspath} ||= $::lx_office_conf{paths}->{userspath}; + $self->{$_} = $params{$_} for keys %params; + $self->{variable_content_types} ||= {}; + $self->{variable_content_types}->{$_} = lc $self->{variable_content_types}->{$_} for keys %{ $self->{variable_content_types} }; + $self->{default_variable_content_type} = 'text'; + $self->{error} = undef; $self->{quot_re} = '"'; @@ -135,7 +142,7 @@ sub substitute_vars { my $value = $self->_get_loop_variable($var, 0, @indices); $value = $form->parse_amount({ numberformat => $::myconfig{output_numberformat} || $::myconfig{numberformat} }, $value) if $options{NOFORMAT}; - $value = $self->format_string($value) unless $options{NOESCAPE}; + $value = $self->format_string($value, $var) unless $options{NOESCAPE}; substr($text, $tag_pos, $tag_len, $value); } @@ -155,43 +162,43 @@ sub _parse_block_if { $$new_contents .= $self->substitute_vars(substr($$contents, 0, $pos_if), @indices); substr($$contents, 0, $pos_if) = ""; - if ($$contents !~ m/^$self->{tag_start_qm}if + if ($$contents !~ m/^( $self->{tag_start_qm}if \s* - (not\b|\!)? # $1 -- Eventuelle Negierung + (not\b|\!)? # $2 -- Eventuelle Negierung \s+ - (\b.+?\b) # $2 -- Name der zu überprüfenden Variablen - ( # $3 -- Beginn des optionalen Vergleiches + (\b.+?\b) # $3 -- Name der zu überprüfenden Variablen + ( # $4 -- Beginn des optionalen Vergleiches \s* - ([!=]) # $4 -- Negierung des Vergleiches speichern - ([=~]) # $5 -- Art des Vergleiches speichern + ([!=]) # $5 -- Negierung des Vergleiches speichern + ([=~]) # $6 -- Art des Vergleiches speichern \s* - ( # $6 -- Gequoteter String oder Bareword + ( # $7 -- Gequoteter String oder Bareword $self->{quot_re} - (.*?)(?{quot_re} | - (\b.+?\b) # $8 -- Bareword -- als Index für $form benutzen + (\b.+?\b) # $9 -- Bareword -- als Index für $form benutzen ) )? \s* - $self->{tag_end_qm} + $self->{tag_end_qm} ) /x) { $self->{"error"} = "Malformed $self->{tag_start}if$self->{tag_end}."; $main::lxdebug->leave_sub(); return undef; } - my $not = $1; - my $var = $2; - my $comparison = $3; # Optionaler Match um $4..$8 - my $operator_neg = $4; # '=' oder '!' oder undef, wenn kein Vergleich erkannt - my $operator_type = $5; # '=' oder '~' für Stringvergleich oder Regex - my $quoted_word = $7; # nur gültig, wenn quoted string angegeben (siehe unten); dann "value" aus <%if var == "value" %> - my $bareword = $8; # undef, falls quoted string angegeben wurde; andernfalls "othervar" aus <%if var == othervar %> + my $not = $2; + my $var = $3; + my $comparison = $4; # Optionaler Match um $4..$8 + my $operator_neg = $5; # '=' oder '!' oder undef, wenn kein Vergleich erkannt + my $operator_type = $6; # '=' oder '~' für Stringvergleich oder Regex + my $quoted_word = $8; # nur gültig, wenn quoted string angegeben (siehe unten); dann "value" aus <%if var == "value" %> + my $bareword = $9; # undef, falls quoted string angegeben wurde; andernfalls "othervar" aus <%if var == othervar %> $not = !$not if ($operator_neg && $operator_neg eq '!'); - substr($$contents, 0, length($&)) = ""; + substr($$contents, 0, length($1)) = ""; my $block; ($block, $$contents) = $self->find_end($$contents, 0, "$var $comparison", $not);