Fix issue where boolean operators were used on non-boolean searches
authorFredric T Parks <fparks@catalystitservices.com>
Fri, 14 Feb 2014 01:03:29 +0000 (17:03 -0800)
committerFredric T Parks <fparks@catalystitservices.com>
Fri, 14 Feb 2014 01:03:29 +0000 (17:03 -0800)
because query parser isn't reinstantiated after each search.
I alse modified boolean.tt2 so it displays filters just like advanced search

Signed-off-by: Fredrick T Parks <fparks@catalystitservices.com>
modified:   Open-ILS/src/perlmods/lib/OpenILS/Application/Storage/Publisher/metabib.pm
modified:   Open-ILS/src/perlmods/lib/OpenILS/Application/Storage/QueryParser.pm
modified:   Open-ILS/src/templates/opac/parts/advanced/boolean.tt2

Open-ILS/src/perlmods/lib/OpenILS/Application/Storage/Publisher/metabib.pm
Open-ILS/src/perlmods/lib/OpenILS/Application/Storage/QueryParser.pm
Open-ILS/src/templates/opac/parts/advanced/boolean.tt2

index 0e482cb..bdbbf33 100644 (file)
@@ -3206,7 +3206,6 @@ sub query_parser_fts_wrapper {
     _initialize_parser($parser) unless $parser->initialization_complete;
 
     #If this is a boolean search set the human readable operators
-    #XXX hard coded to just use english for now. Needs to be able to take forign keywords
     if(exists $args{"_boolean"}) {
         $operators = retreave_boolean_keywords($args{"_boolean"});
 
@@ -3297,7 +3296,14 @@ sub query_parser_fts_wrapper {
 
     $log->debug("Full QueryParser query: $query", DEBUG);
 
-    return query_parser_fts($self, $client, query => $query, _simple_plan => $base_plan->simple_plan );
+    my $results = query_parser_fts($self, $client, query => $query, _simple_plan => $base_plan->simple_plan );
+
+    #If this is a boolean keyword search reset to the default operators, so standard searches are not affected
+    if(exists $args{"_boolean"}) {
+        $parser->reset_operators();
+    }
+
+    return $results;
 }
 __PACKAGE__->register_method(
     api_name    => "open-ils.storage.biblio.multiclass.staged.search_fts",
index 1b5458d..16dda40 100644 (file)
@@ -117,6 +117,24 @@ sub operators {
     return $parser_config{$class}{operators};
 }
 
+=head2 reset_operators
+
+Resets the operators to %parser_config
+=cut
+sub reset_operators {
+    my $class = shift;
+
+    #foreach my $op (keys %parser_config{$class}{operators}) {
+    #    $class->operator($op, $parser_config{$class}{operators}{$op});
+    #}
+    for my $o (keys %{QueryParser->operators}) {
+        $class->operator($o => QueryParser->operator($o));
+    }
+
+    return $class->operators();
+}
+
 sub allow_nested_modifiers {
     my $class = shift;
     my $v = shift;
index 05c8b03..d24dc1d 100644 (file)
@@ -34,7 +34,8 @@
         <span>
             <input id='search-submit-go' type="submit" value="[% l('Search') %]" alt="[% l('Search') %]" class="opac-button"
                 onclick='setTimeout(function(){$("search-submit-spinner").className=""; $("search-submit-go").className="hidden"}, 2000)'/>
-            <img id='search-submit-spinner' src='/opac/images/progressbar_green.gif' class='hidden' alt=''/>
+            <img id='search-submit-spinner' src='/opac/images/progressbar_green.gif' 
+                class='hidden' alt="[% l('Search in progress icon') %]"/>
         </span>
     </div>
 
         NEXT IF adv_chunk.adv_hide;
         IF in_row == 0;
             in_row = 1; %]
-            <div id='adv_filter_block'>
+            <div class='adv_filter_block'>
 [%
         END; %]
-            <div id='adv_filter_block_item'>
+            <div class='adv_filter_block_item'>
             <div valign='top'[% IF adv_chunk.js_only %]
                 id='adv_chunk_[% adv_chunk.adv_special %]'
                 class='hidden'[% END %]>
@@ -70,8 +71,8 @@
                             </div>
 [%
                 CASE "pub_year"; %]
-                            <select name='pubdate' onchange='
-                                if(this.selectedIndex == 3)
+                            <select name='pubdate' 
+                                onchange='if(this.selectedIndex == 3)
                                     unHideMe($("adv_global_pub_date_2_span"));
                                 else
                                     hideMe($("adv_global_pub_date_2_span"));'>
         END;
     END; %]
 
-            </div>
         </div>
     </div>
 </div>