表紙 | 新規 | 一覧 | RSS | 検索 | 閲覧履歴 | 作成履歴 | 更新履歴

do_index関数 - YukiWikiベースのPonyWikiのソースを読んでみる その06

差分表示


[[YukiWikiベースのPonyWikiのソースを読んでみる]] その06

ページの一覧を表示します。

やってる事は、&verb(%database)ハッシュをキーでソートして編集可能ページ(&verb(RecentChange)等のページ以外)でリストを作成します。&br()
やってる事は、検索用インデックスからページのリストを取得し、整形して出力しています&br()
リストの形式は「ページ名 - サブジェクト(ページの1行目)」です。

---(
sub do_index {
    &print_header($IndexPage);
    print qq(<ul>);
    foreach my $page (sort keys %database) {
        if (&is_editable($page)) {
            print qq(<li><a href="$url_cgi?@{[&encode($page)]}">@{[&escape($page)]}</a>@{[&escape(&get_subjectline($page))]}</li>);
        }
    }
    print qq(</ul>);
    &print_footer($IndexPage);
	my $cache_html;
	&print_header($IndexPage);
	print qq(<ul>);

	if (exists $cachebase{$IndexPage}) {
		$cache_html = $cachebase{$IndexPage};
	} else {
		&open_search_index;
		for (my $i=0; $i < @search_index; $i++){
			my $page = $search_index[$i];
			my $tmp;
			my $subject;
			($page,$tmp,$subject) = split(/\t/,$page);
			$cache_html .= qq(<li><a href="$url_cgi?@{[&encode($page)]}">@{[&escape($page)]}</a>@{[&escape(&get_subjectline($page))]}</li>\n);
		}
		&close_search_index;
		$cachebase{$IndexPage} = $cache_html;
	}

	print "$cache_html";
	print qq(</ul>);
	&print_footer($IndexPage);
}
---)

- [[print_header関数]]
- is_editable関数
- get_subjectline関数
- [[print_footer関数]]
- encode関数
- [[escape関数]]

----
[[#trackback]]

先頭へ