Changeset 266

Show
Ignore:
Timestamp:
11/02/03 11:24:03 (5 years ago)
Author:
ivorw
Message:

Allowed return_tt_vars to process single match response.
This is mainly to make it easier to write tests.

Also fixed multi-word category and locale search.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • trunk/lib/OpenGuides/SuperSearch.pm

    r260 r266  
    102102 
    103103        # For 0 or many we display results, for 1 we redirect to that page. 
    104         if ( $numres == 1 ) { 
     104        if ( $numres == 1 && !$self->{return_tt_vars}) { 
    105105            my ($node) = each %results; 
    106106            my $output = CGI::redirect( $self->{wikimain} . "?" 
     
    193193                $self->{wikitext}{$key} ||= $self->_mungepage( $text ); 
    194194            } 
    195  
    196             # Search categories. 
    197             my @catmatches = $wiki->list_nodes_by_metadata( 
     195        } 
     196 
     197        my $meta_title = join '_',@leaves; 
     198        my $matchstr = join ' ',@leaves; 
     199 
     200        # Search categories. 
     201        my @catmatches = $wiki->list_nodes_by_metadata( 
    198202                                 metadata_type  => "category", 
    199                                  metadata_value => $_, 
     203                                 metadata_value => $meta_title, 
    200204                                 ignore_case    => 1, 
    201             ); 
    202  
    203             foreach my $node ( @catmatches ) { 
     205        ); 
     206 
     207        foreach my $node ( @catmatches ) { 
    204208                my $key = $wiki->formatter->node_name_to_node_param( $node ); 
    205209                my $text = $node. " " . $wiki->retrieve_node( $node ); 
    206210                $self->{wikitext}{$key} ||= $self->_mungepage( $text ); 
    207211                # Append this category so the regex finds it later. 
    208                 $self->{wikitext}{$key} .= " [$_]"; 
    209             } 
    210  
    211             # Search locales. 
    212             my @locmatches = $wiki->list_nodes_by_metadata( 
     212                $self->{wikitext}{$key} .= " [$matchstr]"; 
     213        } 
     214 
     215        # Search locales. 
     216        my @locmatches = $wiki->list_nodes_by_metadata( 
    213217                                 metadata_type  => "locale", 
    214                                  metadata_value => $_, 
     218                                 metadata_value => $meta_title, 
    215219                                 ignore_case    => 1, 
    216             ); 
    217             foreach my $node ( @locmatches ) { 
     220        ); 
     221        foreach my $node ( @locmatches ) { 
    218222                my $key = $wiki->formatter->node_name_to_node_param( $node ); 
    219223                my $text = $node. " " . $wiki->retrieve_node( $node ); 
    220224                $self->{wikitext}{$key} ||= $self->_mungepage( $text ); 
    221225                # Append this locale so the regex finds it later. 
    222                 $self->{wikitext}{$key} .= " [$_]"; 
    223             } 
    224         } # foreach (@leaves) 
     226                $self->{wikitext}{$key} .= " [$matchstr]"; 
     227        } 
    225228    } # $op eq 'word' 
    226229} # sub _prime_wikitext