From 15bae45a97363c85cd085382a5c88ff31e0cfd64 Mon Sep 17 00:00:00 2001 From: Owen Leonard Date: Wed, 3 Oct 2018 14:13:49 +0000 Subject: [PATCH] Bug 21479: (alternate) Removing from cart removes 2 items This patch changes the way biblionumbers are passed to the cart script for adding and removing single items. The title's biblionumber is now stored in a data-attribute on the links for adding and removing. This should be a more robust, unified way to handle these single-item operations. To test, apply the patch and enable the opacbookbag system preference. Test adding and removing items from the cart from various pages using various methods: - By clicking an "Add to your cart" / "Remove" link in search results - By clicking an "Add to your cart" / "Remove" link on a detail page - By checking boxes in search results and adding via the dropdown Each operation should work correctly. Signed-off-by: David Nind --- .../opac-tmpl/bootstrap/en/includes/opac-bottom.inc | 17 ++++++++++------- .../bootstrap/en/includes/opac-detail-sidebar.inc | 4 ++-- .../opac-tmpl/bootstrap/en/modules/opac-results.tt | 4 ++-- koha-tmpl/opac-tmpl/bootstrap/js/basket.js | 5 ++++- 4 files changed, 18 insertions(+), 12 deletions(-) diff --git a/koha-tmpl/opac-tmpl/bootstrap/en/includes/opac-bottom.inc b/koha-tmpl/opac-tmpl/bootstrap/en/includes/opac-bottom.inc index ab7eb2c306..6baedf9835 100644 --- a/koha-tmpl/opac-tmpl/bootstrap/en/includes/opac-bottom.inc +++ b/koha-tmpl/opac-tmpl/bootstrap/en/includes/opac-bottom.inc @@ -188,15 +188,18 @@ $.widget.bridge('uitooltip', $.ui.tooltip); Dopop('opac-addbybiblionumber.pl?biblionumber=[% biblionumber | html %]'); return false; }); - $(".addrecord").on("click",function(){ - addRecord('[% biblionumber | html %]'); - return false; + $("body").on("click", ".addtocart", function(e){ + e.preventDefault(); + var biblionumber = $(this).data("biblionumber"); + addRecord( biblionumber ); }); - $(".cartRemove").on("click",function(){ - delSingleRecord('[% biblionumber | html %]'); - return false; + $("body").on("click", ".cartRemove", function(e){ + e.preventDefault(); + var biblionumber = $(this).data("biblionumber"); + delSingleRecord( biblionumber ); }); - $(".clearsh").on("click", function(){ + $(".clearsh").on("click", function(e){ + e.preventDefault(); return confirmDelete(MSG_DELETE_SEARCH_HISTORY); }); //]]> 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 a8f6f4ec28..e1c645d687 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 @@ -27,9 +27,9 @@ [% IF Koha.Preference( 'opacbookbag' ) == 1 %] [% IF ( incart ) %] -
  • In your cart (remove)
  • +
  • In your cart (remove)
  • [% ELSE %] -
  • Add to your cart
  • +
  • Add to your cart
  • [% END %] [% END %] diff --git a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-results.tt b/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-results.tt index 4d4fe4fa11..45733ea8eb 100644 --- a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-results.tt +++ b/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-results.tt @@ -535,9 +535,9 @@ [% IF Koha.Preference( 'opacbookbag' ) == 1 %] [% IF ( SEARCH_RESULT.incart ) %] - In your cart (remove) + In your cart (remove) [% ELSE %] - Add to cart + Add to your cart [% END %] [% END # / IF opacbookbag %] diff --git a/koha-tmpl/opac-tmpl/bootstrap/js/basket.js b/koha-tmpl/opac-tmpl/bootstrap/js/basket.js index 9eb66309ab..250a0afa30 100644 --- a/koha-tmpl/opac-tmpl/bootstrap/js/basket.js +++ b/koha-tmpl/opac-tmpl/bootstrap/js/basket.js @@ -1,3 +1,5 @@ +/* global MSG_BASKET_EMPTY MSG_RECORD_IN_BASKET MSG_RECORD_ADDED MSG_NRECORDS_IN_BASKET MSG_NRECORDS_ADDED MSG_NO_RECORD_SELECTED MSG_NO_RECORD_ADDED MSG_IN_YOUR_CART MSG_RECORD_REMOVED MSG_CONFIRM_DEL_BASKET MSG_CONFIRM_DEL_RECORDS MSG_ITEM_IN_CART MSG_ITEM_NOT_IN_CART */ + ////////////////////////////////////////////////////////////////////////////// // BASIC FUNCTIONS FOR COOKIE MANAGEMENT // ////////////////////////////////////////////////////////////////////////////// @@ -230,11 +232,12 @@ function selRecord(num, status) { } function delSingleRecord(biblionumber){ + biblionumber = String( biblionumber ); var nameCookie = "bib_list"; var valCookie = readCookie(nameCookie); var arrayRecords = valCookie.split("/"); var pos = jQuery.inArray(biblionumber,arrayRecords); - arrayRecords.splice(pos,1); + arrayRecords.splice( pos, 1 ); valCookie = arrayRecords.join("/"); writeCookie( nameCookie, valCookie ); updateBasket( arrayRecords.length-1 ); -- 2.11.0