################################################################### # #

linklist generator

#
# {{linklist <mode>}}
# 
#

# regular & reverse indexing #

#
# {{linklist 0}} => regular indexing
# {{linklist 1}} => reverse indexing
# 
# ################################################################### package plugin::linklist::LinkList; use strict; use FileHandle; use lib '../../'; use lib '../../lib'; use plugin::linklist::LLParser; sub new { my $class = shift; my $self = {}; return bless $self,$class; } my %index_list = (); sub paragraph { my $self = shift; my $wiki = shift; my $mode = shift; # mode: 0 regular index, 1: reverse index my $buf = ''; my @page_list = $wiki->get_page_list({-permit=>'show'}); # make index foreach my $page (@page_list) { my $key; my $value; my $parser = plugin::linklist::LLParser->new($wiki,$page); my $source = $wiki->get_page($page); # if ($source eq '') { # `echo $page > ./data/hogehoge.wiki`; # } $parser->parse($source); if (defined($parser->{wiki_anchor_list})) { my @wiki_anchor_list = @{$parser->{wiki_anchor_list}}; for my $wiki_anchor (@wiki_anchor_list) { my $mode = 1; if ($mode == 0) { # regular indexing $key = $page; $value = $wiki_anchor; } else { # reverse indexing $key = $wiki_anchor; $value = $page; } my @list = (); if (exists $index_list{$key}) { @list = @{$index_list{$key}}; } $index_list{$key} = [(@list, $value)]; } } unless (exists $index_list{$page}) { $index_list{$page} = [()]; } } # make html from index $buf .= "\n"; foreach my $page (sort { @{$index_list{$a}} <=> @{$index_list{$b}} } keys %index_list) { next if ($page =~ /^BugTrack\-/); # BugTrack next if ($page =~ /\/\d\d\d\d\-\d+\-\d+/); # Calendar $buf .= "\n"; $buf .= "\n"; my @list = (); if (defined($index_list{$page})) { @list = @{$index_list{$page}}; } my $list_n = @list; $buf .= "\n"; foreach my $p (@list) { $buf .= "\n"; } $buf .= "\n"; } $buf .= "
"; my $encoded_url = &Util::url_encode($page); $buf .= "config('script_name')."?page=" . $encoded_url . "\" class=\"wikipage\" " . "target=\"" . $encoded_url . "\">" . &Util::escapeHTML($page) . ""; $buf .= " $list_n "; $buf .= "config('script_name') . "?page=" . &Util::url_encode($p) . "\" class=\"wikipage\" " . "target=\"" . &Util::url_encode($p) . "\">" . &Util::escapeHTML($p) . ""; $buf .= "
\n"; return $buf; } 1;