Skip to content
Snippets Groups Projects
Commit e37672c6 authored by Chris Hallberg's avatar Chris Hallberg Committed by Demian Katz
Browse files

Fix cart problems with messages, display, uniqueness.

parent 4c9a9a7d
No related merge requests found
...@@ -49,14 +49,21 @@ VuFind.register('cart', function Cart() { ...@@ -49,14 +49,21 @@ VuFind.register('cart', function Cart() {
} }
function updateCount() { function updateCount() {
var items = _getItems(); var items = VuFind.cart.getFullItems();
$('#cartItems strong').html(items.length); $('#cartItems strong').html(items.length);
} if (items.length === parseInt(VuFind.translate('bookbagMax'))) {
$('#cartItems .full').removeClass('hidden');
} else {
$('#cartItems .full').addClass('hidden');
}
function addItem(id, _source) { function addItem(id, _source) {
var source = _source || VuFind.defaultSearchBackend; var source = _source || VuFind.defaultSearchBackend;
var cartItems = _getItems(); var cartItems = _getItems();
var cartSources = _getSources(); var cartSources = _getSources();
if (cartItems.length >= parseInt(VuFind.translate('bookbagMax'))) {
return false;
}
var sIndex = cartSources.indexOf(source); var sIndex = cartSources.indexOf(source);
if (sIndex < 0) { if (sIndex < 0) {
// Add source to source cookie // Add source to source cookie
...@@ -66,7 +73,7 @@ VuFind.register('cart', function Cart() { ...@@ -66,7 +73,7 @@ VuFind.register('cart', function Cart() {
} else { } else {
cartItems[cartItems.length] = String.fromCharCode(65 + sIndex) + id; cartItems[cartItems.length] = String.fromCharCode(65 + sIndex) + id;
} }
Cookies.setItem(_COOKIE, $.unique(cartItems).join(_COOKIE_DELIM), false, '/', _COOKIE_DOMAIN); Cookies.setItem(_COOKIE, _uniqueArray(cartItems).join(_COOKIE_DELIM), false, '/', _COOKIE_DOMAIN);
updateCount(); updateCount();
return true; return true;
} }
...@@ -116,7 +123,7 @@ VuFind.register('cart', function Cart() { ...@@ -116,7 +123,7 @@ VuFind.register('cart', function Cart() {
var _cartNotificationTimeout = false; var _cartNotificationTimeout = false;
function _registerUpdate($form) { function _registerUpdate($form) {
if ($form) { if ($form) {
$("#updateCart, #bottom_updateCart").unbind('click').click(function cartUpdate(){ $("#updateCart, #bottom_updateCart").unbind('click').click(function cartUpdate() {
var elId = this.id; var elId = this.id;
var selectedBoxes = $("input[name='ids[]']:checked", $form); var selectedBoxes = $("input[name='ids[]']:checked", $form);
var selected = []; var selected = [];
...@@ -124,28 +131,22 @@ VuFind.register('cart', function Cart() { ...@@ -124,28 +131,22 @@ VuFind.register('cart', function Cart() {
selected[i] = this.value; selected[i] = this.value;
}); });
if (selected.length > 0) { if (selected.length > 0) {
var inCart = 0;
var msg = ""; var msg = "";
var orig = getFullItems(); var orig = getFullItems();
$(selected).each(function cartCheckedItemsAdd() { $(selected).each(function cartCheckedItemsAdd() {
for (var x in orig) {
if (this === orig[x]) {
inCart++;
return;
}
}
var data = this.split('|'); var data = this.split('|');
addItem(data[1], data[0]); addItem(data[1], data[0]);
}); });
var updated = getFullItems(); var updated = getFullItems();
var added = updated.length - orig.length; var added = updated.length - orig.length;
var inCart = selected.length - added;
msg += added + " " + VuFind.translate('itemsAddBag'); msg += added + " " + VuFind.translate('itemsAddBag');
if (updated.length >= parseInt(VuFind.translate('bookbagMax'))) {
msg += "<br/>" + VuFind.translate('bookbagFull');
}
if (inCart > 0 && orig.length > 0) { if (inCart > 0 && orig.length > 0) {
msg += "<br/>" + inCart + " " + VuFind.translate('itemsInBag'); msg += "<br/>" + inCart + " " + VuFind.translate('itemsInBag');
} }
if (updated.length >= VuFind.translate('bookbagMax')) {
msg += "<br/>" + VuFind.translate('bookbagFull');
}
$('#' + elId).data('bs.popover').options.content = msg; $('#' + elId).data('bs.popover').options.content = msg;
$('#cartItems strong').html(updated.length); $('#cartItems strong').html(updated.length);
} else { } else {
...@@ -174,8 +175,9 @@ VuFind.register('cart', function Cart() { ...@@ -174,8 +175,9 @@ VuFind.register('cart', function Cart() {
var $parent = $(this).parent(); var $parent = $(this).parent();
$parent.find('.cart-add.correct,.cart-remove.correct').removeClass('correct hidden'); $parent.find('.cart-add.correct,.cart-remove.correct').removeClass('correct hidden');
$parent.find('.cart-add').click(function cartAddClick() { $parent.find('.cart-add').click(function cartAddClick() {
addItem(currentId, currentSource); if (addItem(currentId, currentSource)) {
$parent.find('.cart-add,.cart-remove').toggleClass('hidden'); $parent.find('.cart-add,.cart-remove').toggleClass('hidden');
}
}); });
$parent.find('.cart-remove').click(function cartRemoveClick() { $parent.find('.cart-remove').click(function cartRemoveClick() {
removeItem(currentId, currentSource); removeItem(currentId, currentSource);
...@@ -188,6 +190,7 @@ VuFind.register('cart', function Cart() { ...@@ -188,6 +190,7 @@ VuFind.register('cart', function Cart() {
_registerUpdate($form); _registerUpdate($form);
} }
$("#updateCart, #bottom_updateCart").popover({content: '', html: true, trigger: 'manual'}); $("#updateCart, #bottom_updateCart").popover({content: '', html: true, trigger: 'manual'});
updateCount();
} }
// Reveal // Reveal
......
...@@ -22,7 +22,10 @@ ...@@ -22,7 +22,10 @@
<? endif; ?> <? endif; ?>
<? $cart = $this->cart(); if ($cart->isActive()): ?> <? $cart = $this->cart(); if ($cart->isActive()): ?>
<li id="cartSummary"> <li id="cartSummary">
<a id="cartItems" data-lightbox title="<?=$this->transEsc('View Book Bag')?>" href="<?=$this->url('cart-home')?>"><i class="fa fa-suitcase" aria-hidden="true"></i> <strong><?=count($cart->getItems())?></strong> <?=$this->transEsc('items')?><?=$cart->isFull() ? ' (' . $this->transEsc('bookbag_full') . ')' : ''?></a> <a id="cartItems" data-lightbox title="<?=$this->transEsc('View Book Bag')?>" href="<?=$this->url('cart-home')?>">
<i class="fa fa-suitcase" aria-hidden="true"></i> <strong><?=count($cart->getItems())?></strong> <?=$this->transEsc('items')?>
<span class="full<?=!$cart->isFull() ? ' hidden' : '' ?>">(<?=$this->transEsc('bookbag_full') ?>)</span>
</a>
</li> </li>
<? endif; ?> <? endif; ?>
<? if (is_object($account) && $account->loginEnabled()): // hide login/logout if unavailable ?> <? if (is_object($account) && $account->loginEnabled()): // hide login/logout if unavailable ?>
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment