From 9b5f75a79e1edefa1a93e7f3e31284ea2bccb903 Mon Sep 17 00:00:00 2001 From: Lucas Gass Date: Fri, 17 Jul 2026 18:53:12 +0000 Subject: [PATCH] Bug 36868: (follow-up) Fix deletion when nothing is in the cart, and make DB update better Signed-off-by: Pedro Amorim --- ...68_add_AutoDeleteFromCartWhenHoldPlaced_syspref.pl | 11 +++++++++-- koha-tmpl/intranet-tmpl/prog/js/basket.js | 6 ++++++ koha-tmpl/opac-tmpl/bootstrap/js/basket.js | 6 ++++++ 3 files changed, 21 insertions(+), 2 deletions(-) diff --git a/installer/data/mysql/atomicupdate/bug_36868_add_AutoDeleteFromCartWhenHoldPlaced_syspref.pl b/installer/data/mysql/atomicupdate/bug_36868_add_AutoDeleteFromCartWhenHoldPlaced_syspref.pl index 449ba45d15..ded98ba2a6 100755 --- a/installer/data/mysql/atomicupdate/bug_36868_add_AutoDeleteFromCartWhenHoldPlaced_syspref.pl +++ b/installer/data/mysql/atomicupdate/bug_36868_add_AutoDeleteFromCartWhenHoldPlaced_syspref.pl @@ -8,14 +8,21 @@ return { my ($args) = @_; my ( $dbh, $out ) = @$args{qw(dbh out)}; - # Do your stuff here + my $exists = $dbh->selectrow_array( + q{SELECT 1 FROM systempreferences WHERE variable = 'AutoDeleteFromCartWhenHoldPlaced'}); + + if ($exists) { + say_warning( $out, "System preference 'AutoDeleteFromCartWhenHoldPlaced' already exists, skipping" ); + return; + } + $dbh->do( q{ INSERT IGNORE INTO systempreferences ( `variable`, `value`, `options`, `explanation`, `type` ) VALUES ('AutoDeleteFromCartWhenHoldPlaced', '','', 'Automatically delete items from cart when a hold is placed','Choice') } ); + say_success( $out, "Added new system preference 'AutoDeleteFromCartWhenHoldPlaced'" ); - say $out "Added new system preference 'AutoDeleteFromCartWhenHoldPlaced'"; }, }; diff --git a/koha-tmpl/intranet-tmpl/prog/js/basket.js b/koha-tmpl/intranet-tmpl/prog/js/basket.js index 2c34006ec9..671b9a0f45 100644 --- a/koha-tmpl/intranet-tmpl/prog/js/basket.js +++ b/koha-tmpl/intranet-tmpl/prog/js/basket.js @@ -269,6 +269,12 @@ function delSingleRecord(biblionumber) { var valCookie = readCookie(nameCookie); var arrayRecords = valCookie.split("/"); var pos = jQuery.inArray(biblionumber, arrayRecords); + + // the cart is empty, bail + if (pos <= 0) { + return; + } + arrayRecords.splice(pos, 1); valCookie = arrayRecords.join("/"); writeCookie(nameCookie, valCookie); diff --git a/koha-tmpl/opac-tmpl/bootstrap/js/basket.js b/koha-tmpl/opac-tmpl/bootstrap/js/basket.js index 9d9588feab..8239aee56c 100644 --- a/koha-tmpl/opac-tmpl/bootstrap/js/basket.js +++ b/koha-tmpl/opac-tmpl/bootstrap/js/basket.js @@ -235,6 +235,12 @@ function delSingleRecord(biblionumber) { var arrayRecords = valCookie.split("/"); var pos = jQuery.inArray(biblionumber, arrayRecords); arrayRecords.splice(pos, 1); + + //if cart is empty, bail + if (pos <= -1) { + return; + } + valCookie = arrayRecords.join("/"); writeCookie(nameCookie, valCookie); updateBasket(arrayRecords.length - 1);