LP1732591 - Eliminate unwanted ARRAY messages in searchboxes. user/dyrcona/LP1732591_ARRAY_error_in_hold_signoff
authorDan Pearl <dpearl@cwmars.org>
Fri, 23 Mar 2018 19:47:08 +0000 (15:47 -0400)
committerJason Stephenson <jason@sigio.com>
Wed, 18 Apr 2018 13:42:01 +0000 (09:42 -0400)
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 <dpearl@cwmars.org>
Signed-off-by: Jason Stephenson <jason@sigio.com>
Open-ILS/src/templates/opac/parts/record/summary.tt2
Open-ILS/src/templates/opac/parts/result/table.tt2

index 33ef814..7797c5e 100644 (file)
                 IF ctx.place_unfillable ||
                     ( attrs.marc_xml.findnodes('//*[local-name()="holdings" and @has_holdable="true"]').size
                         && (ctx.holds_block.enabled != 'true' || !attrs.org_copy_counts.$search_ou.available)
-                    );
-
-             add_parms = {hold_target => ctx.bre_id, 
-                          hold_type => 'T', 
-                          hold_source_page => mkurl()};
-
-             IF is_advanced;
-                   # Do not pass "advanced params" to hold code
-                   # Instead, pass the scrubed query in one-line form
-                   stop_parms = stop_parms.merge(['query', 'bool', 
-                                    'qtype', 'contains', '_adv']);
-                   add_parms = add_parms.merge({query = ctx.naive_query_scrub(ctx.user_query)});
-             END;
+                    )
              %]
             <div class="rdetail_aux_utils place_hold">
-                <a href="[% mkurl(ctx.opac_root _ '/place_hold', add_parms, stop_parms) %]" 
+                <a href="[% mkurl(ctx.opac_root _ '/place_hold', 
+                    {hold_target => ctx.bre_id, hold_type => 'T', hold_source_page => mkurl()}, stop_parms) %]" 
                 class="no-dec" rel="nofollow" vocab=""><img src="[% ctx.media_prefix %]/images/green_check.png[% ctx.cache_key %]"
                     [% img_alt(l('Place Hold on [_1]', attrs.title)) %]/>
                 <span class="place_hold">[% l('Place Hold') %]</span></a>
index 075537f..432dffa 100644 (file)
                             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;
+                        %]
                         <tr class="result_table_row">
                                             <td class="results_row_count" name="results_row_count">[%
                                                     result_count; result_count = result_count + 1
                                                 %].</td>
                                             <td class='result_table_pic_header'>
-                                                <a href="[% record_url %]"><img alt="[% l('Book cover') %]"
+                                                <a href="[% mkurl(record_url_path, add_parms, del_parms); %]">
+                                                 <img alt="[% l('Book cover') %]"
                                                         name='item_jacket' class='result_table_pic' width="55"
                                                         src='[% ctx.media_prefix %]/opac/extras/ac/jacket/small/r/[% rec.bre_id | uri %]' /></a><br />
                                             </td>
@@ -386,6 +401,7 @@ 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, 
@@ -395,13 +411,10 @@ END;
                                                         IF is_advanced;
                                                             # Do not pass "advanced params" to hold code
                                                             # Instead, pass the scrubed query in one-line form
-                                                            add_del_parms = ['query', 'bool', 
-                                                                            'qtype', 'contains', '_adv'];
-                                                            del_parms = del_parms.merge(add_del_parms);
-                                                            add_parms = {hold_target => rec.id, 
-                                                                     hold_type => hold_type, 
-                                                                     hold_source_page => mkurl(),
-                                                                     query = ctx.naive_query_scrub(ctx.user_query)};
+                                                            del_parms = del_parms.merge(['query', 'bool', 
+                                                                            'qtype', 'contains', '_adv']);
+                                                            add_parms.import(
+                                                                {query => ctx.naive_query_scrub(ctx.user_query)});
                                                         END; %]
 
                                                         <div class="results_aux_utils place_hold"><a