From: Galen Charlton Date: Wed, 23 May 2018 20:59:10 +0000 (-0400) Subject: add action for emailing cart X-Git-Url: https://old-git.evergreen-ils.org/?a=commitdiff_plain;h=d4744c5785c59d0ce45801354b8c3806c4954373;p=working%2FEvergreen.git add action for emailing cart 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 f69a0e6bed..d2dd2af759 100644 --- a/Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader.pm +++ b/Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader.pm @@ -151,7 +151,7 @@ sub load { return $self->load_mylist_delete if $path =~ m|opac/mylist/delete|; return $self->load_mylist_move if $path =~ m|opac/mylist/move|; return $self->load_mylist_print if $path =~ m|opac/mylist/doprint|; - return $self->load_mylist if $path =~ m|opac/mylist|; + return $self->load_mylist if $path =~ m|opac/mylist| && $path !~ m|opac/mylist/email| && $path !~ m|opac/mylist/doemail|; return $self->load_cache_clear if $path =~ m|opac/cache/clear|; return $self->load_temp_warn_post if $path =~ m|opac/temp_warn/post|; return $self->load_temp_warn if $path =~ m|opac/temp_warn|; @@ -195,6 +195,11 @@ sub load { $self->apache->headers_out->add("cache-control" => "no-store, no-cache, must-revalidate"); $self->apache->headers_out->add("expires" => "-1"); + if ($path =~ m|opac/mylist/email|) { + (undef, $self->ctx->{mylist}) = $self->fetch_mylist; + } + $self->load_simple("mylist/email") if $path =~ m|opac/mylist/email|; + return $self->load_mylist_email if $path =~ m|opac/mylist/doemail|; return $self->load_email_record if $path =~ m|opac/record/email|; return $self->load_place_hold if $path =~ m|opac/place_hold|; 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 6fbd2faaf3..22b6398e9f 100644 --- a/Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader/Container.pm +++ b/Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader/Container.pm @@ -193,6 +193,32 @@ sub load_mylist_print { return $self->generic_redirect($url); } +sub load_mylist_email { + my $self = shift; + + my $cache_key = $self->cgi->cookie((ref $self)->COOKIE_ANON_CACHE); + + if (!$cache_key) { + return $self->generic_redirect; + } + + my $url = sprintf( + "%s://%s%s/record/email/%s", + $self->ctx->{proto}, + $self->ctx->{hostname}, + $self->ctx->{opac_root}, + $cache_key, + ); + + my $redirect = $self->cgi->param('redirect_to'); + $url .= '?redirect_to=' . uri_escape_utf8($redirect); + my $clear_cart = $self->cgi->param('clear_cart'); + $url .= '&is_list=1'; + $url .= '&clear_cart=1' if $clear_cart; + + return $self->generic_redirect($url); +} + sub load_mylist_move { my $self = shift; my @rec_ids = $self->cgi->param('record'); diff --git a/Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader/Record.pm b/Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader/Record.pm index a30f64ad97..f696e488cb 100644 --- a/Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader/Record.pm +++ b/Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader/Record.pm @@ -550,14 +550,41 @@ sub load_print_record { sub load_email_record { my $self = shift; - my $rec_id = $self->ctx->{page_args}->[0] + my $rec_or_list_id = $self->ctx->{page_args}->[0] or return Apache2::Const::HTTP_BAD_REQUEST; - $self->{ctx}->{bre_id} = $rec_id; + my $is_list = $self->cgi->param('is_list'); + my $list; + if ($is_list) { + + $list = $U->simplereq( + 'open-ils.actor', + 'open-ils.actor.anon_cache.get_value', + $rec_or_list_id, (ref $self)->ANON_CACHE_MYLIST); + + if(!$list) { + $list = []; + } + + { # sanitize + no warnings qw/numeric/; + $list = [map { int $_ } @$list]; + $list = [grep { $_ > 0} @$list]; + }; + } else { + $list = $rec_or_list_id; + $self->{ctx}->{bre_id} = $rec_or_list_id; + } + $U->simplereq( 'open-ils.search', 'open-ils.search.biblio.record.email', - $self->ctx->{authtoken}, $rec_id); + $self->ctx->{authtoken}, $list); + + if ($self->cgi->param('clear_cart')) { + $self->clear_anon_cache; + } + $self->ctx->{'redirect_to'} = $self->cgi->param('redirect_to'); return Apache2::Const::OK; } diff --git a/Open-ILS/src/templates/opac/mylist/email.tt2 b/Open-ILS/src/templates/opac/mylist/email.tt2 new file mode 100644 index 0000000000..9271d8ed4b --- /dev/null +++ b/Open-ILS/src/templates/opac/mylist/email.tt2 @@ -0,0 +1,24 @@ +[%- PROCESS "opac/parts/header.tt2"; + PROCESS "opac/parts/misc_util.tt2"; + WRAPPER "opac/parts/base.tt2"; + INCLUDE "opac/parts/topnav.tt2"; + ctx.page_title = l("Confirm Cart Email") %] +

[% l('Confirm Cart Email') %]

+ [% INCLUDE "opac/parts/searchbar.tt2" %] +
+
+

[% l('Please confirm that you want to email the [_1] titles in the cart.', 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 c6cccf7032..04c4f79c44 100644 --- a/Open-ILS/src/templates/opac/parts/cart.tt2 +++ b/Open-ILS/src/templates/opac/parts/cart.tt2 @@ -5,7 +5,7 @@
  • [% l('View Cart') %]
  • [% l('Place Holds') %]
  • [% l('Print Title Details') %]
  • -
  • [% l('Email Title Details') %]
  • +
  • [% l('Email Title Details') %]
  • [% l('Add Cart to Saved List') %]
  • [% l('Clear Cart') %]
  • diff --git a/Open-ILS/src/templates/opac/record/email.tt2 b/Open-ILS/src/templates/opac/record/email.tt2 index 63520fd2b0..88cf88cd76 100644 --- a/Open-ILS/src/templates/opac/record/email.tt2 +++ b/Open-ILS/src/templates/opac/record/email.tt2 @@ -19,7 +19,11 @@ [% END %]
    + [% IF ctx.redirect_to %] +

    [ [% l("Return") %] ]

    + [% ELSE %]

    [ [% l("Back to Record") %] ]

    + [% END %]