From efb28c4af16efbe688322415ae06c6a85fd3454b Mon Sep 17 00:00:00 2001 From: Kyle M Hall Date: Mon, 20 Nov 2017 11:05:35 -0500 Subject: [PATCH] Bug 19655: Make To.json escape doesn't escape newlines to create valid JSON JSON does not allow real line-breaks. If a field contains them and they are not escaped, a JSON parser will be unable to convert the stringified JSON back into an object. This is clearly exemplified by the guarantor search, where a multi-line note on the guarantor's record will break the ability to select that guarantor. Test Plan: 1) Create Patron A with a "Circulation note" that has multiple lines in it 2) Create Patron B 3) Attempt to set Patron A to be the guarantor for Patron B 4) Note selecting the patron does nothing 5) Apply this patch 6) Repeat step 3 7) Selecting the guarantor now works! Signed-off-by: Simon Pouchol Signed-off-by: Marcel de Rooy Signed-off-by: Jonathan Druart (cherry picked from commit 9cd9240c362336e390eed01acf3630f33e73825f) Signed-off-by: Fridolin Somers --- Koha/Template/Plugin/To.pm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Koha/Template/Plugin/To.pm b/Koha/Template/Plugin/To.pm index 6bf56b1f74..f87a39c64c 100644 --- a/Koha/Template/Plugin/To.pm +++ b/Koha/Template/Plugin/To.pm @@ -29,6 +29,8 @@ sub json { my $json = JSON->new->allow_nonref(1); $json = $json->encode($value); $json =~ s/^"|"$//g; # Remove quotes around the strings + $json =~ s/\\r/\\\\r/g; # Convert newlines to escaped newline characters + $json =~ s/\\n/\\\\n/g; return $json; } -- 2.39.5