X-Git-Url: http://git.osdn.net/view?p=fswiki%2Fsandbox.git;a=blobdiff_plain;f=kgsoft%2Fplugin%2Fcore.pm;fp=kgsoft%2Fplugin%2Fcore.pm;h=7f2b2f12d0c86dbe106b044777d01eec37951566;hp=0000000000000000000000000000000000000000;hb=c65e30e9f6b9fe676d8ee865f83741ef660b871a;hpb=6decdb4db66d8d0504e5ab9beca7cd6698fb2700 diff --git a/kgsoft/plugin/core.pm b/kgsoft/plugin/core.pm new file mode 100644 index 0000000..7f2b2f1 --- /dev/null +++ b/kgsoft/plugin/core.pm @@ -0,0 +1,162 @@ +########################################################################################## +# +# ¥¹¥Ñ¥à¥Õ¥£¥ë¥¿¡¼¥×¥é¥°¥¤¥ó¡Ê³Ø½¬µ¡Ç½Ìµ¤·ÈÇ¡Ë +#¡Êcore::EditPage¥×¥é¥°¥¤¥ó¡Ê¥Ú¡¼¥¸¤ÎÊÔ½¸¡Ë¤Î¥ª¡¼¥Ð¡¼¥é¥¤¥É¡Ë +# +########################################################################################## +use strict; + +use plugin::core::EditPage; + +# plugin::core::EditPage¤Îdo_action¥á¥½¥Ã¥É¤ÎÃÖ¤­´¹¤¨ +package plugin::core::EditPage; + +sub do_action { + my $self = shift; + my $wiki = shift; + my $cgi = $wiki->get_CGI; + + my $pagename = $cgi->param("page"); + my $format = $wiki->get_edit_format(); + my $content = $cgi->param("content"); + my $sage = $cgi->param("sage"); + my $template = $cgi->param("template"); + my $artno = $cgi->param("artno"); + my $time = $wiki->get_last_modified($pagename); + + my $buf = ""; + my $login = $wiki->get_login_info(); + + if($pagename eq ""){ + return $wiki->error("¥Ú¡¼¥¸¤¬»ØÄꤵ¤ì¤Æ¤¤¤Þ¤»¤ó¡£"); + } + if($pagename =~ /([\|\[\]])|^:|([^:]:[^:])/){ + return $wiki->error("¥Ú¡¼¥¸Ì¾¤Ë»ÈÍѤǤ­¤Ê¤¤Ê¸»ú¤¬´Þ¤Þ¤ì¤Æ¤¤¤Þ¤¹¡£"); + } + if(!$wiki->can_modify_page($pagename)){ + return $wiki->error("¥Ú¡¼¥¸¤ÎÊÔ½¸¤Ïµö²Ä¤µ¤ì¤Æ¤¤¤Þ¤»¤ó¡£"); + } + + #-------------------------------------------------------------------------- + # Êݸ½èÍý + if($cgi->param("save") ne ""){ + if($wiki->page_exists($pagename)){ + if($cgi->param("lastmodified") < $time){ + return $wiki->error("¥Ú¡¼¥¸¤Ï´û¤ËÊ̤Υ桼¥¶¤Ë¤è¤Ã¤Æ¹¹¿·¤µ¤ì¤Æ¤¤¤Þ¤¹¡£"); + } + } + +#-------------------------------------------------------------------------------------------------- + if($content){ + unless(&plugin::_ex_spam_filter_light::Install::judgment_text($content)){ + my $time = Util::format_date(time()); + my $file = $wiki->config('log_dir')."/spam_page.txt"; + if(open(SPAM_LOG, ">>$file")){ + print SPAM_LOG "-" x 70 . "\n"; + print SPAM_LOG "$pagename:$artno ($time)\n"; + print SPAM_LOG "-" x 70 . "\n"; + print SPAM_LOG "$content\n"; + close(SPAM_LOG); + } + my $error_message = $wiki->error("ÊÔ½¸¤µ¤ì¤¿Ê¸¾Ï¤Ï¥¹¥Ñ¥àʸ¾Ï¤ÈȽÄꤵ¤ì¤Þ¤·¤¿¡£\n"); + $content = Util::escapeHTML($content); + $content =~ s/\n/
/g; + $error_message .= "

\n"; + $error_message .= "

Åê¹Æ¤µ¤ì¤¿Ê¸¾Ï¡§
\n"; + $error_message .= "
¡ã¥Ú¡¼¥¸Ì¾¡ä
\n"; + $error_message .= "
$pagename
\n"; + $error_message .= "
¡ãËÜʸ¡ä
\n"; + $error_message .= "
$content
\n"; + $error_message .= "

\n"; + return $error_message; + } + } +#-------------------------------------------------------------------------------------------------- + + #my $save_content = $content; + my $mode = $wiki->get_edit_format(); + my $save_content = $wiki->convert_to_fswiki($content,$mode); + + # ¥Ñ¡¼¥ÈÊÔ½¸¤Î¾ì¹ç + if($artno ne ""){ + $save_content = &make_save_source($wiki->get_page($pagename),$save_content,$artno,$wiki); + } + # FrontPage¤Ïºï½üÉÔ²Ä + if($pagename eq $wiki->config("frontpage") && $save_content eq ""){ + $buf = "".&Util::escapeHTML($wiki->config("frontpage"))."¤Ïºï½ü¤¹¤ë¤³¤È¤Ï¤Ç¤­¤Þ¤»¤ó¡£\n"; + + # ¤½¤ì°Ê³°¤Î¾ì¹ç¤Ï½èÍý¤ò¼Â¹Ô¤·¤Æ¥á¥Ã¥»¡¼¥¸¤òÊÖµÑ + } else { + $wiki->save_page($pagename,$save_content,$sage); + + if($content ne ""){ + $wiki->redirect($pagename); + } else { + if($artno eq ""){ + $wiki->set_title($pagename."¤òºï½ü¤·¤Þ¤·¤¿"); + return $cgi->escapeHTML($pagename)."¤òºï½ü¤·¤Þ¤·¤¿¡£"; + } else { + $wiki->set_title($pagename."¤Î¥Ñ¡¼¥È¤òºï½ü¤·¤Þ¤·¤¿"); + return $cgi->escapeHTML($pagename)."¤Î¥Ñ¡¼¥È¤òºï½ü¤·¤Þ¤·¤¿¡£"; + } + } + } + #-------------------------------------------------------------------------- + # ¥×¥ì¥Ó¥å¡¼½èÍý + } elsif($cgi->param("preview") ne ""){ + $time = $cgi->param("lastmodified"); + $buf = "°Ê²¼¤Î¥×¥ì¥Ó¥å¡¼¤ò³Îǧ¤·¤Æ¤è¤í¤·¤±¤ì¤Ð¡ÖÊݸ¡×¥Ü¥¿¥ó¤ò²¡¤·¤Æ¤¯¤À¤µ¤¤¡£
"; + if($content eq ""){ + if($pagename eq $wiki->config("frontpage") && $artno eq ""){ + $buf = $buf."¡Ê".&Util::escapeHTML($wiki->config("frontpage"))."¤Ïºï½ü¤¹¤ë¤³¤È¤Ï¤Ç¤­¤Þ¤»¤ó¡£¡Ë"; + } else { + if($artno eq ""){ + $buf = $buf."¡Ê¥Ú¡¼¥¸ÆâÍƤ϶õ¤Ç¤¹¡£¹¹¿·¤¹¤ë¤È¤³¤Î¥Ú¡¼¥¸¤Ïºï½ü¤µ¤ì¤Þ¤¹¡£¡Ë"; + } else { + $buf = $buf."¡Ê¥Ú¡¼¥¸ÆâÍƤ϶õ¤Ç¤¹¡£¹¹¿·¤¹¤ë¤È¤³¤Î¥Ñ¡¼¥È¤Ïºï½ü¤µ¤ì¤Þ¤¹¡£¡Ë"; + } + } + } + $content = $wiki->convert_to_fswiki($content,$format); + $buf = $buf."
".$wiki->process_wiki($content); + + } elsif($wiki->page_exists($pagename)) { + #¥Ú¡¼¥¸¤¬Â¸ºß¤¹¤ë¾ì¹ç + if($artno eq ""){ + $content = $wiki->get_page($pagename); + } else { + $content = &read_by_part($wiki->get_page($pagename),$artno); + } + } elsif($template ne ""){ + #¥Æ¥ó¥×¥ì¡¼¥È¤ò»ØÄꤵ¤ì¤¿¾ì¹ç + $content = $wiki->get_page($template); + } + + #-------------------------------------------------------------------------- + # ÆþÎÏ¥Õ¥©¡¼¥à + $wiki->set_title($pagename."¤ÎÊÔ½¸",1); + + my $tmpl = HTML::Template->new(filename=>$wiki->config('tmpl_dir')."/editform.tmpl", + die_on_bad_params => 0); + + $tmpl->param({SCRIPT_NAME => $wiki->config('script_name'), + PAGE_NAME => $pagename, + CONTENT => $wiki->convert_from_fswiki($content,$format), + LAST_MODIFIED => $time, + ACTION => 'EDIT', + EXISTS_PAGE => $wiki->page_exists($pagename), + SAGE => $sage}); + + if($artno ne ""){ + $tmpl->param(OPTIONAL_PARAMS=>[{NAME=>'artno',VALUE=>$artno}]); + } + + $buf .= $tmpl->output(); + + # ¥×¥é¥°¥¤¥ó¤òÁÞÆþ + $buf .= $wiki->get_editform_plugin(); + + return $buf; +} + +1;