OSDN Git Service

(no commit message)
[fswiki/fswiki.git] / wiki.cgi
index 5a557d3..2b671a5 100644 (file)
--- a/wiki.cgi
+++ b/wiki.cgi
-#!/usr/bin/perl\r
-###############################################################################\r
-#\r
-# FreeStyleWiki ¥Õ¥í¥ó¥È¥¨¥ó¥ÉCGI¥¹¥¯¥ê¥×¥È\r
-#\r
-###############################################################################\r
-BEGIN {\r
-       if(exists $ENV{MOD_PERL}){\r
-               # ¥«¥ì¥ó¥È¥Ç¥£¥ì¥¯¥È¥ê¤ÎÊѹ¹\r
-               chdir($ENV{FSWIKI_HOME});\r
-       }\r
-}\r
-# ModPerl::Registry(Prefork)¤Ç¤Ï¼Â¹Ô»þ¤ËÊѹ¹¤µ¤ì¤Æ¤¤¤ë²ÄǽÀ­¤¬¤¢¤ë\r
-if(exists $ENV{MOD_PERL}){\r
-       chdir($ENV{FSWIKI_HOME});\r
-}\r
-\r
-#==============================================================================\r
-# ¥â¥¸¥å¡¼¥ë¤Î¥¤¥ó¥¯¥ë¡¼¥É\r
-#==============================================================================\r
-use Cwd;\r
-use lib './lib';\r
-# ModPerl::Registry(Prefork)¤Ç¤Ï@INC¤¬½é´ü²½¤µ¤ì¤Æ¤¤¤ë¾ì¹ç¤¬¤¢¤ë\r
-unshift @INC, './lib' if(exists $ENV{MOD_PERL});\r
-use strict;\r
-#use CGI::Carp qw(fatalsToBrowser);\r
-#use CGI2;\r
-use Wiki;\r
-use Util;\r
-use Jcode;\r
-use HTML::Template;\r
-\r
-# ¤³¤ì¤ò¤ä¤é¤Ê¤¤¤ÈApache::Registory¤ÇÆ°¤«¤Ê¤¤\r
-if(exists $ENV{MOD_PERL}){\r
-       eval("use Digest::Perl::MD5;");\r
-       eval("use plugin::core::Diff;");\r
-       eval("use plugin::pdf::PDFMaker;");\r
-       &Jcode::load_module("Jcode::Unicode") unless $Jcode::USE_ENCODE;\r
-}\r
-\r
-#==============================================================================\r
-# CGI¤ÈWiki¤Î¥¤¥ó¥¹¥¿¥ó¥¹²½\r
-#==============================================================================\r
-my $wiki = Wiki->new('setup.dat');\r
-my $cgi = $wiki->get_CGI();\r
-\r
-Util::override_die();\r
-eval {\r
-       # SessionÍѥǥ£¥ì¥¯¥È¥ê¤ÏFarm¤Ç¤â¶¦Ä̤˻ÈÍѤ¹¤ë\r
-       $wiki->config('session_dir',$wiki->config('log_dir'));\r
-       \r
-       #==============================================================================\r
-       # Farm¤È¤·¤ÆÆ°ºî¤¹¤ë¾ì¹ç\r
-       #==============================================================================\r
-       my $path_info  = $cgi->path_info();\r
-       my $path_count = 0;\r
-       if(length($path_info) > 0){\r
-               # Farm¤¬¤¢¤ë¤«³Îǧ¤¹¤ë\r
-               unless($path_info =~ m<^(/[A-Za-z0-9]+)*/?$> and -d $wiki->config('data_dir').$path_info){\r
-                       CORE::die("Wiki¤¬Â¸ºß¤·¤Þ¤»¤ó¡£");\r
-               }\r
-               \r
-               # PATH_INFO¤ÎºÇ¸å¤¬/¤À¤Ã¤¿¤é/¤Ê¤·¤ÎURL¤ËžÁ÷¤¹¤ë\r
-               if($path_info =~ m|/$|) {\r
-                       $path_info =~ s|/$||;\r
-                       $wiki->redirectURL($cgi->url().$path_info);\r
-               }\r
-               $path_info =~ m</([^/]+)$>;\r
-               $wiki->config('script_name', $1);\r
-               $wiki->config('data_dir'   , $wiki->config('data_dir'  ).$path_info);\r
-               $wiki->config('config_dir' , $wiki->config('config_dir').$path_info);\r
-               $wiki->config('backup_dir' , $wiki->config('backup_dir').$path_info);\r
-               $wiki->config('log_dir'    , $wiki->config('log_dir'   ).$path_info);\r
-\r
-               if(!($wiki->config('theme_uri') =~ /^(\/|http:|https:|ftp:)/)){\r
-                       my @paths = split(/\//,$path_info);\r
-                       $path_count = $#paths;\r
-                       for(my $i=0;$i<$path_count;$i++){\r
-                               $wiki->config('theme_uri','../'.$wiki->config('theme_uri'));\r
-                       }\r
-               }\r
-       }\r
-\r
-       #==============================================================================\r
-       # ÀßÄê¤òÈ¿±Ç¡Ê¤â¤¦¤Á¤ç¤Ã¤È¥¹¥Þ¡¼¥È¤Ë¤ä¤ê¤¿¤¤¤Í¡Ë\r
-       #==============================================================================\r
-       my $config = &Util::load_config_hash($wiki,$wiki->config('config_file'));\r
-       foreach my $key (keys(%$config)){\r
-               $wiki->config($key,$config->{$key});\r
-       }\r
-       # ¸ÄÊ̤ËÀßÄ꤬ɬÍפʤâ¤Î¤À¤±¾å½ñ¤­\r
-       $wiki->config('css',\r
-               $wiki->config('theme_uri')."/".$config->{theme}."/".$config->{theme}.".css");\r
-       $wiki->config('site_tmpl',\r
-               $wiki->config('tmpl_dir')."/site/".$config->{site_tmpl_theme}."/".$config->{site_tmpl_theme}.".tmpl");\r
-       $wiki->config('site_handyphone_tmpl',\r
-               $wiki->config('tmpl_dir')."/site/".$config->{site_tmpl_theme}."/".$config->{site_tmpl_theme}."_handyphone.tmpl");\r
-\r
-       #==============================================================================\r
-       # ¥¿¥¤¥à¥¢¥¦¥È¤·¤Æ¤¤¤ë¥»¥Ã¥·¥ç¥ó¤òÇË´þ\r
-       #==============================================================================\r
-       $cgi->remove_session($wiki);\r
-\r
-       #==============================================================================\r
-       # ¥æ¡¼¥¶¾ðÊó¤ÎÆɤ߹þ¤ß\r
-       #==============================================================================\r
-       my $users = &Util::load_config_hash($wiki,$wiki->config('userdat_file'));\r
-       foreach my $id (keys(%$users)){\r
-               my ($pass,$type) = split(/\t/,$users->{$id});\r
-               $wiki->add_user($id,$pass,$type);\r
-       }\r
-\r
-       #==============================================================================\r
-       # ¥×¥é¥°¥¤¥ó¤Î¥¤¥ó¥¹¥È¡¼¥ë¤È½é´ü²½\r
-       #==============================================================================\r
-       my @plugins = split(/\n/,&Util::load_config_text($wiki,$wiki->config('plugin_file')));\r
-       my $plugin_error = '';\r
-       foreach(sort(@plugins)){\r
-               $plugin_error .= $wiki->install_plugin($_);\r
-       }\r
-       # ¥×¥é¥°¥¤¥ó¤´¤È¤Î½é´ü²½½èÍý¤òµ¯Æ°\r
-       $wiki->do_hook("initialize");\r
-\r
-       #==============================================================================\r
-       # ¥¢¥¯¥·¥ç¥ó¥Ï¥ó¥É¥é¤Î¸Æ¤Ó½Ð¤·\r
-       #==============================================================================\r
-       my $action  = $cgi->param("action");\r
-       my $content = $wiki->call_handler($action);\r
-\r
-       # ¥×¥é¥°¥¤¥ó¤Î¥¤¥ó¥¹¥È¡¼¥ë¤Ë¼ºÇÔ¤·¤¿¾ì¹ç\r
-       $content = $plugin_error . $content if $plugin_error ne '';\r
-\r
-       #==============================================================================\r
-       # ¥ì¥¹¥Ý¥ó¥¹\r
-       #==============================================================================\r
-       my $output        = "";\r
-       my $is_handyphone = &Util::handyphone();\r
-       my $template_name = "";\r
-\r
-       if ($is_handyphone) {\r
-               $template_name = 'site_handyphone_tmpl';\r
-       } else {\r
-               $template_name = 'site_tmpl';\r
-       }\r
-\r
-       # ¥È¥Ã¥×¥Ú¡¼¥¸¤«¤É¤¦¤«¤òȽÄê\r
-       my $top  = 0;\r
-       if($cgi->param("page") eq $wiki->config("frontpage")){\r
-               $top = 1;\r
-       }\r
-\r
-       # ¥Ú¡¼¥¸¤Î¥¿¥¤¥È¥ë¤ò·èÄê\r
-       my $title = "";\r
-       if($cgi->param('action') eq "" && $wiki->page_exists($cgi->param('page')) && $wiki->is_installed('search')){\r
-               $title = "<a href=\"".$wiki->create_url({action=>"SEARCH",word=>$wiki->get_title()})."\">".\r
-                      &Util::escapeHTML($wiki->get_title())."</a>";\r
-       } else {\r
-               $title = &Util::escapeHTML($wiki->get_title());\r
-       }\r
-\r
-       #------------------------------------------------------------------------------\r
-       # ¥Ø¥Ã¥À¤ÎÀ¸À®\r
-       #------------------------------------------------------------------------------\r
-       my $header_tmpl = HTML::Template->new(filename => $wiki->config('tmpl_dir')."/header.tmpl",\r
-                                             die_on_bad_params => 0,\r
-                                             case_sensitive    => 1);\r
-       # ¥á¥Ë¥å¡¼¤ò¼èÆÀ\r
-       my @menu = ();\r
-       foreach(sort {$b->{weight}<=>$a->{weight}} @{$wiki->{menu}}){\r
-               if($_->{href} ne ""){\r
-                       push(@menu,$_);\r
-               }\r
-       }\r
-       $header_tmpl->param(MENU       => \@menu,\r
-                           FRONT_PAGE => $top);\r
-       my $header = $header_tmpl->output();\r
-\r
-       #------------------------------------------------------------------------------\r
-       # ¥Õ¥Ã¥¿¤ÎÀ¸À®\r
-       #------------------------------------------------------------------------------\r
-       my $footer_tmpl = HTML::Template->new(filename => $wiki->config('tmpl_dir')."/footer.tmpl",\r
-                                             die_on_bad_params => 0,\r
-                                             case_sensitive    => 1);\r
-\r
-       # ¥³¥Ô¡¼¥é¥¤¥È¤òɽ¼¨¤¹¤ë¤«¤É¤¦¤«\r
-       my $admin_name = $wiki->config('admin_name');\r
-       my $admin_mail = $wiki->config('admin_mail_pub');\r
-       my $out_copyright  = 1;\r
-       if($admin_name eq ""){ $admin_name = $admin_mail; }\r
-       if($admin_name eq "" && $admin_mail eq ""){ $out_copyright = 0; }\r
-\r
-       $footer_tmpl->param(ADMIN_NAME    => $admin_name,\r
-                           ADMIN_MAIL    => $admin_mail,\r
-                           OUT_COPYRIGHT => $out_copyright,\r
-                           FRONT_PAGE    => $top,\r
-                           VERSION       => Wiki->VERSION,\r
-                           PERL_VERSION  => $]);\r
-\r
-       if(exists $ENV{MOD_PERL}){\r
-               $footer_tmpl->param(MOD_PERL=>$ENV{MOD_PERL});\r
-       }\r
-\r
-       my $footer = $footer_tmpl->output();\r
-\r
-       #------------------------------------------------------------------------------\r
-       # ¥µ¥¤¥È¥Æ¥ó¥×¥ì¡¼¥È¤Î½èÍý\r
-       #------------------------------------------------------------------------------\r
-       # ¥Æ¥ó¥×¥ì¡¼¥È¤ÎÆɤ߹þ¤ß\r
-       my $template = HTML::Template->new(filename => $wiki->config($template_name),\r
-                                          die_on_bad_params => 0,\r
-                                          case_sensitive    => 1);\r
-\r
-       # »²¾È¸¢¸Â¤¬¤¢¤ë¤«¤É¤¦¤«\r
-       my $can_show = 0;\r
-       if($action ne '' || ($action eq '' && $wiki->can_show($cgi->param('page')))){\r
-               $can_show = 1;\r
-       }\r
-\r
-       # head¥¿¥°Æâ¤Ëɽ¼¨¤¹¤ë¾ðÊó¤òºîÀ®\r
-       my $head_info = "";\r
-       foreach (@{$wiki->{'head_info'}}){\r
-               $head_info .= $_."\n";\r
-       }\r
-\r
-       # ¥Æ¥ó¥×¥ì¡¼¥È¤Ë¥Ñ¥é¥á¡¼¥¿¤ò¥»¥Ã¥È\r
-       $template->param(SITE_TITLE  => &Util::escapeHTML($wiki->get_title()." - ".$wiki->config('site_title')),\r
-                        MENU        => $header,\r
-                        TITLE       => $title,\r
-                        CONTENT     => $content,\r
-                        FRONT_PAGE  => $top,\r
-                        FOOTER      => $footer,\r
-                        EDIT_MODE   => $action,\r
-                        CAN_SHOW    => $can_show,\r
-                        HEAD_INFO   => $head_info,\r
-                        SITE_NAME   => $wiki->config('site_title'));\r
-\r
-       my $login = $wiki->get_login_info();\r
-       $template->param(\r
-               IS_ADMIN => defined($login) && $login->{type}==0,\r
-               IS_LOGIN => defined($login)\r
-       );\r
-\r
-       if ($is_handyphone) {\r
-               # ·ÈÂÓÅÅÏÃÍѽèÍý\r
-               $output = $template->output;\r
-               &Jcode::convert(\$output,"sjis");\r
-       } else {\r
-               # ¥Ñ¥½¥³¥óÍѽèÍý\r
-               my $usercss = &Util::load_config_text($wiki,$wiki->config('usercss_file'));\r
-               \r
-               if($config->{'theme'} eq ''){\r
-                       # ¥Æ¡¼¥Þ¤¬»ÈÍѤµ¤ì¤Æ¤ª¤é¤º¡¢³°ÉôCSS¤¬»ØÄꤵ¤ì¤Æ¤¤¤ë¾ì¹ç¤Ï¤½¤ì¤ò»ÈÍÑ\r
-                       if($config->{'outer_css'} ne ''){\r
-                               $wiki->config('css',$config->{'outer_css'});\r
-                       # ¥Æ¡¼¥Þ¤â³°ÉôCSS¤â»ØÄꤵ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¥¹¥¿¥¤¥ë¥·¡¼¥È¤ò»ÈÍѤ·¤Ê¤¤\r
-                       } else {\r
-                               $wiki->config('css','');\r
-                       }\r
-               }\r
-               # ¥Ñ¥é¥á¡¼¥¿¤ò¥»¥Ã¥È\r
-               $template->param(HAVE_USER_CSS => $usercss ne "",\r
-                                THEME_CSS     => $wiki->config('css'),\r
-                                USER_CSS      => &Util::escapeHTML($usercss),\r
-                                THEME_URI     => $wiki->config('theme_uri'));\r
-               \r
-               # ¥Ú¡¼¥¸Ì¾¤òEXIST_PAGE_¥Ú¡¼¥¸Ì¾¤È¤¤¤¦¥Ñ¥é¥á¡¼¥¿¤Ë¥»¥Ã¥È\r
-               # ¤¿¤À¤·¡¢¥¹¥é¥Ã¥·¥å¤ò´Þ¤à¥Ú¡¼¥¸Ì¾¤Ï¥»¥Ã¥È¤·¤Ê¤¤\r
-               my @pagelist = $wiki->get_page_list();\r
-               foreach my $page (@pagelist){\r
-                       if(index($page,"/")==-1 && $wiki->can_show($page)){\r
-                               $template->param("EXIST_PAGE_".$page=>1);\r
-                       }\r
-               }\r
-               \r
-               $output = $template->output;\r
-               \r
-               # ¥¤¥ó¥¯¥ë¡¼¥ÉÌ¿Îá\r
-               # <!--FSWIKI_INCLUDE PAGE="¥Ú¡¼¥¸Ì¾"-->\r
-               # ¥Ú¡¼¥¸Ì¾¤ÇWikiName¤ò»ØÄꤹ¤ë¡£\r
-               my $fswiki_include_tag = '<!--\s*FSWIKI_INCLUDE\s+PAGE\s*=\s*"([^"]*)"\s*-->';\r
-               while($output =~ /$fswiki_include_tag/o){\r
-                       if($wiki->page_exists($1) && $wiki->can_show($1)){\r
-                               $output =~ s/$fswiki_include_tag/$wiki->process_wiki($wiki->get_page($1))/oe;\r
-                       } else {\r
-                               $output =~ s/$fswiki_include_tag//o;\r
-                       }\r
-               }\r
-       }\r
-       \r
-       #------------------------------------------------------------------------------\r
-       # ½ÐÎϽèÍý\r
-       #------------------------------------------------------------------------------\r
-       # ¥Ø¥Ã¥À¤Î½ÐÎÏ\r
-       if($is_handyphone){\r
-               print "Content-Type: text/html;charset=Shift_JIS\n";\r
-       } else {\r
-               print "Content-Type: text/html;charset=EUC-JP\n";\r
-       }\r
-       print "Pragma: no-cache\n";\r
-       print "Cache-Control: no-cache\n\n";\r
-        \r
-       # HTML¤Î½ÐÎÏ\r
-       print $output;\r
-};\r
-\r
-my $msg = $@;\r
-$ENV{'PATH_INFO'} = undef;\r
-$wiki->_process_before_exit();\r
-\r
-if($msg && index($msg, 'safe_die')<0){\r
-       $msg = Util::escapeHTML($msg);\r
-       print "Content-Type: text/html\n\n";\r
-       print "<html><head><title>Software Error</title></head>";\r
-       print "<body><h1>Software Error:</h1><p>$msg</p></body></html>";\r
-}\r
-Util::restore_die();\r
+#!/usr/bin/perl
+###############################################################################
+#
+# FreeStyleWiki ¥Õ¥í¥ó¥È¥¨¥ó¥ÉCGI¥¹¥¯¥ê¥×¥È
+#
+###############################################################################
+BEGIN {
+       if(exists $ENV{MOD_PERL}){
+               # ¥«¥ì¥ó¥È¥Ç¥£¥ì¥¯¥È¥ê¤ÎÊѹ¹
+               chdir($ENV{FSWIKI_HOME});
+       }
+}
+# ModPerl::Registry(Prefork)¤Ç¤Ï¼Â¹Ô»þ¤ËÊѹ¹¤µ¤ì¤Æ¤¤¤ë²ÄǽÀ­¤¬¤¢¤ë
+if(exists $ENV{MOD_PERL}){
+       chdir($ENV{FSWIKI_HOME});
+}
+
+#==============================================================================
+# ¥â¥¸¥å¡¼¥ë¤Î¥¤¥ó¥¯¥ë¡¼¥É
+#==============================================================================
+use Cwd;
+use lib './lib';
+# ModPerl::Registry(Prefork)¤Ç¤Ï@INC¤¬½é´ü²½¤µ¤ì¤Æ¤¤¤ë¾ì¹ç¤¬¤¢¤ë
+unshift @INC, './lib' if(exists $ENV{MOD_PERL});
+use strict;
+#use CGI::Carp qw(fatalsToBrowser);
+#use CGI2;
+use Wiki;
+use Util;
+use Jcode;
+use HTML::Template;
+
+# ¤³¤ì¤ò¤ä¤é¤Ê¤¤¤ÈApache::Registory¤ÇÆ°¤«¤Ê¤¤
+if(exists $ENV{MOD_PERL}){
+       eval("use Digest::Perl::MD5;");
+       eval("use plugin::core::Diff;");
+       eval("use plugin::pdf::PDFMaker;");
+       &Jcode::load_module("Jcode::Unicode") unless $Jcode::USE_ENCODE;
+}
+
+#==============================================================================
+# CGI¤ÈWiki¤Î¥¤¥ó¥¹¥¿¥ó¥¹²½
+#==============================================================================
+my $wiki = Wiki->new('setup.dat');
+my $cgi = $wiki->get_CGI();
+
+Util::override_die();
+eval {
+       # SessionÍѥǥ£¥ì¥¯¥È¥ê¤ÏFarm¤Ç¤â¶¦Ä̤˻ÈÍѤ¹¤ë
+       $wiki->config('session_dir',$wiki->config('log_dir'));
+       
+       #==============================================================================
+       # Farm¤È¤·¤ÆÆ°ºî¤¹¤ë¾ì¹ç
+       #==============================================================================
+       my $path_info  = $cgi->path_info();
+       my $path_count = 0;
+       if(length($path_info) > 0){
+               # Farm¤¬¤¢¤ë¤«³Îǧ¤¹¤ë
+               unless($path_info =~ m<^(/[A-Za-z0-9]+)*/?$> and -d $wiki->config('data_dir').$path_info){
+                       CORE::die("Wiki¤¬Â¸ºß¤·¤Þ¤»¤ó¡£");
+               }
+               
+               # PATH_INFO¤ÎºÇ¸å¤¬/¤À¤Ã¤¿¤é/¤Ê¤·¤ÎURL¤ËžÁ÷¤¹¤ë
+               if($path_info =~ m|/$|) {
+                       $path_info =~ s|/$||;
+                       $wiki->redirectURL($cgi->url().$path_info);
+               }
+               $path_info =~ m</([^/]+)$>;
+               $wiki->config('script_name', $1);
+               $wiki->config('data_dir'   , $wiki->config('data_dir'  ).$path_info);
+               $wiki->config('config_dir' , $wiki->config('config_dir').$path_info);
+               $wiki->config('backup_dir' , $wiki->config('backup_dir').$path_info);
+               $wiki->config('log_dir'    , $wiki->config('log_dir'   ).$path_info);
+
+               if(!($wiki->config('theme_uri') =~ /^(\/|http:|https:|ftp:)/)){
+                       my @paths = split(/\//,$path_info);
+                       $path_count = $#paths;
+                       for(my $i=0;$i<$path_count;$i++){
+                               $wiki->config('theme_uri','../'.$wiki->config('theme_uri'));
+                       }
+               }
+       }
+
+       #==============================================================================
+       # ÀßÄê¤òÈ¿±Ç¡Ê¤â¤¦¤Á¤ç¤Ã¤È¥¹¥Þ¡¼¥È¤Ë¤ä¤ê¤¿¤¤¤Í¡Ë
+       #==============================================================================
+       my $config = &Util::load_config_hash($wiki,$wiki->config('config_file'));
+       foreach my $key (keys(%$config)){
+               $wiki->config($key,$config->{$key});
+       }
+       # ¸ÄÊ̤ËÀßÄ꤬ɬÍפʤâ¤Î¤À¤±¾å½ñ¤­
+       $wiki->config('css',
+               $wiki->config('theme_uri')."/".$config->{theme}."/".$config->{theme}.".css");
+       $wiki->config('site_tmpl',
+               $wiki->config('tmpl_dir')."/site/".$config->{site_tmpl_theme}."/".$config->{site_tmpl_theme}.".tmpl");
+       $wiki->config('site_handyphone_tmpl',
+               $wiki->config('tmpl_dir')."/site/".$config->{site_tmpl_theme}."/".$config->{site_tmpl_theme}."_handyphone.tmpl");
+
+       #==============================================================================
+       # ¥¿¥¤¥à¥¢¥¦¥È¤·¤Æ¤¤¤ë¥»¥Ã¥·¥ç¥ó¤òÇË´þ
+       #==============================================================================
+       $cgi->remove_session($wiki);
+
+       #==============================================================================
+       # ¥æ¡¼¥¶¾ðÊó¤ÎÆɤ߹þ¤ß
+       #==============================================================================
+       my $users = &Util::load_config_hash($wiki,$wiki->config('userdat_file'));
+       foreach my $id (keys(%$users)){
+               my ($pass,$type) = split(/\t/,$users->{$id});
+               $wiki->add_user($id,$pass,$type);
+       }
+
+       #==============================================================================
+       # ¥×¥é¥°¥¤¥ó¤Î¥¤¥ó¥¹¥È¡¼¥ë¤È½é´ü²½
+       #==============================================================================
+       my @plugins = split(/\n/,&Util::load_config_text($wiki,$wiki->config('plugin_file')));
+       my $plugin_error = '';
+       foreach(sort(@plugins)){
+               $plugin_error .= $wiki->install_plugin($_);
+       }
+       # ¥×¥é¥°¥¤¥ó¤´¤È¤Î½é´ü²½½èÍý¤òµ¯Æ°
+       $wiki->do_hook("initialize");
+
+       #==============================================================================
+       # ¥¢¥¯¥·¥ç¥ó¥Ï¥ó¥É¥é¤Î¸Æ¤Ó½Ð¤·
+       #==============================================================================
+       my $action  = $cgi->param("action");
+       my $content = $wiki->call_handler($action);
+
+       # ¥×¥é¥°¥¤¥ó¤Î¥¤¥ó¥¹¥È¡¼¥ë¤Ë¼ºÇÔ¤·¤¿¾ì¹ç
+       $content = $plugin_error . $content if $plugin_error ne '';
+
+       #==============================================================================
+       # ¥ì¥¹¥Ý¥ó¥¹
+       #==============================================================================
+       my $output        = "";
+       my $is_handyphone = &Util::handyphone();
+       my $is_smartphone = &Util::smartphone();
+       my $template_name = "";
+
+       if ($is_handyphone || $is_smartphone) {
+               $template_name = 'site_handyphone_tmpl';
+       } else {
+               $template_name = 'site_tmpl';
+       }
+
+       # ¥È¥Ã¥×¥Ú¡¼¥¸¤«¤É¤¦¤«¤òȽÄê
+       my $top  = 0;
+       if($cgi->param("page") eq $wiki->config("frontpage")){
+               $top = 1;
+       }
+
+       # ¥Ú¡¼¥¸¤Î¥¿¥¤¥È¥ë¤ò·èÄê
+       my $title = "";
+       if($cgi->param('action') eq "" && $wiki->page_exists($cgi->param('page')) && $wiki->is_installed('search')){
+               $title = "<a href=\"".$wiki->create_url({action=>"SEARCH",word=>$wiki->get_title()})."\">".
+                      &Util::escapeHTML($wiki->get_title())."</a>";
+       } else {
+               $title = &Util::escapeHTML($wiki->get_title());
+       }
+
+       #------------------------------------------------------------------------------
+       # ¥Ø¥Ã¥À¤ÎÀ¸À®
+       #------------------------------------------------------------------------------
+       my $header_tmpl = HTML::Template->new(filename => $wiki->config('tmpl_dir')."/header.tmpl",
+                                             die_on_bad_params => 0,
+                                             case_sensitive    => 1);
+       # ¥á¥Ë¥å¡¼¤ò¼èÆÀ
+       my @menu = ();
+       foreach(sort {$b->{weight}<=>$a->{weight}} @{$wiki->{menu}}){
+               if($_->{href} ne ""){
+                       push(@menu,$_);
+               }
+       }
+       $header_tmpl->param(MENU       => \@menu,
+                           FRONT_PAGE => $top);
+       my $header = $header_tmpl->output();
+
+       #------------------------------------------------------------------------------
+       # ¥Õ¥Ã¥¿¤ÎÀ¸À®
+       #------------------------------------------------------------------------------
+       my $footer_tmpl = HTML::Template->new(filename => $wiki->config('tmpl_dir')."/footer.tmpl",
+                                             die_on_bad_params => 0,
+                                             case_sensitive    => 1);
+
+       # ¥³¥Ô¡¼¥é¥¤¥È¤òɽ¼¨¤¹¤ë¤«¤É¤¦¤«
+       my $admin_name = $wiki->config('admin_name');
+       my $admin_mail = $wiki->config('admin_mail_pub');
+       my $out_copyright  = 1;
+       if($admin_name eq ""){ $admin_name = $admin_mail; }
+       if($admin_name eq "" && $admin_mail eq ""){ $out_copyright = 0; }
+
+       $footer_tmpl->param(ADMIN_NAME    => $admin_name,
+                           ADMIN_MAIL    => $admin_mail,
+                           OUT_COPYRIGHT => $out_copyright,
+                           FRONT_PAGE    => $top,
+                           VERSION       => Wiki->VERSION,
+                           PERL_VERSION  => $]);
+
+       if(exists $ENV{MOD_PERL}){
+               $footer_tmpl->param(MOD_PERL=>$ENV{MOD_PERL});
+       }
+
+       my $footer = $footer_tmpl->output();
+
+       #------------------------------------------------------------------------------
+       # ¥µ¥¤¥È¥Æ¥ó¥×¥ì¡¼¥È¤Î½èÍý
+       #------------------------------------------------------------------------------
+       # ¥Æ¥ó¥×¥ì¡¼¥È¤ÎÆɤ߹þ¤ß
+       my $template = HTML::Template->new(filename => $wiki->config($template_name),
+                                          die_on_bad_params => 0,
+                                          case_sensitive    => 1);
+
+       # »²¾È¸¢¸Â¤¬¤¢¤ë¤«¤É¤¦¤«
+       my $can_show = 0;
+       if($action ne '' || ($action eq '' && $wiki->can_show($cgi->param('page')))){
+               $can_show = 1;
+       }
+
+       # head¥¿¥°Æâ¤Ëɽ¼¨¤¹¤ë¾ðÊó¤òºîÀ®
+       my $head_info = "";
+       foreach (@{$wiki->{'head_info'}}){
+               $head_info .= $_."\n";
+       }
+
+       # ¥Æ¥ó¥×¥ì¡¼¥È¤Ë¥Ñ¥é¥á¡¼¥¿¤ò¥»¥Ã¥È
+       $template->param(SITE_TITLE  => &Util::escapeHTML($wiki->get_title()." - ".$wiki->config('site_title')),
+                        MENU        => $header,
+                        TITLE       => $title,
+                        CONTENT     => $content,
+                        FRONT_PAGE  => $top,
+                        FOOTER      => $footer,
+                        EDIT_MODE   => $action,
+                        CAN_SHOW    => $can_show,
+                        HEAD_INFO   => $head_info,
+                        SITE_NAME   => $wiki->config('site_title'));
+
+       my $login = $wiki->get_login_info();
+       $template->param(
+               IS_ADMIN => defined($login) && $login->{type}==0,
+               IS_LOGIN => defined($login)
+       );
+
+       if ($is_handyphone || $is_smartphone) {
+               # ·ÈÂÓÅÅÏÃÍѽèÍý
+               $output = $template->output;
+               &Jcode::convert(\$output,"sjis");
+       } else {
+               # ¥Ñ¥½¥³¥óÍѽèÍý
+               my $usercss = &Util::load_config_text($wiki,$wiki->config('usercss_file'));
+               
+               if($config->{'theme'} eq ''){
+                       # ¥Æ¡¼¥Þ¤¬»ÈÍѤµ¤ì¤Æ¤ª¤é¤º¡¢³°ÉôCSS¤¬»ØÄꤵ¤ì¤Æ¤¤¤ë¾ì¹ç¤Ï¤½¤ì¤ò»ÈÍÑ
+                       if($config->{'outer_css'} ne ''){
+                               $wiki->config('css',$config->{'outer_css'});
+                       # ¥Æ¡¼¥Þ¤â³°ÉôCSS¤â»ØÄꤵ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¥¹¥¿¥¤¥ë¥·¡¼¥È¤ò»ÈÍѤ·¤Ê¤¤
+                       } else {
+                               $wiki->config('css','');
+                       }
+               }
+               # ¥Ñ¥é¥á¡¼¥¿¤ò¥»¥Ã¥È
+               $template->param(HAVE_USER_CSS => $usercss ne "",
+                                THEME_CSS     => $wiki->config('css'),
+                                USER_CSS      => &Util::escapeHTML($usercss),
+                                THEME_URI     => $wiki->config('theme_uri'));
+               
+               # ¥Ú¡¼¥¸Ì¾¤òEXIST_PAGE_¥Ú¡¼¥¸Ì¾¤È¤¤¤¦¥Ñ¥é¥á¡¼¥¿¤Ë¥»¥Ã¥È
+               # ¤¿¤À¤·¡¢¥¹¥é¥Ã¥·¥å¤ò´Þ¤à¥Ú¡¼¥¸Ì¾¤Ï¥»¥Ã¥È¤·¤Ê¤¤
+               my @pagelist = $wiki->get_page_list();
+               foreach my $page (@pagelist){
+                       if(index($page,"/")==-1 && $wiki->can_show($page)){
+                               $template->param("EXIST_PAGE_".$page=>1);
+                       }
+               }
+               
+               $output = $template->output;
+               
+               # ¥¤¥ó¥¯¥ë¡¼¥ÉÌ¿Îá
+               # <!--FSWIKI_INCLUDE PAGE="¥Ú¡¼¥¸Ì¾"-->
+               # ¥Ú¡¼¥¸Ì¾¤ÇWikiName¤ò»ØÄꤹ¤ë¡£
+               my $fswiki_include_tag = '<!--\s*FSWIKI_INCLUDE\s+PAGE\s*=\s*"([^"]*)"\s*-->';
+               while($output =~ /$fswiki_include_tag/o){
+                       if($wiki->page_exists($1) && $wiki->can_show($1)){
+                               $output =~ s/$fswiki_include_tag/$wiki->process_wiki($wiki->get_page($1))/oe;
+                       } else {
+                               $output =~ s/$fswiki_include_tag//o;
+                       }
+               }
+       }
+       
+       #------------------------------------------------------------------------------
+       # ½ÐÎϽèÍý
+       #------------------------------------------------------------------------------
+       # ¥Ø¥Ã¥À¤Î½ÐÎÏ
+       if($is_handyphone || $is_smartphone){
+               print "Content-Type: text/html;charset=Shift_JIS\n";
+       } else {
+               print "Content-Type: text/html;charset=EUC-JP\n";
+       }
+       print "Pragma: no-cache\n";
+       print "Cache-Control: no-cache\n\n";
+        
+       # HTML¤Î½ÐÎÏ
+       print $output;
+};
+
+my $msg = $@;
+$ENV{'PATH_INFO'} = undef;
+$wiki->_process_before_exit();
+
+if($msg && index($msg, 'safe_die')<0){
+       $msg = Util::escapeHTML($msg);
+       print "Content-Type: text/html\n\n";
+       print "<html><head><title>Software Error</title></head>";
+       print "<body><h1>Software Error:</h1><p>$msg</p></body></html>";
+}
+Util::restore_die();