[Koha-patches] [PATCH] Bug 8206: Specify index in OPAC authority search

Jared Camins-Esakov jcamins at cpbibliography.com
Thu Jun 14 01:29:27 CEST 2012


Adds a dropdown to allow the user to choose to search the 'mainentry,'
'match-heading,' and 'see-from' indexes, in addition to the 'any' index
which is the default.

To test (you will need authority records with see-from and
see-also headings):
1. Go to the browse subjects and authors section in the OPAC
2. Do a search for a fairly generic term that is used as a
   see-also term in a lot of records. Note that your search
   results include both the record that you wanted and all
   the other records that refer to it.
3. Apply the patch.
4. Repeat the search from step 2. Notice there is no change
   to the results.
5. Repeat the search from step 2, but choose "in main entry"
   and observe that you are now only seeing authority records
   with the search entered in their main entry.
6. Repeat the search from step 2, but choose "in any heading"
   and observe that the results are the same as in step 2. This
   is intentional, so that in the future notes in authorities
   can be made searchable.
7. Search for an obsolete form of heading with the "in keyword"
   option selected. Notice what results you get.
8. Repeat the search from step 7 with the "in see from heading"
   option selected, and notice that the results are more specific
   (at least if the term you are searching for is generic enough
   to find false positives in keyword searches on current headings)
---
 .../prog/en/modules/opac-authorities-home.tt       |   16 +++++++++++-----
 opac/opac-authorities-home.pl                      |   20 ++++++--------------
 2 files changed, 17 insertions(+), 19 deletions(-)

diff --git a/koha-tmpl/opac-tmpl/prog/en/modules/opac-authorities-home.tt b/koha-tmpl/opac-tmpl/prog/en/modules/opac-authorities-home.tt
index 04d5a8c..8357fe7 100644
--- a/koha-tmpl/opac-tmpl/prog/en/modules/opac-authorities-home.tt
+++ b/koha-tmpl/opac-tmpl/prog/en/modules/opac-authorities-home.tt
@@ -22,15 +22,21 @@
                 [% END %]
                 [% END %]
                 </select>
-                <select name="operatorc" id="anywhere">
+                <select name="operator" id="anywhere">
                     <option value="contains">contains</option>
                     <option value="start">starts with</option>
                     <option value="is">is exactly</option>
                 </select>
-                <input type="text" name="valuec" id="anywhere_value" value="[% value %]" />
-                <input type="hidden" name="marclistc" value="" />
-                    <input type="hidden" name="and_ora" value="and" />
-                <input type="hidden" name="excludingc" value="" />
+                <input type="text" name="value" id="value" value="[% value %]" />
+                <select name="marclist" id="marclist">
+                    <option value="any" selected="selected">in keyword</option>
+                    <option value="mainentry">in main entry</option>
+                    <option value="match">in any heading</option>
+                    <option value="see-from">in see from heading</option>
+                </select>
+                <input type="hidden" name="marclist" value="" />
+                <input type="hidden" name="and_ora" value="and" />
+                <input type="hidden" name="excluding" value="" />
             </li>
             <li><label for="orderby">Order by: </label><select name="orderby" id="orderby">
                 <option value="">None</option>
diff --git a/opac/opac-authorities-home.pl b/opac/opac-authorities-home.pl
index acff077..d244729 100755
--- a/opac/opac-authorities-home.pl
+++ b/opac/opac-authorities-home.pl
@@ -58,12 +58,12 @@ foreach my $thisauthtype (
 }
 
 if ( $op eq "do_search" ) {
-    my @marclist = ($query->param('marclista'),$query->param('marclistb'),$query->param('marclistc'));
-    my @and_or = ($query->param('and_ora'),$query->param('and_orb'),$query->param('and_orc'));
-    my @excluding = ($query->param('excludinga'),$query->param('excludingb'),$query->param('excludingc'),);
-    my @operator = ($query->param('operatora'),$query->param('operatorb'),$query->param('operatorc'));
+    my @marclist = ($query->param('marclist'));
+    my @and_or = ($query->param('and_or'));
+    my @excluding = ($query->param('excluding'),);
+    my @operator = ($query->param('operator'));
     my $orderby = $query->param('orderby');
-    my @value = ($query->param('valuea') || "",$query->param('valueb') || "",$query->param('valuec') || "",);
+    my @value = ($query->param('value') || "",);
 
     $resultsperpage = $query->param('resultsperpage');
     $resultsperpage = 20 if ( !defined $resultsperpage );
@@ -90,15 +90,7 @@ if ( $op eq "do_search" ) {
         $displaynext = 1;
     }
 
-    my @field_data = ();
-
-    foreach my $letter (qw/a b c/){
-        push @field_data, { term => "marclist$letter" , val => $query->param("marclist$letter") || ''};
-        push @field_data, { term => "and_or$letter" , val => $query->param("and_or$letter") || ''};
-        push @field_data, { term => "excluding$letter" , val => $query->param("excluding$letter") || ''};
-        push @field_data, { term => "operator$letter" , val => $query->param("operator$letter") || ''};
-        push @field_data, { term => "value$letter" , val => $query->param("value$letter") || ''};
-    }
+    my @field_data = ( { term => "marclist" , val => $query->param("marclist") || ''} );
 
     my @numbers = ();
 
-- 
1.7.2.5



More information about the Koha-patches mailing list