From b8227738b2770c7fc492760c1b5b8fec3a4cfb40 Mon Sep 17 00:00:00 2001 From: Dan Pearl Date: Fri, 2 Mar 2018 13:37:43 -0500 Subject: [PATCH] LP173259 - Array error appears in search box while placing hold after advanced search The place-hold code assumed it was not in "_adv" parameter mode. This assumption was faulty. Now, the link generated for Place Hold will translate the argument list to the single-line format that Place Hold expected, when necessary. Testing procedure: Set holds for all the following items, observing that the searchbox in the searchbar is not blank and does not contain ARRAY(xxx). Basic Search / Place Hold Basic Search / Record Detail / Place Hold Advanced Search with a plain search term / Place Hold Advanced Search with a plain search term / Record Detail / Place Hold Advanced Search with a fancy (multiline) search term / Place Hold Advanced Search with a fancy (multiline) search term / Record Detail / Place Hold Signed-off-by: Dan Pearl Signed-off-by: Jason Stephenson Signed-off-by: Dan Wells --- .../src/templates/opac/parts/result/table.tt2 | 46 +++++++++++++++---- 1 file changed, 38 insertions(+), 8 deletions(-) diff --git a/Open-ILS/src/templates/opac/parts/result/table.tt2 b/Open-ILS/src/templates/opac/parts/result/table.tt2 index c913555923..432dffaa83 100644 --- a/Open-ILS/src/templates/opac/parts/result/table.tt2 +++ b/Open-ILS/src/templates/opac/parts/result/table.tt2 @@ -56,25 +56,40 @@ IF rec.mmr_id; IF rec.mr_constituent_count > 1; # metarecords link to record list page - record_url = mkurl(ctx.opac_root _ '/results', - {metarecord => rec.mmr_id}, ['page']); + record_url_path = ctx.opac_root _ '/results'; + add_parms = {metarecord => rec.mmr_id}; + del_parms = ['page']; ELSE; # for MR, bre_id refers to the master and in # this case, only, record - record_url = mkurl(ctx.opac_root _ '/record/' _ attrs.mr_constituent_ids.0, { badges => rec.badges.join(',') }); + record_url_path = ctx.opac_root _ '/record/' _ attrs.mr_constituent_ids.0; + add_parms = { badges => rec.badges.join(',') }; + del_parms = []; END; hold_type = 'M'; ELSE; - record_url = mkurl(ctx.opac_root _ '/record/' _ rec.bre_id, { badges => rec.badges.join(',') }); + record_url_path = ctx.opac_root _ '/record/' _ rec.bre_id; + add_parms = { badges => rec.badges.join(',') }; + del_parms = []; hold_type = 'T'; END; - -%] + + IF is_advanced; + # Do not pass "advanced params" to result detail code. + # Instead, pass the scrubed query in one-line form + del_parms = del_parms.merge(['query', 'bool', + 'qtype', 'contains', '_adv']); + add_parms.import( + {query => ctx.naive_query_scrub(ctx.user_query)} ); + END; + %] [% result_count; result_count = result_count + 1 %]. - [% l('Book cover') %] + [% l('Book cover') %]
@@ -386,10 +401,25 @@ END; && (ctx.holds_block.enabled != 'true' || attrs.org_copy_counts.$search_ou.available == 0) ) %] + + [% del_parms = ['tag','subfield','term','_special', + 'sort','page']; + add_parms = {hold_target => rec.id, + hold_type => hold_type, + hold_source_page => mkurl()}; + + IF is_advanced; + # Do not pass "advanced params" to hold code + # Instead, pass the scrubed query in one-line form + del_parms = del_parms.merge(['query', 'bool', + 'qtype', 'contains', '_adv']); + add_parms.import( + {query => ctx.naive_query_scrub(ctx.user_query)}); + END; %] +