+++ /dev/null
-##########################################################################################
-#
-# ¥¹¥Ñ¥à¥Õ¥£¥ë¥¿¡¼¥×¥é¥°¥¤¥ó¡Ê³Ø½¬µ¡Ç½Ìµ¤·ÈÇ¡Ë
-#¡Ê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->config('page_max') ne '' && $wiki->config('page_max') > 0){
- if(length($content) > $wiki->config('page_max')){
- return $wiki->error('¥Ú¡¼¥¸¤¬Êݸ²Äǽ¤ÊºÇÂ祵¥¤¥º¤òĶ¤¨¤Æ¤¤¤Þ¤¹¡£');
- }
- }
- if($wiki->page_exists($pagename) && $cgi->param("lastmodified") != $time){
- $buf .= "<p><span class=\"error\">¥Ú¡¼¥¸¤Ï´û¤ËÊ̤Υ桼¥¶¤Ë¤è¤Ã¤Æ¹¹¿·¤µ¤ì¤Æ¤¤¤Þ¤¹¡£ºÇ¿·ÈǤȤκ¹Ê¬¤ò³Îǧ¤·¤ÆºÆÅÙÊÔ½¸¤ò¹Ô¤Ã¤Æ¤¯¤À¤µ¤¤¡£</span></p>";
-
- my $mode = $wiki->get_edit_format();
- my $orig_source = undef;
- if($artno eq ""){
- $orig_source = $wiki->convert_from_fswiki($wiki->get_page($pagename), $mode);
- } else {
- $orig_source = $wiki->convert_from_fswiki(&read_by_part($wiki->get_page($pagename), $artno), $mode);
- }
- my $your_source = $content;
- $your_source =~ s/\r\n/\n/g;
- $your_source =~ s/\r/\n/g;
-
- my $diff = plugin::core::Diff::_get_diff_html($wiki, $orig_source, $your_source);
- $buf .= $diff."<br>";
-
- $content = $orig_source;
-
- } else {
-
-#--------------------------------------------------------------------------------------------------
- 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/<br>/g;
- $error_message .= "<p>\n";
- $error_message .= "<div>Åê¹Æ¤µ¤ì¤¿Ê¸¾Ï¡§</div>\n";
- $error_message .= "<div>¡ã¥Ú¡¼¥¸Ì¾¡ä</div>\n";
- $error_message .= "<div>$pagename</div>\n";
- $error_message .= "<div>¡ãËÜʸ¡ä</div>\n";
- $error_message .= "<div>$content</div>\n";
- $error_message .= "</p>\n";
- return $error_message;
- }
- }
-#--------------------------------------------------------------------------------------------------
-\r
- #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 = "<b>".&Util::escapeHTML($wiki->config("frontpage"))."¤Ïºï½ü¤¹¤ë¤³¤È¤Ï¤Ç¤¤Þ¤»¤ó¡£</b>\n";
-
- # ¤½¤ì°Ê³°¤Î¾ì¹ç¤Ï½èÍý¤ò¼Â¹Ô¤·¤Æ¥á¥Ã¥»¡¼¥¸¤òÊÖµÑ
- } else {
- $wiki->save_page($pagename, $save_content, $sage);
-
- if($content ne ""){
- $wiki->redirect($pagename, $artno);
- } else {
- if($artno eq ""){
- $wiki->set_title($pagename."¤òºï½ü¤·¤Þ¤·¤¿");
- return Util::escapeHTML($pagename)."¤òºï½ü¤·¤Þ¤·¤¿¡£";
- } else {
- $wiki->set_title($pagename."¤Î¥Ñ¡¼¥È¤òºï½ü¤·¤Þ¤·¤¿");
- return Util::escapeHTML($pagename)."¤Î¥Ñ¡¼¥È¤òºï½ü¤·¤Þ¤·¤¿¡£";
- }
- }
- }
- }
- #--------------------------------------------------------------------------
- # º¹Ê¬³Îǧ½èÍý
- } elsif($cgi->param("diff") ne ""){
- if($wiki->config('page_max') ne '' && $wiki->config('page_max') > 0){
- if(length($content) > $wiki->config('page_max')){
- return $wiki->error('¥Ú¡¼¥¸¤¬Êݸ²Äǽ¤ÊºÇÂ祵¥¤¥º¤òĶ¤¨¤Æ¤¤¤Þ¤¹¡£');
- }
- }
- $time = $cgi->param("lastmodified");
-
- my $mode = $wiki->get_edit_format();
- my $orig_source = undef;
- if($artno eq ""){
- $orig_source = $wiki->convert_from_fswiki($wiki->get_page($pagename), $mode);
- } else {
- $orig_source = $wiki->convert_from_fswiki(&read_by_part($wiki->get_page($pagename), $artno), $mode);
- }
- my $your_source = $content;
- $your_source =~ s/\r\n/\n/g;
- $your_source =~ s/\r/\n/g;
-
- if($orig_source eq $your_source){
- $buf .= '<p class="error">º¹Ê¬¤Ï¤¢¤ê¤Þ¤»¤ó¡£</p>';
- } else {
- my $diff = plugin::core::Diff::_get_diff_html($wiki, $your_source, $orig_source);
- $buf .= $diff."<br>";
- }
-
- #--------------------------------------------------------------------------
- # ¥×¥ì¥Ó¥å¡¼½èÍý
- } elsif($cgi->param("preview") ne ""){
- if($wiki->config('page_max') ne '' && $wiki->config('page_max') > 0){
- if(length($content) > $wiki->config('page_max')){
- return $wiki->error('¥Ú¡¼¥¸¤¬Êݸ²Äǽ¤ÊºÇÂ祵¥¤¥º¤òĶ¤¨¤Æ¤¤¤Þ¤¹¡£');
- }
- }
- $time = $cgi->param("lastmodified");
- $buf = "°Ê²¼¤Î¥×¥ì¥Ó¥å¡¼¤ò³Îǧ¤·¤Æ¤è¤í¤·¤±¤ì¤Ð¡ÖÊݸ¡×¥Ü¥¿¥ó¤ò²¡¤·¤Æ¤¯¤À¤µ¤¤¡£<br>";
- if($content eq ""){
- if($pagename eq $wiki->config("frontpage") && $artno eq ""){
- $buf = $buf."<b>¡Ê".&Util::escapeHTML($wiki->config("frontpage"))."¤Ïºï½ü¤¹¤ë¤³¤È¤Ï¤Ç¤¤Þ¤»¤ó¡£¡Ë</b>";
- } else {
- if($artno eq ""){
- $buf = $buf."<b>¡Ê¥Ú¡¼¥¸ÆâÍƤ϶õ¤Ç¤¹¡£¹¹¿·¤¹¤ë¤È¤³¤Î¥Ú¡¼¥¸¤Ïºï½ü¤µ¤ì¤Þ¤¹¡£¡Ë</b>";
- } else {
- $buf = $buf."<b>¡Ê¥Ú¡¼¥¸ÆâÍƤ϶õ¤Ç¤¹¡£¹¹¿·¤¹¤ë¤È¤³¤Î¥Ñ¡¼¥È¤Ïºï½ü¤µ¤ì¤Þ¤¹¡£¡Ë</b>";
- }
- }
- }
- $content = $wiki->convert_to_fswiki($content,$format);
- $buf = $buf."<br>".$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->create_url(),
- 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;