From a08c037676796726d4d1f738d81e31ff1f17adee Mon Sep 17 00:00:00 2001
From: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
Date: Tue, 2 May 2023 16:26:45 +0200
Subject: [PATCH] Bug 33335: Use To.json to serialize
Content-Type: text/plain; charset=utf-8

Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
---
 admin/marc-overlay-rules.pl                           | 10 ++++++----
 .../prog/en/modules/admin/marc-overlay-rules.tt       | 11 +++++------
 2 files changed, 11 insertions(+), 10 deletions(-)

diff --git a/admin/marc-overlay-rules.pl b/admin/marc-overlay-rules.pl
index 05a5bbe581..b3e0a86f8d 100755
--- a/admin/marc-overlay-rules.pl
+++ b/admin/marc-overlay-rules.pl
@@ -132,11 +132,13 @@ elsif ($op eq 'doedit' || $op eq 'add') {
     }
 }
 
-my $categorycodes = Koha::Patron::Categories->search_with_library_limits({}, {order_by => ['description']});
+my $categories = Koha::Patron::Categories->search_with_library_limits( {},
+    { order_by => ['description'] } )->unblessed;
+
 $template->param(
-    rules         => $rules,
-    categorycodes => $categorycodes,
-    messages      => $errors
+    rules      => $rules,
+    categories => $categories,
+    messages   => $errors
 );
 
 output_html_with_http_headers $input, $cookie, $template->output;
diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/marc-overlay-rules.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/marc-overlay-rules.tt
index 898a4cac02..fbdc3813ad 100644
--- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/marc-overlay-rules.tt
+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/marc-overlay-rules.tt
@@ -1,4 +1,5 @@
 [% USE raw %]
+[% USE To %]
 [% USE Asset %]
 [% SET footerjs = 1 %]
 [% USE Koha %]
@@ -454,11 +455,9 @@
           }
         });
 
-        var $category = {};
-
-        [% FOR categorycode IN categorycodes %]
-            $category["[% categorycode.categorycode %]"] = "[% categorycode.description | html %]";
-        [% END %]
+        var categories = [% To.json( categories ) | $raw %];
+        categories.unshift({ categorycode: '*', description: '*'});
+        categories = categories.reduce( ( a,c ) => ( { ...a, [c.categorycode]: c.description } ), {} );
 
         var module_filter_options = {
         source: {
@@ -471,7 +470,7 @@
             import_lexile: _("import_lexile.pl")
         },
 
-        categorycode: $category
+            categorycode: categories,
         };
 
         //Kind of hack: Replace filter value with label when one exist
-- 
2.30.2