From 95f607400e1adc51c8dea8c38a917ed85c7c2772 Mon Sep 17 00:00:00 2001 From: Jason Stephenson Date: Wed, 3 Oct 2012 12:42:01 -0400 Subject: [PATCH] LP1052941: Internal Server Error when adding to My List in staff client. Don't redirect in EGCatLoader/Account.pm when in staff client context and we're adding to a My List/Bookbag. Add a wrapper macro to bookbag_actions.tt2 to wrap the add to book bag URLs with some javascript that opens a new tab in the staff client. This is to prevent the staff person from losing their search results as they would if the new URL were opened in their current tab. Signed-off-by: Jason Stephenson Signed-off-by: Ben Shum --- .../lib/OpenILS/WWW/EGCatLoader/Account.pm | 11 +++++--- .../src/templates/opac/parts/bookbag_actions.tt2 | 30 ++++++++++++++-------- 2 files changed, 27 insertions(+), 14 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 91576d4981..852b11ca26 100644 --- a/Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader/Account.pm +++ b/Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader/Account.pm @@ -1776,9 +1776,12 @@ sub load_myopac_bookbags { # or "See all" popmenu items. if (my $add_rec = $self->cgi->param('add_rec')) { $self->ctx->{add_rec} = $add_rec; - $self->ctx->{where_from} = $self->ctx->{referer}; - if ( my $anchor = $self->cgi->param('anchor') ) { - $self->ctx->{where_from} =~ s/#.*|$/#$anchor/; + # But not in the staff client, 'cause that breaks things. + unless ($self->ctx->{is_staff}) { + $self->ctx->{where_from} = $self->ctx->{referer}; + if ( my $anchor = $self->cgi->param('anchor') ) { + $self->ctx->{where_from} =~ s/#.*|$/#$anchor/; + } } } @@ -1921,7 +1924,7 @@ sub load_myopac_bookbag_update { last unless $success; } # Redirect back where we came from if we have an anchor parameter: - if ( my $anchor = $cgi->param('anchor') ) { + if ( my $anchor = $cgi->param('anchor') && !$self->ctx->{is_staff}) { $url = $self->ctx->{referer}; $url =~ s/#.*|$/#$anchor/; } elsif ($cgi->param('where_from')) { diff --git a/Open-ILS/src/templates/opac/parts/bookbag_actions.tt2 b/Open-ILS/src/templates/opac/parts/bookbag_actions.tt2 index 1ba888ebf8..5aca80dfbc 100644 --- a/Open-ILS/src/templates/opac/parts/bookbag_actions.tt2 +++ b/Open-ILS/src/templates/opac/parts/bookbag_actions.tt2 @@ -2,6 +2,16 @@ dsetting = "opac.default_list"; tclass = "temporary divider"; + # Wrap a url to open in a new tab in staff client. + MACRO opac_wrap(url) BLOCK; + IF ctx.is_staff; + # void(0) to return false and not go to new page in current tab. + "javascript:xulG.new_tab(xulG.urls.XUL_OPAC_WRAPPER, {}, {'opac_url' : 'oils://remote" _ url _ "'});void(0);"; + ELSE; + url; + END; + END; + IF rec.id; # Results table context ctx.bre_id = rec.id; @@ -20,9 +30,9 @@ tclass = "temporary"; END; - href = mkurl(ctx.opac_root _ '/mylist/add', { + href = opac_wrap(mkurl(ctx.opac_root _ '/mylist/add', { record => ctx.bre_id, anchor => rec_anchor - }, stop_parms); + }, stop_parms)); %]