Bug 21556: Deleting same record twice leads to fatal software error
authorDavid Cook <dcook@prosentient.com.au>
Fri, 12 Oct 2018 01:53:22 +0000 (01:53 +0000)
committerNick Clemens <nick@bywatersolutions.com>
Thu, 1 Nov 2018 19:05:12 +0000 (19:05 +0000)
If you delete a record, confirm the deletion, and try to delete the
record and confirm it again befoe the first deletion completes, you'll
generate a fatal software error.

This patch unbinds the click handlers for the "Delete record" button
after the deletion is confirmed and just before the Javascript
processes the redirect to the next page in the process.

To test:
1) You will need a bibliographic record that is able to be deleted
2) Click "Edit", then "Delete record", then "OK"
3) While the browser is reloading, click "Edit", then "Delete record",
    then "OK
4) Observe a fatal error such as "Internal server error" or 'Can't call
method "holds" on an undefined value at
/home/vagrant/kohaclone/C4/Biblio.pm line 406.'
5) Apply the patch
6) Run "restart_all" on kohadevbox (or otherwise restart Plack if
    running Plack)
7) Navigate to another bibliographic record that is able to be deleted
8) Click "Edit", then "Delete record", then "OK"
9) While the browser is reloading, click "Edit", then "Delete record"
10) Observe that no fatal software error is generated
11) You are redirected to
http://localhost:8081/cgi-bin/koha/catalogue/search.pl (on kohadevbox)

Signed-off-by: Pierre-Marc Thibault <pierre-marc.thibault@inLibro.com>

Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>

Signed-off-by: Nick Clemens <nick@bywatersolutions.com>

koha-tmpl/intranet-tmpl/prog/js/catalog.js

index d99d4dc..8aeafc2 100644 (file)
@@ -43,6 +43,7 @@ function confirm_deletion(link) {
         is_confirmed = confirm( CONFIRM_RECORD_DELETION );
     }
     if (is_confirmed) {
+        $("#deletebiblio").unbind('click');
         window.location="/cgi-bin/koha/cataloguing/addbiblio.pl?op=delete&amp;biblionumber=" + biblionumber;
     } else {
         return false;