do_index()内の変更
- 2003-06-11 (Wed) 21:34:11 wal.4.3対応に差し替え&微妙に修正
sub do_index { &print_header($IndexPage); print qq(<ul>); my $level = 0; # yakty add [tree index] my $prev; # yakty add [tree index] my @pages = ($sort_case_sense) ? (sort keys(%database)) : sort {lc($a) cmp lc($b)} keys(%database); # Walrus add [sort case sense] foreach my $page (@pages) { # Walrus add [sort case sense] # foreach my $page (sort keys %database) { # Walrus del [sort case sense] if (&is_editable($page)) { # yakty add [tree index] start my @category = $page =~ /(.*?)\//g; my $cnt = $#category + 1; my $parent = $category[0]; if($prev eq $category[0]){ for(my $i=$level; $i>$cnt; $i--){ print qq(</ul>); } } else { for(my $i=$level; $i>0; $i--){ print qq(</ul>); } $level = 0; } for(my $i=$level; $i<$cnt; $i++){ for(my $j=1; $j<=$i; $j++){ $parent .= "/" . $category[$j]; } if(not exists $database{$parent}){ print qq(<li>@{[&make_link($parent)]}</li>); } print qq(<ul>); } $level = $cnt; $prev = $category[0]; my $linkname = &escape($page); $linkname =~ s/^$parent\///; print qq(<li><a href="$url_cgi?@{[&encode($page)]}" title="@{[&escape($page)]}">$linkname</a>@{[&get_subjectline($page)]}</li>); # yakty add [tree index] end # print qq(<li><a href="$url_cgi?@{[&encode($page)]}">@{[&escape($page)]}</a>@{[&escape(&get_subjectline($page))]}</li>); # yakty dell [tree index] # print qq(<li>@{[&get_info($page, $info_IsFrozen)]}</li>); # print qq(<li>@{[0 + &is_frozen($page)]}</li>); } } # yakty add [tree index] start if($level > 0){ for(my $i=$level; $i>0; $i--){ print qq(</ul>); } } # yakty add [tree index] end print qq(</ul>); &print_footer($IndexPage); # The following code is for debugging... # print "<h1>FOR DEBUG</h1>"; # print "<pre>"; # foreach my $page (sort keys %database) { # print qq(<a href="$url_cgi?@{[&encode($page)]}">$page</a>\n); # } # print "</pre>"; }
バグ修正(?)版
sub do_index { &print_header($IndexPage); print qq(<ul>); my $level = 0; # yakty add [tree index] # my $prev; # yakty add [tree index] #bugfix del my @prev; # yakty add [tree index] #bugfix add my @pages = ($sort_case_sense) ? (sort keys(%database)) : sort {lc($a) cmp lc($b)} keys(%database); # Walrus add [sort case sense] foreach my $page (@pages) { # Walrus add [sort case sense] # foreach my $page (sort keys %database) { # Walrus del [sort case sense] if (&is_editable($page)) { # yakty add [tree index] start my @category = $page =~ /(.*?)\//g; my $cnt = $#category + 1; my $parent = $category[0]; my $common_level; #bugfix add #bugfix add start for(my $i=0; $i <= (($level<$cnt) ? $level : $cnt); $i++){ if(@prev[$i] ne @category[$i]){ $common_level=$i; last; } } if(defined($common_level)){ for (my $i=$level; $i>$common_level; $i--){ print qq(</ul>\n); } } #bugfix add end #bugfix del start # if($prev eq $category[0]){ # for(my $i=$level; $i>$cnt; $i--){ # print qq(</ul>); # } # } else { # for(my $i=$level; $i>0; $i--){ # print qq(</ul>); # } # $level = 0; # } #bugfix del end if(defined($common_level)){ #bugfix add # for(my $i=$level; $i<$cnt; $i++){ #bugfix del for(my $i=$common_level; $i<$cnt; $i++){ #bugfix add for(my $j=1; $j<=$i; $j++){ $parent .= "/" . $category[$j]; } if(not exists $database{$parent}){ # print qq(<li>@{[&make_link($temp)]}</li>\n); #bugfix del print qq(<li>@{[&make_link(&armor_name($temp . " " . $parent))]}</li>\n); #bugfix del } print qq(<ul>); } } #bugfix add $level = $cnt; $prev = $category[0]; #bugfix del @prev = @category; #bugfix add my $linkname = &escape($page); $linkname =~ s/^$parent\///; print qq(<li><a href="$url_cgi?@{[&encode($page)]}" title="@{[&escape($page)]}">$linkname</a>@{[&get_subjectline($page)]}</li>); # yakty add [tree index] end # print qq(<li><a href="$url_cgi?@{[&encode($page)]}">@{[&escape($page)]}</a>@{[&escape(&get_subjectline($page))]}</li>); # yakty dell [tree index] # print qq(<li>@{[&get_info($page, $info_IsFrozen)]}</li>); # print qq(<li>@{[0 + &is_frozen($page)]}</li>); } } # yakty add [tree index] start if($level > 0){ for(my $i=$level; $i>0; $i--){ print qq(</ul>); } } # yakty add [tree index] end print qq(</ul>); &print_footer($IndexPage); # The following code is for debugging... # print "<h1>FOR DEBUG</h1>"; # print "<pre>"; # foreach my $page (sort keys %database) { # print qq(<a href="$url_cgi?@{[&encode($page)]}">$page</a>\n); # } # print "</pre>"; }
修正内容
- a?
- a1
- a2
- b?
- b1
- b1A
- b2?
- b2A
- b2B
- b3
- 1
- b1
- c
というようなページ構成でも、正しく表示します。
また、未作成のカテゴリのリンク先が正しくなかったのを修正。