-################################################################################\r
-#\r
-# ¥³¥¢¥×¥é¥°¥¤¥ó¤Î¼ÂÁõ\r
-#\r
-################################################################################\r
-package Wiki::Plugin;\r
-\r
-BEGIN {\r
- # ¥Ñ¥é¥°¥é¥Õ¥×¥é¥°¥¤¥ó¤Î¥¨¥ó¥È¥ê\r
- $main::P_PLUGIN->{recent} = \&Wiki::Plugin::recent;\r
- $main::P_PLUGIN->{recentdays} = \&Wiki::Plugin::recentdays;\r
- $main::P_PLUGIN->{category_list} = \&Wiki::Plugin::category_list;\r
- $main::P_PLUGIN->{ref_image} = \&Wiki::Plugin::ref_image;\r
- $main::P_PLUGIN->{ref_text} = \&Wiki::Plugin::ref_text;\r
- $main::P_PLUGIN->{outline} = \&Wiki::Plugin::outline;\r
- $main::P_PLUGIN->{search} = \&Wiki::Plugin::search;\r
- \r
- # ¥¤¥ó¥é¥¤¥ó¥×¥é¥°¥¤¥ó¤Î¥¨¥ó¥È¥ê\r
- $main::I_PLUGIN->{category} = \&Wiki::Plugin::category;\r
- $main::I_PLUGIN->{lastmodified} = \&Wiki::Plugin::lastmodified;\r
- $main::I_PLUGIN->{ref} = \&Wiki::Plugin::ref;\r
-}\r
-\r
-#==============================================================================\r
-# ¥Ú¡¼¥¸¤Î°ìÍ÷¤ò¹¹¿·Æü»þ½ç¤Ëɽ¼¨¤¹¤ë¥×¥é¥°¥¤¥ó¡£\r
-#==============================================================================\r
-sub recent {\r
- my $max = shift;\r
- $max = 0 if($max eq "");\r
- my $buf = "";\r
- \r
- my @pages = &Wiki::get_page_list();\r
- my $count = 0;\r
- \r
- $buf .= "<ul>\n";\r
- foreach my $page (@pages){\r
- $buf .= "<li><a href=\"$main::MAIN_SCRIPT?p=".&Util::url_encode($page->{NAME})."\">".\r
- &Util::escapeHTML($page->{NAME})."</a></li>\n";\r
- $count++;\r
- last if($count==$max && $max!=0);\r
- }\r
- $buf .= "</ul>\n";\r
- \r
- return $buf;\r
-}\r
-\r
-#==============================================================================\r
-# ÆüÉÕ¤´¤È¤Ë¹¹¿·¤µ¤ì¤¿¥Ú¡¼¥¸¤ò°ìÍ÷ɽ¼¨¤¹¤ë¥×¥é¥°¥¤¥ó¡£\r
-#==============================================================================\r
-sub recentdays {\r
- my $max = shift;\r
- $max = 5 if($max eq "");\r
- my $buf = "";\r
- \r
- my @pages = &Wiki::get_page_list();\r
- my $count = 0;\r
- \r
- my $last_year = 0;\r
- my $last_mon = 0;\r
- my $last_day = 0;\r
- \r
- foreach my $page (@pages){\r
- my ($sec, $min, $hour, $day, $mon, $year) = localtime($page->{TIME});\r
- \r
- $year += 1900;\r
- $mon += 1;\r
- \r
- if($last_year!=$year || $last_mon!=$mon || $last_day!=$day){\r
- \r
- $count++;\r
- last if($count == $max+1);\r
- \r
- $last_year = $year;\r
- $last_mon = $mon;\r
- $last_day = $day;\r
- \r
- $buf .= "</ul>\n" if($buf ne "");\r
- $buf .= sprintf("<b>%04d/%02d/%02d</b>\n",$year,$mon,$day);\r
- $buf .= "<ul>\n";\r
- }\r
- \r
- $buf .= "<li><a href=\"$main::MAIN_SCRIPT?p=".&Util::url_encode($page->{NAME})."\">".\r
- &Util::escapeHTML($page->{NAME})."</a></li>\n";\r
- }\r
- \r
- if($buf ne ""){\r
- $buf .= "</UL>\n";\r
- }\r
- \r
- return $buf;\r
-}\r
-\r
-#==============================================================================\r
-# ¥Ú¡¼¥¸¤ò¥«¥Æ¥´¥é¥¤¥º¤¹¤ë¤¿¤á¤Î¥×¥é¥°¥¤¥ó¡£\r
-#==============================================================================\r
-sub category {\r
- my $category = shift;\r
- if($category eq ""){\r
- return "¥«¥Æ¥´¥ê¤¬»ØÄꤵ¤ì¤Æ¤¤¤Þ¤»¤ó¡£";\r
- } else {\r
- return "[<a href=\"$main::CATEGORY_SCRIPT?c=".&Util::url_encode($category)."\">".\r
- "¥«¥Æ¥´¥ê:".&Util::escapeHTML($category)."</a>]";\r
- }\r
-}\r
-\r
-#=============================================================================\r
-# ¥Ú¡¼¥¸¤ÎºÇ½ª¹¹¿·Æü»þ¤òɽ¼¨¤¹¤ë¥×¥é¥°¥¤¥ó¡£\r
-#=============================================================================\r
-sub lastmodified {\r
- my $page = $main::in{"p"};\r
- if(&Wiki::exists_page($page)){\r
- return "ºÇ½ª¹¹¿·»þ´Ö¡§".&Util::format_date(&Wiki::get_last_modified($page));\r
- } else {\r
- return undef;\r
- }\r
-}\r
-\r
-#=============================================================================\r
-# ¥«¥Æ¥´¥ê¤´¤È¤Î¥Ú¡¼¥¸°ìÍ÷¤òɽ¼¨¤¹¤ë¥×¥é¥°¥¤¥ó¡£\r
-#=============================================================================\r
-sub category_list {\r
- my $category = shift;\r
- my $buf = "";\r
- \r
- # »ØÄꤵ¤ì¤¿¥«¥Æ¥´¥ê¤òɽ¼¨\r
- if($category ne ""){\r
- my @pages = &Wiki::get_page_list();\r
- $buf .= "<h2>".&Util::escapeHTML($category)."</h2>\n";\r
- $buf .= "<ul>\n";\r
- #foreach my $page (sort(@pages)){\r
- foreach my $page (sort {$a->{NAME} cmp $b->{NAME}} @pages){\r
- my $source = &Wiki::get_page($page->{NAME});\r
- foreach my $line (split(/\n/,$source)){\r
- # ¥³¥á¥ó¥È¤«À°·ÁºÑ¥Æ¥¥¹¥È¤Î¾ì¹ç¤ÏÈô¤Ð¤¹\r
- next if($line =~ /^(\t| |\/\/)/);\r
- \r
- # ¥«¥Æ¥´¥ê¤Ë¥Þ¥Ã¥Á¤·¤¿¤é¥ê¥¹¥Æ¥£¥ó¥°\r
- if($line =~ /{{category\s+$category}}/){\r
- $buf .= "<li><a href=\"$main::MAIN_SCRIPT?p=".&Util::url_encode($page->{NAME})."\">".\r
- &Util::escapeHTML($page->{NAME})."</a></li>";\r
- last;\r
- }\r
- }\r
- }\r
- $buf .= "</ul>\n";\r
- \r
- # Á´¤Æ¤Î¥«¥Æ¥´¥ê¤òɽ¼¨\r
- } else {\r
- my $category = {};\r
- my @pages = &Wiki::get_page_list();\r
- \r
- foreach my $page (@pages){\r
- my $source = &Wiki::get_page($page->{NAME});\r
- foreach my $line (split(/\n/,$source)){\r
- # ¥³¥á¥ó¥È¤«À°·ÁºÑ¥Æ¥¥¹¥È¤Î¾ì¹ç¤ÏÈô¤Ð¤¹\r
- next if($line =~ /^(\t| |\/\/)/);\r
- \r
- # ¥«¥Æ¥´¥ê¤Ë¥Þ¥Ã¥Á¤·¤¿¤é¥ê¥¹¥Æ¥£¥ó¥°\r
- while($line =~ /{{category\s+(.+?)}}/g){\r
- $category->{$1}->{$page->{NAME}} = 1;\r
- }\r
- }\r
- }\r
- \r
- foreach my $name (sort(keys(%$category))){\r
- $buf .= "<h2>".&Util::escapeHTML($name)."</h2>\n";\r
- $buf .= "<ul>\n";\r
- foreach my $page (sort(keys(%{$category->{$name}}))){\r
- $buf .= "<li><a href=\"$main::MAIN_SCRIPT?p=".&Util::url_encode($page)."\">".\r
- &Util::escapeHTML($page)."</a></li>\n";\r
- }\r
- $buf .= "</ul>\n";\r
- }\r
- }\r
- return $buf;\r
-}\r
-\r
-#=============================================================================\r
-# źÉÕ¥Õ¥¡¥¤¥ë¤Ø¤Î¥ê¥ó¥¯¤òɽ¼¨¤¹¤ë¤¿¤á¤Î¥×¥é¥°¥¤¥ó¡£\r
-#=============================================================================\r
-sub ref {\r
- my $page = $main::in{"p"};\r
- my $file = shift;\r
- \r
- if($file eq ""){\r
- return "¥Õ¥¡¥¤¥ë¤¬»ØÄꤵ¤ì¤Æ¤¤¤Þ¤»¤ó¡£";\r
- }\r
- \r
- my $filename = sprintf("$main::ATTACH_DIR/%s.%s",\r
- &Util::url_encode($page),&Util::url_encode($file));\r
- unless(-e $filename){\r
- return "¥Õ¥¡¥¤¥ë¤¬Â¸ºß¤·¤Þ¤»¤ó¡£";\r
- }\r
- \r
- return sprintf("<a href=\"$main::DOWNLOAD_SCRIPT?p=%s&f=%s\">%s</a>",\r
- &Util::url_encode($page),&Util::url_encode($file),$file);\r
-}\r
-\r
-#=============================================================================\r
-# źÉÕ¥Õ¥¡¥¤¥ë¤ò²èÁü¤È¤·¤Æɽ¼¨¤¹¤ë¤¿¤á¤Î¥×¥é¥°¥¤¥ó¡£\r
-#=============================================================================\r
-sub ref_image {\r
- my $page = $main::in{"p"};\r
- my $file = shift;\r
- \r
- if($file eq ""){\r
- return "¥Õ¥¡¥¤¥ë¤¬»ØÄꤵ¤ì¤Æ¤¤¤Þ¤»¤ó¡£";\r
- }\r
- \r
- my $filename = sprintf("$main::ATTACH_DIR/%s.%s",\r
- &Util::url_encode($page),&Util::url_encode($file));\r
- unless(-e $filename){\r
- return "<p>¥Õ¥¡¥¤¥ë¤¬Â¸ºß¤·¤Þ¤»¤ó¡£</p>\n";\r
- }\r
- \r
- return sprintf("<div><img src=\"$main::DOWNLOAD_SCRIPT?p=%s&f=%s\"></div>",\r
- &Util::url_encode($page),&Util::url_encode($file));\r
-}\r
-\r
-#=============================================================================\r
-# źÉÕ¥Õ¥¡¥¤¥ë¤ò²èÁü¤È¤·¤Æɽ¼¨¤¹¤ë¤¿¤á¤Î¥×¥é¥°¥¤¥ó¡£\r
-#=============================================================================\r
-sub ref_text {\r
- my $page = $main::in{"p"};\r
- my $file = shift;\r
- \r
- if($file eq ""){\r
- return "¥Õ¥¡¥¤¥ë¤¬»ØÄꤵ¤ì¤Æ¤¤¤Þ¤»¤ó¡£";\r
- }\r
- \r
- my $filename = sprintf("$main::ATTACH_DIR/%s.%s",\r
- &Util::url_encode($page),&Util::url_encode($file));\r
- unless(-e $filename){\r
- return "<p>¥Õ¥¡¥¤¥ë¤¬Â¸ºß¤·¤Þ¤»¤ó¡£</p>\n";\r
- }\r
- \r
- my $text = "";\r
- open(DATA,$filename);\r
- while(<DATA>){\r
- $text .= $_;\r
- }\r
- close(DATA);\r
- \r
- # ²þ¹Ô¥³¡¼¥É¤òÊÑ´¹\r
- $text =~ s/\r\n/\n/g;\r
- $text =~ s/\r/\n/g;\r
- # ʸ»ú¥³¡¼¥É¤òÊÑ´¹\r
- &jcode::convert(\$text,"euc");\r
- \r
- # pre¥¿¥°¤ò¤Ä¤±¤ÆÊÖµÑ\r
- return "<pre>".&Util::escapeHTML($text)."</pre>\n";\r
-}\r
-\r
-#=============================================================================\r
-# ¥¢¥¦¥È¥é¥¤¥ó¤òɽ¼¨¤¹¤ë¤¿¤á¤Î¥×¥é¥°¥¤¥ó\r
-# ½ÐÎϤµ¤ì¤ëHTML¤Ï¤Á¤ç¤Ã¤È¼êÈ´¤¤Ç¤¹¡Ä\r
-#=============================================================================\r
-sub outline {\r
- my $page = $main::in{'p'};\r
- my $source = &Wiki::get_page($page);\r
- my $level = 0;\r
- my $count = 0;\r
- my $buf = "";\r
- foreach my $line (split(/\n/,$source)){\r
- if($line=~/^(!{1,3})(.+)$/){\r
- my $find_level = 4 - length($1);\r
- \r
- while($level < $find_level){\r
- $buf .= "<ul>\n";\r
- $level++;\r
- }\r
- \r
- while($level > $find_level){\r
- $buf .= "</ul>\n";\r
- $level--;\r
- }\r
- my $section = &Util::delete_tag(&Wiki::process_wiki($2));\r
- \r
- $buf .= "<li><a href=\"#p$count\">$section</a></li>\n";\r
- $count++;\r
- }\r
- }\r
- while($level > 0){\r
- $buf .= "</ul>\n";\r
- $level--;\r
- }\r
- return $buf;\r
-}\r
-\r
-#=============================================================================\r
-# ¸¡º÷¥Õ¥©¡¼¥à¤òɽ¼¨¤¹¤ë¤¿¤á¤Î¥×¥é¥°¥¤¥ó\r
-#=============================================================================\r
-sub search {\r
- return "<form action=\"$main::MAIN_SCRIPT\" method=\"GET\">\n".\r
- " ¥¡¼¥ï¡¼¥É <input type=\"text\" name=\"w\" size=\"20\" value=\"".&Util::escapeHTML($main::in{'w'})."\">\n".\r
- " <input type=\"submit\" value=\" ¸¡ º÷ \">\n".\r
- " <input type=\"hidden\" name=\"a\" value=\"search\">\n".\r
- "</form>\n";\r
-}\r
-\r
-1;\r
+################################################################################
+#
+# ¥³¥¢¥×¥é¥°¥¤¥ó¤Î¼ÂÁõ
+#
+################################################################################
+package Wiki::Plugin;
+
+BEGIN {
+ # ¥Ñ¥é¥°¥é¥Õ¥×¥é¥°¥¤¥ó¤Î¥¨¥ó¥È¥ê
+ $main::P_PLUGIN->{recent} = \&Wiki::Plugin::recent;
+ $main::P_PLUGIN->{recentdays} = \&Wiki::Plugin::recentdays;
+ $main::P_PLUGIN->{category_list} = \&Wiki::Plugin::category_list;
+ $main::P_PLUGIN->{ref_image} = \&Wiki::Plugin::ref_image;
+ $main::P_PLUGIN->{ref_text} = \&Wiki::Plugin::ref_text;
+ $main::P_PLUGIN->{outline} = \&Wiki::Plugin::outline;
+ $main::P_PLUGIN->{search} = \&Wiki::Plugin::search;
+
+ # ¥¤¥ó¥é¥¤¥ó¥×¥é¥°¥¤¥ó¤Î¥¨¥ó¥È¥ê
+ $main::I_PLUGIN->{category} = \&Wiki::Plugin::category;
+ $main::I_PLUGIN->{lastmodified} = \&Wiki::Plugin::lastmodified;
+ $main::I_PLUGIN->{ref} = \&Wiki::Plugin::ref;
+}
+
+#==============================================================================
+# ¥Ú¡¼¥¸¤Î°ìÍ÷¤ò¹¹¿·Æü»þ½ç¤Ëɽ¼¨¤¹¤ë¥×¥é¥°¥¤¥ó¡£
+#==============================================================================
+sub recent {
+ my $max = shift;
+ $max = 0 if($max eq "");
+ my $buf = "";
+
+ my @pages = &Wiki::get_page_list();
+ my $count = 0;
+
+ $buf .= "<ul>\n";
+ foreach my $page (@pages){
+ $buf .= "<li><a href=\"$main::MAIN_SCRIPT?p=".&Util::url_encode($page->{NAME})."\">".
+ &Util::escapeHTML($page->{NAME})."</a></li>\n";
+ $count++;
+ last if($count==$max && $max!=0);
+ }
+ $buf .= "</ul>\n";
+
+ return $buf;
+}
+
+#==============================================================================
+# ÆüÉÕ¤´¤È¤Ë¹¹¿·¤µ¤ì¤¿¥Ú¡¼¥¸¤ò°ìÍ÷ɽ¼¨¤¹¤ë¥×¥é¥°¥¤¥ó¡£
+#==============================================================================
+sub recentdays {
+ my $max = shift;
+ $max = 5 if($max eq "");
+ my $buf = "";
+
+ my @pages = &Wiki::get_page_list();
+ my $count = 0;
+
+ my $last_year = 0;
+ my $last_mon = 0;
+ my $last_day = 0;
+
+ foreach my $page (@pages){
+ my ($sec, $min, $hour, $day, $mon, $year) = localtime($page->{TIME});
+
+ $year += 1900;
+ $mon += 1;
+
+ if($last_year!=$year || $last_mon!=$mon || $last_day!=$day){
+
+ $count++;
+ last if($count == $max+1);
+
+ $last_year = $year;
+ $last_mon = $mon;
+ $last_day = $day;
+
+ $buf .= "</ul>\n" if($buf ne "");
+ $buf .= sprintf("<b>%04d/%02d/%02d</b>\n",$year,$mon,$day);
+ $buf .= "<ul>\n";
+ }
+
+ $buf .= "<li><a href=\"$main::MAIN_SCRIPT?p=".&Util::url_encode($page->{NAME})."\">".
+ &Util::escapeHTML($page->{NAME})."</a></li>\n";
+ }
+
+ if($buf ne ""){
+ $buf .= "</UL>\n";
+ }
+
+ return $buf;
+}
+
+#==============================================================================
+# ¥Ú¡¼¥¸¤ò¥«¥Æ¥´¥é¥¤¥º¤¹¤ë¤¿¤á¤Î¥×¥é¥°¥¤¥ó¡£
+#==============================================================================
+sub category {
+ my $category = shift;
+ if($category eq ""){
+ return "¥«¥Æ¥´¥ê¤¬»ØÄꤵ¤ì¤Æ¤¤¤Þ¤»¤ó¡£";
+ } else {
+ return "[<a href=\"$main::CATEGORY_SCRIPT?c=".&Util::url_encode($category)."\">".
+ "¥«¥Æ¥´¥ê:".&Util::escapeHTML($category)."</a>]";
+ }
+}
+
+#=============================================================================
+# ¥Ú¡¼¥¸¤ÎºÇ½ª¹¹¿·Æü»þ¤òɽ¼¨¤¹¤ë¥×¥é¥°¥¤¥ó¡£
+#=============================================================================
+sub lastmodified {
+ my $page = $main::in{"p"};
+ if(&Wiki::exists_page($page)){
+ return "ºÇ½ª¹¹¿·»þ´Ö¡§".&Util::format_date(&Wiki::get_last_modified($page));
+ } else {
+ return undef;
+ }
+}
+
+#=============================================================================
+# ¥«¥Æ¥´¥ê¤´¤È¤Î¥Ú¡¼¥¸°ìÍ÷¤òɽ¼¨¤¹¤ë¥×¥é¥°¥¤¥ó¡£
+#=============================================================================
+sub category_list {
+ my $category = shift;
+ my $buf = "";
+
+ # »ØÄꤵ¤ì¤¿¥«¥Æ¥´¥ê¤òɽ¼¨
+ if($category ne ""){
+ my @pages = &Wiki::get_page_list();
+ $buf .= "<h2>".&Util::escapeHTML($category)."</h2>\n";
+ $buf .= "<ul>\n";
+ #foreach my $page (sort(@pages)){
+ foreach my $page (sort {$a->{NAME} cmp $b->{NAME}} @pages){
+ my $source = &Wiki::get_page($page->{NAME});
+ foreach my $line (split(/\n/,$source)){
+ # ¥³¥á¥ó¥È¤«À°·ÁºÑ¥Æ¥¥¹¥È¤Î¾ì¹ç¤ÏÈô¤Ð¤¹
+ next if($line =~ /^(\t| |\/\/)/);
+
+ # ¥«¥Æ¥´¥ê¤Ë¥Þ¥Ã¥Á¤·¤¿¤é¥ê¥¹¥Æ¥£¥ó¥°
+ if($line =~ /{{category\s+$category}}/){
+ $buf .= "<li><a href=\"$main::MAIN_SCRIPT?p=".&Util::url_encode($page->{NAME})."\">".
+ &Util::escapeHTML($page->{NAME})."</a></li>";
+ last;
+ }
+ }
+ }
+ $buf .= "</ul>\n";
+
+ # Á´¤Æ¤Î¥«¥Æ¥´¥ê¤òɽ¼¨
+ } else {
+ my $category = {};
+ my @pages = &Wiki::get_page_list();
+
+ foreach my $page (@pages){
+ my $source = &Wiki::get_page($page->{NAME});
+ foreach my $line (split(/\n/,$source)){
+ # ¥³¥á¥ó¥È¤«À°·ÁºÑ¥Æ¥¥¹¥È¤Î¾ì¹ç¤ÏÈô¤Ð¤¹
+ next if($line =~ /^(\t| |\/\/)/);
+
+ # ¥«¥Æ¥´¥ê¤Ë¥Þ¥Ã¥Á¤·¤¿¤é¥ê¥¹¥Æ¥£¥ó¥°
+ while($line =~ /{{category\s+(.+?)}}/g){
+ $category->{$1}->{$page->{NAME}} = 1;
+ }
+ }
+ }
+
+ foreach my $name (sort(keys(%$category))){
+ $buf .= "<h2>".&Util::escapeHTML($name)."</h2>\n";
+ $buf .= "<ul>\n";
+ foreach my $page (sort(keys(%{$category->{$name}}))){
+ $buf .= "<li><a href=\"$main::MAIN_SCRIPT?p=".&Util::url_encode($page)."\">".
+ &Util::escapeHTML($page)."</a></li>\n";
+ }
+ $buf .= "</ul>\n";
+ }
+ }
+ return $buf;
+}
+
+#=============================================================================
+# źÉÕ¥Õ¥¡¥¤¥ë¤Ø¤Î¥ê¥ó¥¯¤òɽ¼¨¤¹¤ë¤¿¤á¤Î¥×¥é¥°¥¤¥ó¡£
+#=============================================================================
+sub ref {
+ my $page = $main::in{"p"};
+ my $file = shift;
+
+ if($file eq ""){
+ return "¥Õ¥¡¥¤¥ë¤¬»ØÄꤵ¤ì¤Æ¤¤¤Þ¤»¤ó¡£";
+ }
+
+ my $filename = sprintf("$main::ATTACH_DIR/%s.%s",
+ &Util::url_encode($page),&Util::url_encode($file));
+ unless(-e $filename){
+ return "¥Õ¥¡¥¤¥ë¤¬Â¸ºß¤·¤Þ¤»¤ó¡£";
+ }
+
+ return sprintf("<a href=\"$main::DOWNLOAD_SCRIPT?p=%s&f=%s\">%s</a>",
+ &Util::url_encode($page),&Util::url_encode($file),$file);
+}
+
+#=============================================================================
+# źÉÕ¥Õ¥¡¥¤¥ë¤ò²èÁü¤È¤·¤Æɽ¼¨¤¹¤ë¤¿¤á¤Î¥×¥é¥°¥¤¥ó¡£
+#=============================================================================
+sub ref_image {
+ my $page = $main::in{"p"};
+ my $file = shift;
+
+ if($file eq ""){
+ return "¥Õ¥¡¥¤¥ë¤¬»ØÄꤵ¤ì¤Æ¤¤¤Þ¤»¤ó¡£";
+ }
+
+ my $filename = sprintf("$main::ATTACH_DIR/%s.%s",
+ &Util::url_encode($page),&Util::url_encode($file));
+ unless(-e $filename){
+ return "<p>¥Õ¥¡¥¤¥ë¤¬Â¸ºß¤·¤Þ¤»¤ó¡£</p>\n";
+ }
+
+ return sprintf("<div><img src=\"$main::DOWNLOAD_SCRIPT?p=%s&f=%s\"></div>",
+ &Util::url_encode($page),&Util::url_encode($file));
+}
+
+#=============================================================================
+# źÉÕ¥Õ¥¡¥¤¥ë¤ò²èÁü¤È¤·¤Æɽ¼¨¤¹¤ë¤¿¤á¤Î¥×¥é¥°¥¤¥ó¡£
+#=============================================================================
+sub ref_text {
+ my $page = $main::in{"p"};
+ my $file = shift;
+
+ if($file eq ""){
+ return "¥Õ¥¡¥¤¥ë¤¬»ØÄꤵ¤ì¤Æ¤¤¤Þ¤»¤ó¡£";
+ }
+
+ my $filename = sprintf("$main::ATTACH_DIR/%s.%s",
+ &Util::url_encode($page),&Util::url_encode($file));
+ unless(-e $filename){
+ return "<p>¥Õ¥¡¥¤¥ë¤¬Â¸ºß¤·¤Þ¤»¤ó¡£</p>\n";
+ }
+
+ my $text = "";
+ open(DATA,$filename);
+ while(<DATA>){
+ $text .= $_;
+ }
+ close(DATA);
+
+ # ²þ¹Ô¥³¡¼¥É¤òÊÑ´¹
+ $text =~ s/\r\n/\n/g;
+ $text =~ s/\r/\n/g;
+ # ʸ»ú¥³¡¼¥É¤òÊÑ´¹
+ &jcode::convert(\$text,"euc");
+
+ # pre¥¿¥°¤ò¤Ä¤±¤ÆÊÖµÑ
+ return "<pre>".&Util::escapeHTML($text)."</pre>\n";
+}
+
+#=============================================================================
+# ¥¢¥¦¥È¥é¥¤¥ó¤òɽ¼¨¤¹¤ë¤¿¤á¤Î¥×¥é¥°¥¤¥ó
+# ½ÐÎϤµ¤ì¤ëHTML¤Ï¤Á¤ç¤Ã¤È¼êÈ´¤¤Ç¤¹¡Ä
+#=============================================================================
+sub outline {
+ my $page = $main::in{'p'};
+ my $source = &Wiki::get_page($page);
+ my $level = 0;
+ my $count = 0;
+ my $buf = "";
+ foreach my $line (split(/\n/,$source)){
+ if($line=~/^(!{1,3})(.+)$/){
+ my $find_level = 4 - length($1);
+
+ while($level < $find_level){
+ $buf .= "<ul>\n";
+ $level++;
+ }
+
+ while($level > $find_level){
+ $buf .= "</ul>\n";
+ $level--;
+ }
+ my $section = &Util::delete_tag(&Wiki::process_wiki($2));
+
+ $buf .= "<li><a href=\"#p$count\">$section</a></li>\n";
+ $count++;
+ }
+ }
+ while($level > 0){
+ $buf .= "</ul>\n";
+ $level--;
+ }
+ return $buf;
+}
+
+#=============================================================================
+# ¸¡º÷¥Õ¥©¡¼¥à¤òɽ¼¨¤¹¤ë¤¿¤á¤Î¥×¥é¥°¥¤¥ó
+#=============================================================================
+sub search {
+ return "<form action=\"$main::MAIN_SCRIPT\" method=\"GET\">\n".
+ " ¥¡¼¥ï¡¼¥É <input type=\"text\" name=\"w\" size=\"20\" value=\"".&Util::escapeHTML($main::in{'w'})."\">\n".
+ " <input type=\"submit\" value=\" ¸¡ º÷ \">\n".
+ " <input type=\"hidden\" name=\"a\" value=\"search\">\n".
+ "</form>\n";
+}
+
+1;