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.

The action buttons in the staff Lists view have 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.

Signed-off-by: Victor Grousset/tuxayo <victor@tuxayo.net>

Amended-by: Jonathan Druart
Tidy

Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
(cherry picked from commit cf634fa014)
Signed-off-by: Lucas Gass <lucas@bywatersolutions.com>
This commit is contained in:
Kevin Carnes 2024-08-12 10:55:57 +02:00 committed by Lucas Gass
parent 6264f861a3
commit 2d2e2bbb5a
2 changed files with 23 additions and 3 deletions

View File

@ -73,6 +73,26 @@ 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/\[%.*?%\]/ ){

View File

@ -43,7 +43,7 @@
[%~ action_block = action_block _ '<input type="hidden" name="op" value="edit_form" />' ~%]
[%~ action_block = action_block _ '<input type="hidden" name="public" value="' _ public _ '" />' ~%]
[%~ action_block = action_block _ '<input type="hidden" name="referer" value="list" />' ~%]
[%~ action_block = action_block _ '<button class="editshelf btn btn-default btn-xs"><i class="fa-solid fa-pencil" aria-hidden="true"></i> Edit</button>' ~%]
[%~ action_block = action_block _ '<button class="editshelf btn btn-default btn-xs"><i class="fa-solid fa-pencil" aria-hidden="true"></i> ' _ t("Edit") _ '</button>' ~%]
[%~ action_block = action_block _ '</form> ' ~%]
[%~ END ~%]
[%~ IF can_delete_shelf ~%]
@ -54,7 +54,7 @@
[%~ action_block = action_block _ '<input type="hidden" name="shelfnumber" value="' _ shelfnumber _ '" />' ~%]
[%~ action_block = action_block _ '<input type="hidden" name="public" value="' _ public _ '" />' ~%]
[%~ action_block = action_block _ '<input type="hidden" name="referer" value="list" />' ~%]
[%~ action_block = action_block _ '<button type="submit" class="delete-list btn btn-default btn-xs"><i class="fa fa-trash-can"></i> Delete</button>' ~%]
[%~ action_block = action_block _ '<button type="submit" class="delete-list btn btn-default btn-xs"><i class="fa fa-trash-can"></i> ' _ t("Delete") _ '</button>' ~%]
[%~ action_block = action_block _ '</form>' ~%]
[%~ END ~%]
[%~ IF public AND allow_transfer ~%]
@ -64,7 +64,7 @@
[%~ action_block = action_block _ '<input type="hidden" name="shelfnumber" value="' _ shelfnumber _ '" />' ~%]
[%~ action_block = action_block _ '<input type="hidden" name="public" value="1" />' ~%]
[%~ action_block = action_block _ '<input type="hidden" name="referer" value="list" />' ~%]
[%~ action_block = action_block _ '<button type="submit" class="btn btn-default btn-xs"><i class="fa"></i> Transfer</button>' ~%]
[%~ action_block = action_block _ '<button type="submit" class="btn btn-default btn-xs"><i class="fa"></i> ' _ t("Transfer") _ '</button>' ~%]
[%~ action_block = action_block _ '</form>' ~%]
[%~ END ~%]
[%~ ELSE ~%]