-#!/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();