[ 新規 ] [ 検索 | 一覧 | FrontPage ] [ 履歴 (RSS) | 差分履歴 (RSS) ] [ ログイン ]
【PR】Amazon | SL-C3000 | SL-C1000(3/18発売!) | SL-C860 | SL-6000W | SL-6000L | SL-6000N

WalWiki/カスタマイズ/一覧ページツリー表示

差分表示


編集前の状態に戻します。
[[IndexPage]]をツリー表示させます。
[[外部参考リンク http://www2u.biglobe.ne.jp/~fsasaki/WikiFan/wiki.cgi?WalWiki%a5%ab%a5%b9%a5%bf%a5%de%a5%a4%a5%ba%2f%a5%da%a1%bc%a5%b8%b0%ec%cd%f7%a4%f2%a5%c4%a5%ea%a1%bc%c9%bd%bc%a8%b2%bd%a4%b9%a4%eb]]
*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
-c

というようなページ構成でも、正しく表示します。

また、未作成のカテゴリのリンク先が正しくなかったのを修正。


03283