From b19ef7a259e147237b030a2a1a46b4c1933e7b2a Mon Sep 17 00:00:00 2001
From: Matt Blenkinsop <matt.blenkinsop@ptfs-europe.com>
Date: Wed, 6 Sep 2023 10:50:30 +0000
Subject: [PATCH] Bug 34728: Make pre tag conditional

This patch makes the pre-formatting of notice templates conditional on the content type.

Test plan:
1) Navigate to tools > Notices and slips
2) Edit the notice with the code of HOLD
3) Under print, paste the following
<p>Please collect within 10 days from the date of this letter and don't forget to bring your library card with you.</p>
<p>Be aware that opening hours vary at different library branches so if in doubt double check the times before you visit.</p>
<p>Should you no longer require this item please contact us so we can make it available for another customer.</p>

<p>Thank you</p>
4) Check the box that says HTML message and save the notice
5) In Patrons, select a patron and in Patron messaging preferences, check the box in the Email column for Hold filled
6) Find a record in the catalogue
7) Copy the barcode for one of the items
8) Place a hold on the item for the patron you selected
9) Navigate to Circulation > Check-in
10) Paste the barcode in the Check-in box and click Check-in
11) In the pop-up box, click Confirm hold
12) In the command line, run perl misc/cronjobs/gather_print_notices.pl --letter_code=HOLD --html /tmp
13) cd /tmp
14) There should be a file in there called 'notices_HOLD-date.html
15) cat this file
16) The html you pasted in the template will be wrapped in a <pre> tag
17) Apply patch and restart_all
18) rm the notices file that was created
19) cd /kohadevbox/koha
20) Select a new record from the catalogue and repeat steps 7-15 for this record, using the same patron
21) This time, the html file should not contain the <pre> tag
22) Sign off!
---
 .../intranet-tmpl/prog/en/modules/batch/print-notices.tt    | 6 +++++-
 misc/cronjobs/gather_print_notices.pl                       | 6 ++++++
 2 files changed, 11 insertions(+), 1 deletion(-)

diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/batch/print-notices.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/batch/print-notices.tt
index ae0c0aabcc..7511eb5469 100644
--- a/koha-tmpl/intranet-tmpl/prog/en/modules/batch/print-notices.tt
+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/batch/print-notices.tt
@@ -20,7 +20,11 @@
 <body id="batch_print-notices" class="batch">
     [% FOREACH message IN messages %]
     <div class="dialog message">
-        <pre>[% message.content | $raw %]</pre>
+        [% IF ( message.is_html ) %]
+            [% message.content | $raw %]
+        [% ELSE %]
+            <pre>[% message.content | $raw %]</pre>
+        [% END %]
     </div>
     [% END %]
 </body>
diff --git a/misc/cronjobs/gather_print_notices.pl b/misc/cronjobs/gather_print_notices.pl
index d296934c03..56fe69f2c6 100755
--- a/misc/cronjobs/gather_print_notices.pl
+++ b/misc/cronjobs/gather_print_notices.pl
@@ -214,6 +214,12 @@ sub generate_html {
       C4::Templates::gettemplate( 'batch/print-notices.tt', 'intranet',
         CGI->new );
 
+    foreach my $message (@{ $messages }) {
+        my $content_type = $message->{'content_type'} || 'text/plain; charset="UTF-8"';
+        my $is_html      = $content_type =~ m/html/io;
+        $message->{'is_html'} = $is_html;
+    }
+
     $template->param(
         stylesheet => C4::Context->preference("NoticeCSS"),
         today      => $today_syspref,
-- 
2.37.1 (Apple Git-137.1)