From 583bf046ad122225c749105b973b1d78293271ec 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 81edf810e7..7a41978b97 100644 --- a/Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader/Account.pm +++ b/Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader/Account.pm @@ -1770,9 +1770,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/; + } } } @@ -1915,7 +1918,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)); %]