Changeset 373


Ignore:
Timestamp:
Jun 10, 2004, 9:51:00 PM (18 years ago)
Author:
kake
Message:

Move show_index stuff into OpenGuides.pm

Location:
trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/lib/OpenGuides.pm

    r372 r373  
    301301}
    302302
     303=item B<show_index>
     304
     305  $guide->show_index(
     306                      type   => "category",
     307                      value  => "pubs",
     308                    );
     309
     310  # RDF version.
     311  $guide->show_index(
     312                      type   => "locale",
     313                      value  => "Holborn",
     314                      format => "rdf",
     315                    );
     316
     317=cut
     318
     319sub show_index {
     320    my ($self, %args) = @_;
     321    my $wiki = $self->wiki;
     322    my $formatter = $wiki->formatter;
     323    my %tt_vars;
     324    my @selnodes;
     325
     326    if ( $args{type} and $args{value} ) {
     327        if ( $args{type} eq "fuzzy_title_match" ) {
     328            my %finds = $wiki->fuzzy_title_match( $args{value} );
     329            @selnodes = sort { $finds{$a} <=> $finds{$b} } keys %finds;
     330            $tt_vars{criterion} = {
     331                type  => $args{type},  # for RDF version
     332                value => $args{value}, # for RDF version
     333                name  => $CGI->escapeHTML("Fuzzy Title Match on '$args{value}')
     334            };
     335        } else {
     336            @selnodes = $wiki->list_nodes_by_metadata(
     337                metadata_type  => $args{type},
     338                metadata_value => $args{value},
     339                ignore_case    => 1,
     340            );
     341            my $name = ucfirst($args{type}) . " $args{value}" ;
     342            my $url = $self->config->{_}->{script_name}
     343                      . ucfirst( $args{type} )
     344                      . "_"
     345                      . uri_escape(
     346                              $formatter->node_name_to_node_param($args{value})
     347                                  );
     348            $tt_vars{criterion} = {
     349                type  => $args{type},
     350                value => $args{value}, # for RDF version
     351                name  => $CGI->escapeHTML( $name ),
     352                url   => $url,
     353            };
     354        }
     355    } else {
     356        @selnodes = $wiki->list_all_nodes();
     357    }
     358
     359    my @nodes = map { { name      => $_,
     360                        node_data => { $wiki->retrieve_node( name => $_ ) },
     361                        param     => $formatter->node_name_to_node_param($_) }
     362                    } sort @selnodes;
     363
     364    $tt_vars{nodes} = \@nodes;
     365
     366    my ($template, %conf);
     367
     368    if ( $args{format} eq "rdf" ) {
     369        $template = "rdf_index.tt";
     370        $conf{content_type} = "text/plain";
     371    } else {
     372        $template = "site_index.tt";
     373    }
     374
     375    %conf = (
     376              %conf,
     377              node        => "$args{type} index", # KLUDGE
     378              template    => $template,
     379              tt_vars     => \%tt_vars,
     380    );
     381
     382    print $self->process_template( %conf );
     383}
     384
     385
     386
    303387sub process_template {
    304388    my ($self, %args) = @_;
     
    309393                        vars     => $args{tt_vars},
    310394    );
     395    $output_conf{content_type} = $args{content_type} if $args{content_type};
    311396    return OpenGuides::Template->output( %output_conf );
    312397}
  • trunk/wiki.cgi

    r372 r373  
    7171        show_wanted_pages();
    7272    } elsif ($action eq 'index') {
    73         show_index( type   => $q->param("index_type") || "Full",
    74                     value  => $q->param("index_value") || "",
    75                     format => $format );
     73        $guide->show_index(
     74                            type   => $q->param("index_type") || "Full",
     75                            value  => $q->param("index_value") || "",
     76                            format => $format,
     77                          );
    7678    } elsif ($action eq 'random') {
    7779        my @nodes = $wiki->list_all_nodes();
     
    147149}
    148150
    149 sub show_index {
    150     my %args = @_;
    151     my %tt_vars;
    152     my @selnodes;
    153 
    154     if ( $args{type} and $args{value} ) {
    155         if ( $args{type} eq "fuzzy_title_match" ) {
    156             my %finds = $wiki->fuzzy_title_match( $args{value} );
    157             @selnodes = sort { $finds{$a} <=> $finds{$b} } keys %finds;
    158             $tt_vars{criterion} = {
    159                 type  => $args{type},  # for RDF version
    160                 value => $args{value}, # for RDF version
    161                 name  => $q->escapeHTML( "Fuzzy Title Match on '$args{value}'")
    162             };
    163         } else {
    164             @selnodes = $wiki->list_nodes_by_metadata(
    165                 metadata_type  => $args{type},
    166                 metadata_value => $args{value},
    167                 ignore_case    => 1,
    168             );
    169             $tt_vars{criterion} = {
    170                 type  => $args{type},
    171                 value => $args{value}, # for RDF version
    172                 name => $q->escapeHTML(ucfirst($args{type}) . " $args{value}"),
    173                 url  => "$script_name?" . ucfirst($args{type}) . "_" .
    174                   uri_escape($formatter->node_name_to_node_param($args{value}))
    175             };
    176         }
    177     } else {
    178         @selnodes = $wiki->list_all_nodes();
    179     }
    180 
    181     my @nodes = map { { name      => $_,
    182                         node_data => {$wiki->retrieve_node( name => $_ )},
    183                         param     => $formatter->node_name_to_node_param($_) }
    184                     } sort @selnodes;
    185 
    186     $tt_vars{nodes} = \@nodes;
    187 
    188     my ($template, $omit_header);
    189 
    190     if ( $args{format} eq "rdf" ) {
    191         $template = "rdf_index.tt";
    192         $omit_header = 1;
    193         print "Content-type: text/plain\n\n";
    194     } else {
    195         $template = "site_index.tt";
    196     }
    197 
    198     process_template($template,
    199                      "$args{type} index",
    200                      \%tt_vars,
    201                      {},
    202                      $omit_header,
    203     );
    204 }
    205 
    206151sub list_all_versions {
    207152    my $node = shift;
Note: See TracChangeset for help on using the changeset viewer.