From 59abac987e7a9a48049cfe4873346e9ab23c077e Mon Sep 17 00:00:00 2001 From: Galen Charlton Date: Thu, 7 Jun 2018 17:43:14 -0400 Subject: [PATCH] teach create new list action how to move contents of cart to it note that the mkurl macro is now also getting the beginnings of a hard-coded list of params to always clear so that move_cart_by_default doesn't travel around unnecessarily --- .../lib/OpenILS/WWW/EGCatLoader/Account.pm | 33 ++++++++++++++++------ Open-ILS/src/templates/opac/myopac/lists.tt2 | 13 +++++++++ Open-ILS/src/templates/opac/parts/cart.tt2 | 2 +- Open-ILS/src/templates/opac/parts/header.tt2 | 4 +++ 4 files changed, 42 insertions(+), 10 deletions(-) diff --git a/Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader/Account.pm b/Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader/Account.pm index b1c678bdcf..c45a07a604 100644 --- a/Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader/Account.pm +++ b/Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader/Account.pm @@ -2490,6 +2490,7 @@ sub load_myopac_bookbag_update { my @add_rec = $cgi->param('add_rec') || $cgi->param('record'); my @selected_item = $cgi->param('selected_item'); my $shared = $cgi->param('shared'); + my $move_cart = $cgi->param('move_cart'); my $name = $cgi->param('name'); my $description = $cgi->param('description'); my $success = 0; @@ -2518,15 +2519,29 @@ sub load_myopac_bookbag_update { $list->pub($shared ? 't' : 'f'); $success = $U->simplereq('open-ils.actor', 'open-ils.actor.container.create', $e->authtoken, 'biblio', $list); - if (ref($success) ne 'HASH' && scalar @add_rec) { - $list_id = (ref($success)) ? $success->id : $success; - foreach my $add_rec (@add_rec) { - my $item = Fieldmapper::container::biblio_record_entry_bucket_item->new; - $item->bucket($list_id); - $item->target_biblio_record_entry($add_rec); - $success = $U->simplereq('open-ils.actor', - 'open-ils.actor.container.item.create', $e->authtoken, 'biblio', $item); - last unless $success; + if (ref($success) ne 'HASH') { + if (scalar @add_rec) { + $list_id = (ref($success)) ? $success->id : $success; + foreach my $add_rec (@add_rec) { + my $item = Fieldmapper::container::biblio_record_entry_bucket_item->new; + $item->bucket($list_id); + $item->target_biblio_record_entry($add_rec); + $success = $U->simplereq('open-ils.actor', + 'open-ils.actor.container.item.create', $e->authtoken, 'biblio', $item); + last unless $success; + } + } + if ($move_cart) { + my ($cache_key, $list) = $self->fetch_mylist(0, 1); + foreach my $add_rec (@$list) { + my $item = Fieldmapper::container::biblio_record_entry_bucket_item->new; + $item->bucket($list_id); + $item->target_biblio_record_entry($add_rec); + $success = $U->simplereq('open-ils.actor', + 'open-ils.actor.container.item.create', $e->authtoken, 'biblio', $item); + last unless $success; + } + $self->clear_anon_cache; } } $url = $cgi->param('where_from') if ($success && $cgi->param('where_from')); diff --git a/Open-ILS/src/templates/opac/myopac/lists.tt2 b/Open-ILS/src/templates/opac/myopac/lists.tt2 index 53b604aa4f..d46dc345fb 100644 --- a/Open-ILS/src/templates/opac/myopac/lists.tt2 +++ b/Open-ILS/src/templates/opac/myopac/lists.tt2 @@ -59,6 +59,19 @@ + [% IF ctx.mylist.size %] + + + + + + + + + [% END %]   diff --git a/Open-ILS/src/templates/opac/parts/cart.tt2 b/Open-ILS/src/templates/opac/parts/cart.tt2 index 43afb3071a..a89f89d62f 100644 --- a/Open-ILS/src/templates/opac/parts/cart.tt2 +++ b/Open-ILS/src/templates/opac/parts/cart.tt2 @@ -7,7 +7,7 @@
  • [% l('Print Title Details') %]
  • [% l('Email Title Details') %]
  • [% IF !ctx.is_browser_staff %] -
  • [% l('Add Cart to Saved List') %]
  • +
  • [% l('Add Cart to Saved List') %]
  • [% END %] [% IF ctx.is_browser_staff %]
  • [% l('Add Cart to Bucket') %]
  • diff --git a/Open-ILS/src/templates/opac/parts/header.tt2 b/Open-ILS/src/templates/opac/parts/header.tt2 index de933e9e62..d5c0871b64 100644 --- a/Open-ILS/src/templates/opac/parts/header.tt2 +++ b/Open-ILS/src/templates/opac/parts/header.tt2 @@ -61,6 +61,10 @@ cgi.delete_all(); END; + # some standing, hardcoded parameters to always clear + # because they're used for specific, transitory purposes + cgi.delete('move_cart_by_default'); + # x and y are artifacts of using tags # instead of true submit buttons, and their values are never used. cgi.delete('x', 'y'); -- 2.11.0