From 20af12a391b2761f6fda63de1c31388ae09917f8 Mon Sep 17 00:00:00 2001
From: Martin Renvoize <martin.renvoize@ptfs-europe.com>
Date: Thu, 7 Jul 2022 11:32:13 +0100
Subject: [PATCH] Bug 31028: Add 'Report a concern' to OPAC details

This patch adds a new 'Report a concern' option to the right sidebar on
the opac detail page.

On clicking the link, a modal will display allowing the user to enter a
short message regarding their concerns and then submission will record
said message.
---
 .../opac-tmpl/bootstrap/css/src/opac.scss     |  7 +++++
 .../en/includes/modals/catalog_concern.inc    | 28 +++++++++++++++++++
 .../en/includes/opac-detail-sidebar.inc       |  4 +++
 .../bootstrap/en/modules/opac-detail.tt       |  7 +++++
 .../bootstrap/js/modals/catalog_concern.js    | 23 +++++++++++++++
 5 files changed, 69 insertions(+)
 create mode 100644 koha-tmpl/opac-tmpl/bootstrap/en/includes/modals/catalog_concern.inc
 create mode 100644 koha-tmpl/opac-tmpl/bootstrap/js/modals/catalog_concern.js

diff --git a/koha-tmpl/opac-tmpl/bootstrap/css/src/opac.scss b/koha-tmpl/opac-tmpl/bootstrap/css/src/opac.scss
index 14caa1bcf6..d534ecb7a5 100644
--- a/koha-tmpl/opac-tmpl/bootstrap/css/src/opac.scss
+++ b/koha-tmpl/opac-tmpl/bootstrap/css/src/opac.scss
@@ -146,6 +146,13 @@ textarea {
     width: 50%;
 }
 
+.help-block {
+    display: block;
+    margin-top: 5px;
+    margin-bottom: 10px;
+    color: #737373;
+}
+
 legend {
     color: #727272;
     font-size: 110%;
diff --git a/koha-tmpl/opac-tmpl/bootstrap/en/includes/modals/catalog_concern.inc b/koha-tmpl/opac-tmpl/bootstrap/en/includes/modals/catalog_concern.inc
new file mode 100644
index 0000000000..5b0ff09627
--- /dev/null
+++ b/koha-tmpl/opac-tmpl/bootstrap/en/includes/modals/catalog_concern.inc
@@ -0,0 +1,28 @@
+<!-- Add concern modal -->
+<div class="modal" id="addConcernModal" tabindex="-1" role="dialog" aria-labelledby="addConcernModalLabel" aria-hidden="true">
+    <div class="modal-dialog">
+        <div class="modal-content">
+            <div class="modal-header">
+                <h3 class="modal-title" id="addConcernModalLabel">Report a concern</h3>
+                <button type="button" class="closebtn" data-dismiss="modal" aria-label="Close">
+                    <span aria-hidden="true">&times;</span>
+                </button>
+            </div>
+            <div class="modal-body">
+                <fieldset id="concern_fieldset">
+                    <div class="form-group">
+                        <label for="message">Please decribe your concerns: </label>
+                        <textarea class="form-control" name="message" id="message_add" aria-describedby="helpBlock" required="required"></textarea>
+                        <p id="helpBlock" class="help-block">A short summary of what the library policy is for dealing with such concerns and what constitutes a valid concern</p>
+                    </div>
+                </fieldset>
+            </div>
+            <div class="modal-footer">
+                <input type="hidden" name="biblio_id" id="biblio_add" value="[% biblio.biblionumber | html %]">
+                <input type="hidden" name="reporter_id" id="reporter_add" value="[% borrowernumber | html %]">
+                <button type="submit" id="addConfirm" class="btn btn-primary">Submit</button>
+                <button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
+            </div>
+        </div>
+    </div>
+</div>
diff --git a/koha-tmpl/opac-tmpl/bootstrap/en/includes/opac-detail-sidebar.inc b/koha-tmpl/opac-tmpl/bootstrap/en/includes/opac-detail-sidebar.inc
index a3cbb23590..644a578671 100644
--- a/koha-tmpl/opac-tmpl/bootstrap/en/includes/opac-detail-sidebar.inc
+++ b/koha-tmpl/opac-tmpl/bootstrap/en/includes/opac-detail-sidebar.inc
@@ -42,6 +42,10 @@
         <li><a class="suggest_for_purchase btn btn-link btn-lg" href="/cgi-bin/koha/opac-suggestions.pl?op=add&biblionumber=[% biblio.biblionumber | url %]"><i class="fa fa-fw fa-gift" aria-hidden="true"></i> Suggest for purchase</a></li>
     [% END %]
 
+    [% IF Koha.Preference('OpacCatalogConcerns') %]
+        <li><a class="report_a_concern btn btn-link btn-lg" href="#" data-toggle="modal" data-target="#addConcernModal"><i class="fa fa-fw fa-warning" aria-hidden="true"></i> Report a concern</a></li>
+    [% END %]
+
     [% IF ( OpacHighlightedWords && query_desc ) %]
     <li>
         <a href="#" class="highlight_toggle btn btn-link btn-lg" id="highlight_toggle_off"><i class="fa fa-fw fa-pencil" aria-hidden="true"></i> Unhighlight</a>
diff --git a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-detail.tt b/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-detail.tt
index e69c3fac73..422fe35fe5 100644
--- a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-detail.tt
+++ b/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-detail.tt
@@ -1428,7 +1428,14 @@
     </div> <!-- /.modal-dialog -->
 </div> <!-- /.modal -->
 
+[% IF Koha.Preference('OpacCatalogConcerns') %]
+    [% INCLUDE 'modals/catalog_concern.inc' %]
+[% END %]
+
 [% BLOCK jsinclude %]
+    [% IF Koha.Preference('OpacCatalogConcerns') %]
+        [% Asset.js("js/modals/catalog_concern.js") | $raw %]
+    [% END %]
     [% INCLUDE 'datatables.inc' %]
     [% INCLUDE 'columns_settings.inc' %]
     [% INCLUDE greybox.inc %]
diff --git a/koha-tmpl/opac-tmpl/bootstrap/js/modals/catalog_concern.js b/koha-tmpl/opac-tmpl/bootstrap/js/modals/catalog_concern.js
new file mode 100644
index 0000000000..24617528ee
--- /dev/null
+++ b/koha-tmpl/opac-tmpl/bootstrap/js/modals/catalog_concern.js
@@ -0,0 +1,23 @@
+$(document).ready(function() {
+    $('#addConcernModal').on('click', '#addConfirm', function(e) {
+        let reporter_id = $('#reporter_add').val();
+        let biblio_id = $('#biblio_add').val();
+        let message = $('#message_add').val();
+
+        params = {
+            message: message,
+            biblio_id: biblio_id,
+            reporter_id: reporter_id,
+        };
+
+        $.ajax({
+            url: '/api/v1/public/catalog/concerns',
+            type: 'POST',
+            data: JSON.stringify(params),
+            success: function(data) {
+                $('#addConcernModal').modal('hide');
+            },
+            contentType: "json"
+        });
+    });
+});
-- 
2.20.1