Changeset 266


Ignore:
Timestamp:
Nov 2, 2003, 11:24:03 AM (18 years ago)
Author:
Ivor Williams
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.

File:
1 edited

Legend:

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

    r265 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
Note: See TracChangeset for help on using the changeset viewer.