From 47059b4082ea3918135e56e44e54d68df051f961 Mon Sep 17 00:00:00 2001 From: Kevin Carnes Date: Mon, 12 Aug 2024 10:55:57 +0200 Subject: [PATCH] Bug 36171: Fix template toolkit tags split by HTML parser It appears that the template parser parses HTML tags first and then template toolkit tags. This can cause a template toolkit tag that contains an HTML tag to have its start and end markers separated. This causes it to be treated as text that can be translated instead of a template toolkit tag. This patch searches for text sections that have a template toolkit end marker without a start and then searches for the start in previous sections. It then creates a new template toolkit section with the start and end markers. It also changes the replacement of "-->" in doc-head-open.inc so it is not interpreted as the end of the comment. It now replaces all "--" with "- -". The action buttons in the staff Lists view have also been changed to allow translation. To test: 1. You will need to edit the staff-prog.po for a language and modify the the translation for "SET line_break". You can change SET to FOO. 2. Install the translation for the language. 3. View the details of a patron in the staff interface with the language. 4. The page will have an error. 5. Apply the patch. 6. Install the translation for the language. 7. View the details of a patron in the staff interface with the language. 8. The page should now display correctly. If you want to, you can run "gulp po:update --lang LANGUAGE-CODE" to make sure that the template tag is no longer included in .po file. You can also add translations for "Edit", "Delete", and "Transfer" in messages.po to make sure that the action buttons are translated in the Lists view. --- C4/TTParser.pm | 16 ++++++++++++++++ .../prog/en/includes/doc-head-open.inc | 6 ++---- .../virtualshelves/tables/shelves_results.tt | 6 +++--- .../bootstrap/en/includes/doc-head-open.inc | 6 ++---- 4 files changed, 23 insertions(+), 11 deletions(-) diff --git a/C4/TTParser.pm b/C4/TTParser.pm index 7007fb6604..b0c09cdff2 100644 --- a/C4/TTParser.pm +++ b/C4/TTParser.pm @@ -73,6 +73,22 @@ sub text{ my $line = shift; my $work = shift; # original text my $is_cdata = shift; + # If there is a split template toolkit tag + if( $work =~ m/^(?:(?!\[%).)*?%\]/s ) { + my @strings = ($&); + my $token; + $work = $'; + while($token = pop @tokens){ + if ( $token->string =~ m/\[%.*?$/s ) { + push @tokens, C4::TmplToken->new( $`, $token->type, $token->line_number, $token->pathname ); + push @strings, $&; + last; + } else { + push @strings, $token->string; + } + } + push @tokens, C4::TmplToken->new( join('', reverse @strings), C4::TmplTokenType::DIRECTIVE, $token ? $token->line_number : $line, $self->{filename} ); + } while($work){ # if there is a template_toolkit tag if( $work =~ m/\[%.*?%\]/ ){ diff --git a/koha-tmpl/intranet-tmpl/prog/en/includes/doc-head-open.inc b/koha-tmpl/intranet-tmpl/prog/en/includes/doc-head-open.inc index a524bc683a..3649b70629 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/includes/doc-head-open.inc +++ b/koha-tmpl/intranet-tmpl/prog/en/includes/doc-head-open.inc @@ -15,10 +15,8 @@ [% TRY %] [% USE Stash %] ', '- ->') %] - [% Dumper.dump( Stash.stash() ) | $raw %] - [% END %] + [% FILTER replace('--', '- -') %] + [% Dumper.dump( Stash.stash() ) | $raw %] [% END %] --> [% CATCH %] diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/virtualshelves/tables/shelves_results.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/virtualshelves/tables/shelves_results.tt index de301479f3..abc6272c1d 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/virtualshelves/tables/shelves_results.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/virtualshelves/tables/shelves_results.tt @@ -43,7 +43,7 @@ [%~ action_block = action_block _ '' ~%] [%~ action_block = action_block _ '' ~%] [%~ action_block = action_block _ '' ~%] - [%~ action_block = action_block _ '' ~%] + [%~ action_block = action_block _ '' ~%] [%~ action_block = action_block _ ' ' ~%] [%~ END ~%] [%~ IF can_delete_shelf ~%] @@ -54,7 +54,7 @@ [%~ action_block = action_block _ '' ~%] [%~ action_block = action_block _ '' ~%] [%~ action_block = action_block _ '' ~%] - [%~ action_block = action_block _ '' ~%] + [%~ action_block = action_block _ '' ~%] [%~ action_block = action_block _ '' ~%] [%~ END ~%] [%~ IF public AND allow_transfer ~%] @@ -64,7 +64,7 @@ [%~ action_block = action_block _ '' ~%] [%~ action_block = action_block _ '' ~%] [%~ action_block = action_block _ '' ~%] - [%~ action_block = action_block _ '' ~%] + [%~ action_block = action_block _ '' ~%] [%~ action_block = action_block _ '' ~%] [%~ END ~%] [%~ ELSE ~%] diff --git a/koha-tmpl/opac-tmpl/bootstrap/en/includes/doc-head-open.inc b/koha-tmpl/opac-tmpl/bootstrap/en/includes/doc-head-open.inc index ee6282c828..86da5a6767 100644 --- a/koha-tmpl/opac-tmpl/bootstrap/en/includes/doc-head-open.inc +++ b/koha-tmpl/opac-tmpl/bootstrap/en/includes/doc-head-open.inc @@ -15,10 +15,8 @@ [% TRY %] [% USE Stash %] ', '- ->') %] - [% Dumper.dump( Stash.stash() ) | $raw %] - [% END %] + [% FILTER replace('--', '- -') %] + [% Dumper.dump( Stash.stash() ) | $raw %] [% END %] --> [% CATCH %] -- 2.34.1