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
というようなページ構成でも、正しく表示します。
また、未作成のカテゴリのリンク先が正しくなかったのを修正。