From: Galen Charlton Date: Fri, 15 Jun 2018 17:06:41 +0000 (-0400) Subject: add AJAX cart clearing action X-Git-Url: https://old-git.evergreen-ils.org/?a=commitdiff_plain;h=511bcbf40948fc07a48ec0f77fb3311e18b7d4f1;p=working%2FEvergreen.git add AJAX cart clearing action Signed-off-by: Galen Charlton --- diff --git a/Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader.pm b/Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader.pm index 09afe3c0b6..eeeba4a078 100644 --- a/Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader.pm +++ b/Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader.pm @@ -136,6 +136,7 @@ sub load { return $self->load_api_mylist_retrieve if $path =~ m|opac/api/mylist/retrieve|; return $self->load_api_mylist_add if $path =~ m|opac/api/mylist/add|; return $self->load_api_mylist_delete if $path =~ m|opac/api/mylist/delete|; + return $self->load_api_mylist_clear if $path =~ m|opac/api/mylist/clear|; return $self->load_simple("home") if $path =~ m|opac/home|; return $self->load_simple("css") if $path =~ m|opac/css|; diff --git a/Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader/Container.pm b/Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader/Container.pm index d17c0e2ad1..aba9d85483 100644 --- a/Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader/Container.pm +++ b/Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader/Container.pm @@ -93,6 +93,14 @@ sub load_api_mylist_retrieve { return Apache2::Const::OK; } +sub load_api_mylist_clear { + my $self = shift; + + $self->clear_anon_cache; + + # and return fresh, empty cart + return $self->load_api_mylist_retrieve(); +} # Adds a record (by id) to My List, creating a new anon cache + list if necessary. sub load_mylist_add { diff --git a/Open-ILS/src/templates/opac/css/style.css.tt2 b/Open-ILS/src/templates/opac/css/style.css.tt2 index 565022f3e4..d8780fa4f1 100644 --- a/Open-ILS/src/templates/opac/css/style.css.tt2 +++ b/Open-ILS/src/templates/opac/css/style.css.tt2 @@ -1034,7 +1034,7 @@ tr.result_table_row > td.result_table_pic_header { .result_table_row_selected { background-color: [% css_colors.item_selected %]; } -#selected_records_summary, #clear_selected_records { +#selected_records_summary, #clear_cart { margin-left: 5em; } diff --git a/Open-ILS/src/templates/opac/parts/result/table.tt2 b/Open-ILS/src/templates/opac/parts/result/table.tt2 index efbffdf113..e3a9497b2a 100644 --- a/Open-ILS/src/templates/opac/parts/result/table.tt2 +++ b/Open-ILS/src/templates/opac/parts/result/table.tt2 @@ -45,7 +45,7 @@ - [% l('Clear selections') %] + [% l('Clear cart') %] [% END %] = max_cart_size); @@ -143,18 +144,13 @@ if (rec_selector_block) rec_selector_block.classList.remove("hidden"); function deselectSelectedOnPage() { - var to_del = []; [].forEach.call(rec_selectors, function(el) { if (el.checked) { el.checked = false; adjustLegacyControlsVis('delete', el.value); toggleRowHighlighting(el); - to_del.push(el.value); } }); - if (to_del.length > 0) { - mungeList('delete', to_del); - } } if (select_all_records_el) { @@ -180,10 +176,29 @@ }); } - if (clear_selected_records_el) { - clear_selected_records_el.addEventListener('click', function() { - deselectSelectedOnPage(); - if (select_all_records_el) select_all_records_el.checked = false; + function clearCart() { + var req = new window.XMLHttpRequest(); + req.open('GET', '/eg/opac/api/mylist/clear'); + if (('responseType' in req) && (req.responseType = 'json')) { + req.onload = function (evt) { + var result = req.response; + handleUpdate(result); + syncPageState(); + } + } else { + // IE 10/11 + req.onload = function (evt) { + var result = JSON.parse(req.responseText); + handleUpdate(result); + syncPageState(); + } + } + req.send(); + } + + if (clear_cart_el) { + clear_cart_el.addEventListener('click', function() { + clearCart(); }); }