From 48ffa65167730bdd0181242334afa5a1e5b4b3f4 Mon Sep 17 00:00:00 2001
From: David Cook <dcook@prosentient.com.au>
Date: Wed, 7 Jul 2021 06:10:32 +0000
Subject: [PATCH] Bug 15516: Show user's hold groups to user via OPAC

This patch shows the item-level and bib-level holds in a hold group
for the user's holds in the OPAC. This includes both the opac-user.pl
page and the self-checkout hold display.

Signed-off-by: Michal Denar <black23@gmail.com>
---
 .../opac-tmpl/bootstrap/en/includes/holds-table.inc  | 20 ++++++++++++++++++++
 .../opac-tmpl/bootstrap/en/modules/opac-user.tt      |  1 +
 .../opac-tmpl/bootstrap/en/modules/sco/sco-main.tt   |  2 +-
 koha-tmpl/opac-tmpl/bootstrap/js/holds.js            |  5 +++++
 4 files changed, 27 insertions(+), 1 deletion(-)
 create mode 100644 koha-tmpl/opac-tmpl/bootstrap/js/holds.js

diff --git a/koha-tmpl/opac-tmpl/bootstrap/en/includes/holds-table.inc b/koha-tmpl/opac-tmpl/bootstrap/en/includes/holds-table.inc
index 70b6901034..7bf436a0a8 100644
--- a/koha-tmpl/opac-tmpl/bootstrap/en/includes/holds-table.inc
+++ b/koha-tmpl/opac-tmpl/bootstrap/en/includes/holds-table.inc
@@ -59,6 +59,26 @@
                             [% IF HOLD.item_level_hold %]
                                 <p class="hint">Item on hold: [% HOLD.item.barcode | html %]</p>
                             [% END %]
+                            [% IF HOLD.hold_group_id %]
+                                <div class="group_hold">
+                                    <span class="hint">(part of a hold group)</span>
+                                    <div class="group_hold_list" style="display:none">
+                                    [% group_holds = HOLD.hold_group.holds %]
+                                    [% IF ( group_holds.count ) %]
+                                        <span class="hint">Containing the following:</span>
+                                        <ul>
+                                        [% FOREACH hg_member IN group_holds %]
+                                            <li>
+                                                <a href="/cgi-bin/koha/opac-detail.pl?biblionumber=[% hg_member.biblionumber | uri %]">
+                                                    [% IF hg_member.itemnumber %]Item [% IF ( hg_item = hg_member.item ); hg_item.barcode | html; END; %][% ELSE %]Record [% hg_member.biblionumber | html %][% END %]
+                                                </a>
+                                            </li>
+                                        [% END %]
+                                        </ul>
+                                    [% END %]
+                                    </div>
+                                </div>
+                            [% END %]
                         </td>
                         <td class="reservedate" data-order="[% HOLD.reservedate | html %]">
                             <span class="tdlabel">Hold date:</span>
diff --git a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-user.tt b/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-user.tt
index 11275fab5f..27743320a4 100644
--- a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-user.tt
+++ b/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-user.tt
@@ -1393,4 +1393,5 @@
             });
         </script>
     [% END %]
+    [% Asset.js("js/holds.js") | $raw %]
 [% END %]
diff --git a/koha-tmpl/opac-tmpl/bootstrap/en/modules/sco/sco-main.tt b/koha-tmpl/opac-tmpl/bootstrap/en/modules/sco/sco-main.tt
index 7feec7e2fc..6eefa057a0 100644
--- a/koha-tmpl/opac-tmpl/bootstrap/en/modules/sco/sco-main.tt
+++ b/koha-tmpl/opac-tmpl/bootstrap/en/modules/sco/sco-main.tt
@@ -535,6 +535,6 @@
     });
 
     </script>
-
+    [% Asset.js("js/holds.js") | $raw %]
     [% IF ( Koha.Preference('SCOUserJS') ) %]<script>[% Koha.Preference('SCOUserJS') | $raw %]</script>[% END %]
 [% END %]
diff --git a/koha-tmpl/opac-tmpl/bootstrap/js/holds.js b/koha-tmpl/opac-tmpl/bootstrap/js/holds.js
new file mode 100644
index 0000000000..734c544adf
--- /dev/null
+++ b/koha-tmpl/opac-tmpl/bootstrap/js/holds.js
@@ -0,0 +1,5 @@
+$(document).ready(function(){
+    $("div.group_hold").click(function(){
+        $(this).find("div.group_hold_list").toggle();
+    });
+});
-- 
2.11.0