Bug 10808: make authority search form retain drop-down selections
authorFridolyn SOMERS <fridolyn.somers@biblibre.com>
Fri, 30 Aug 2013 08:54:00 +0000 (10:54 +0200)
committerGalen Charlton <gmc@esilibrary.com>
Tue, 10 Dec 2013 04:25:12 +0000 (04:25 +0000)
When cataloging a field defined with a thesaurus, an authority search
popup is displayed with a search from. Once operators, values and sort
selected in this form the search can be performed. The bug is that the
values entered are kept but not the selected operators and sort.

The same bug was existing in authorities module, solved by Bug 8692.

This patch corrects the bug.

Also uses in 'sort by' options the same text as search in authorities
module : Heading A-Z (default), Heading Z-A, None.

Also removes duplicated code in auth_finder.pl :
    value_mainstr => $query->param('value_mainstr') || "", ...

Test plan :
- Create a new biblio with a framework containing a field linked to a
  thesaurus. For example : 600
- Click on small icon of main entry. For example : 600$a
=> You get a search form with all operators to "contains" and sort by
   "Heading A-Z"
- Enter a value in each text box and perform search
=> You get a search form with values in text boxes and all operators
   to "contains"
- Select "starts with" in all operator comboboxes and perform search
=> You get a search form with all operators to "starts with"
- Select "is exactly" in all operator comboboxes and perform search
=> You get a search form with all operators to "is exactly"
- Select "Heading Z-A" in sort by and perform search
=> You get a search form with "Heading Z-A" in sort by
- Select "None" in sort by and perform search
=> You get a search form with "None" in sort by

Signed-off-by: Bernardo Gonzalez Kriegel <bgkriegel@gmail.com>
Comment: With both patches applied no koha-qa errors

Test
1) Original behavior is whatever selection you do before patch,
search form returns to default options
2) After patch, selection remains

Signed-off-by: Katrin Fischer <Katrin.Fischer.83@web.de>
All tests and QA script pass, further comments on second patch.

Signed-off-by: Galen Charlton <gmc@esilibrary.com>

authorities/auth_finder.pl
koha-tmpl/intranet-tmpl/prog/en/includes/auth-finder-search.inc

index 8182299..09e8d45 100755 (executable)
@@ -160,11 +160,10 @@ if ( $op eq "do_search" ) {
         from           => $from,
         to             => $to,
         numbers        => \@numbers,
-        authtypecode   => $authtypecode,
-        value_mainstr  => $query->param('value_mainstr') || "", 
-        value_main     => $query->param('value_main') || "",
-        value_any      => $query->param('value_any') || "",
-        value_match    => $query->param('value_match') || "",
+        operator_mainstr => ( @operator > 0 && $operator[0] ) ? $operator[0] : '',
+        operator_main    => ( @operator > 1 && $operator[1] ) ? $operator[1] : '',
+        operator_any     => ( @operator > 2 && $operator[2] ) ? $operator[2] : '',
+        operator_match   => ( @operator > 3 && $operator[3] ) ? $operator[3] : '',
     );
 } else {
     ( $template, $loggedinuser, $cookie ) = get_template_and_user(
@@ -183,6 +182,7 @@ if ( $op eq "do_search" ) {
 }
 
 $template->param(
+    op            => $op,
     value_mainstr => $query->param('value_mainstr') || "", 
     value_main    => $query->param('value_main') || "",
     value_any     => $query->param('value_any') || "",
index ab10baf..9adbc7f 100644 (file)
@@ -126,9 +126,21 @@ function finderjumpfull(page)
                     <input type="hidden" name="and_or" value="and" />
                     <input type="hidden" name="excluding" value="" />
                     <select name="operator" id="mainmainentry">
+                        [% IF ( operator_mainstr == 'contains' ) %]
+                        <option value="contains" selected="selected">contains</option>
+                        [% ELSE %]
                         <option value="contains">contains</option>
+                        [% END %]
+                        [% IF ( operator_mainstr == 'start' ) %]
+                        <option value="start" selected="selected">starts with</option>
+                        [% ELSE %]
                         <option value="start">starts with</option>
+                        [% END %]
+                        [% IF ( operator_mainstr == 'is' ) %]
+                        <option value="is" selected="selected">is exactly</option>
+                        [% ELSE %]
                         <option value="is">is exactly</option>
+                        [% END %]
                     </select>
                     <input id="value_mainstr" style="width:400px;" type="text" name="value_mainstr" value="[% value_mainstr |html %]" />
                     <div id="yvaluecontainermainmainentry"></div>
@@ -140,9 +152,21 @@ function finderjumpfull(page)
                     <input type="hidden" name="and_or" value="and" />
                     <input type="hidden" name="excluding" value="" />
                     <select name="operator" id="mainentry">
+                        [% IF ( operator_main == 'contains' ) %]
+                        <option value="contains" selected="selected">contains</option>
+                        [% ELSE %]
                         <option value="contains">contains</option>
+                        [% END %]
+                        [% IF ( operator_main == 'start' ) %]
+                        <option value="start" selected="selected">starts with</option>
+                        [% ELSE %]
                         <option value="start">starts with</option>
+                        [% END %]
+                        [% IF ( operator_main == 'is' ) %]
+                        <option value="is" selected="selected">is exactly</option>
+                        [% ELSE %]
                         <option value="is">is exactly</option>
+                        [% END %]
                     </select>
                     <input id="value_main" style="width:400px;" type="text" name="value_main" value="[% value_main |html %]" />
                     <div id="yvaluecontainermainentry"></div>
@@ -154,9 +178,21 @@ function finderjumpfull(page)
                     <input type="hidden" name="and_or" value="and" />
                     <input type="hidden" name="excluding" value="" />
                     <select name="operator" id="marclistanywhere">
+                        [% IF ( operator_any == 'contains' ) %]
+                        <option value="contains" selected="selected">contains</option>
+                        [% ELSE %]
                         <option value="contains">contains</option>
+                        [% END %]
+                        [% IF ( operator_any == 'start' ) %]
+                        <option value="start" selected="selected">starts with</option>
+                        [% ELSE %]
                         <option value="start">starts with</option>
+                        [% END %]
+                        [% IF ( operator_any == 'is' ) %]
+                        <option value="is" selected="selected">is exactly</option>
+                        [% ELSE %]
                         <option value="is">is exactly</option>
+                        [% END %]
                     </select>
                     <input id="value_any" style="width:400px;" type="text" name="value_any" value="[% value_any |html %]" />
                     <div id="yvaluecontainermarclist"></div>
@@ -167,18 +203,42 @@ function finderjumpfull(page)
                     <input type="hidden" name="and_or" value="and" />
                     <input type="hidden" name="excluding" value="" />
                     <select name="operator" id="marclistheading">
+                        [% IF ( operator_match == 'contains' ) %]
+                        <option value="contains" selected="selected">contains</option>
+                        [% ELSE %]
                         <option value="contains">contains</option>
+                        [% END %]
+                        [% IF ( operator_match == 'start' ) %]
+                        <option value="start" selected="selected">starts with</option>
+                        [% ELSE %]
                         <option value="start">starts with</option>
+                        [% END %]
+                        [% IF ( operator_match == 'is' ) %]
+                        <option value="is" selected="selected">is exactly</option>
+                        [% ELSE %]
                         <option value="is">is exactly</option>
+                        [% END %]
                     </select>
                     <input type="text" name="value_match" value="[% value_match |html %]" />
                 </li>
         <li>
         <label for="orderby">Sort by: </label>
         <select name="orderby" id="orderby">
-            <option value="">No order</option>
-            <option value="HeadingAsc" selected="selected">Heading ascendant</option>
-            <option value="HeadingDsc">Heading descendant</option>
+            [% IF ( orderby == 'HeadingAsc' ) %]
+            <option value="HeadingAsc" selected="selected">Heading A-Z</option>
+            [% ELSE %]
+            <option value="HeadingAsc">Heading A-Z</option>
+            [% END %]
+            [% IF ( orderby == 'HeadingDsc' ) %]
+            <option value="HeadingDsc" selected="selected">Heading Z-A</option>
+            [% ELSE %]
+            <option value="HeadingDsc">Heading Z-A</option>
+            [% END %]
+            [% IF ( orderby == '' && op ) %]
+            <option value="" selected="selected">None</option>
+            [% ELSE %]
+            <option value="">None</option>
+            [% END %]
         </select>
         </li></ol></fieldset>
         [% IF source == 'auth' %]