From 6b5cab9e5e448f7aa06f08ae4a4d0da8bac3497c Mon Sep 17 00:00:00 2001
From: Owen Leonard <oleonard@myacpl.org>
Date: Fri, 24 Apr 2020 14:48:21 +0000
Subject: [PATCH] Bug 25280: Use modal confirmation when removing share from a
 list in the OPAC

This patch updates the process of removing a share from a list in the
OPAC so that the confirmation request shown to the user is a Bootstrap
modal instead of a plain JavaScript confirm dialog.

To test you should have the OpacAllowSharingPrivateLists enabled.

 - Log in to the OPAC as a user who has multiple private lists.
 - Share two or more lists with another user in the system.
 - Accept the list shares on behalf of the other user and log in to the
   OPAC as that user.
   - In the list of that user's lists, test the process of removing a
     share:
     - Clicking "Remove share" should trigger a modal which asks if you
       want to remove sharing. It should show the name of the list in
       question.
     - Test the funcionality of both the "No" and "Yes" options.
     - Confirm that the "Remove share" button works correctly for any of
       multiple lists.
---
 .../opac-tmpl/bootstrap/en/modules/opac-shelves.tt      | 17 +++++++++++++++--
 1 file changed, 15 insertions(+), 2 deletions(-)

diff --git a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-shelves.tt b/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-shelves.tt
index a352cbc5a7..5edec600bf 100644
--- a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-shelves.tt
+++ b/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-shelves.tt
@@ -699,12 +699,13 @@
                                                         <a href="/cgi-bin/koha/opac-shareshelf.pl?op=invite&shelfnumber=[% s.shelfnumber | uri %]" class="sharelist btn btn-link"><i class="fa fa-share"></i> Share</a>
                                                     [% END %]
                                                     [% IF s.is_shared_with( loggedinusernumber ) %]
-                                                        <form action="opac-shelves.pl" method="post" class="form-inline">
+                                                        <form action="opac-shelves.pl" method="post" id="unshare[% s.shelfnumber | html %]" class="form-inline">
                                                             <input type="hidden" name="op" value="remove_share" />
                                                             <input type="hidden" name="referer" value="list" />
                                                             <input type='hidden' name='category' value='[% category | html %]' />
                                                             <input type="hidden" name="shelfnumber" value="[% s.shelfnumber | html %]" />
-                                                            <input type="submit" class="deleteshelf" onclick="return confirmDelete(MSG_CONFIRM_REMOVE_SHARE);" value="Remove share" />
+                                                            <button type="submit" class="btn btn-link remove remove_share"
+                                                            data-shelfname="[% s.shelfname | html %]" data-shelfnumber="[% s.shelfnumber | html %]"><i class="fa fa-remove" aria-hidden="true"></i> Remove share</button>
                                                         </form>
                                                     [% END %]&nbsp;
                                                 </td>
@@ -964,6 +965,18 @@ $(function() {
         });
     [% END %]
 
+    $(".remove_share").on("click", function(e){
+        e.preventDefault();
+        var shelf_name = $(this).data("shelfname");
+        var shelf_number = $(this).data("shelfnumber");
+        confirmModal( shelf_name, _("Are you sure you want to remove sharing? You will no longer have access to the list."), _("Yes, remove sharing"), _("No, do not remove sharing"), function( result ){
+                if( result ){
+                    $("#unshare" + shelf_number ).submit();
+                }
+            }
+        );
+    });
+
 }); // document.ready
 
 function sortMenu( sorting_form ){
-- 
2.11.0