OSDN Git Service

ソフト404等のレスポンスエラーコード対応
[fswiki/fswiki.git] / plugin / core / EditPage.pm
index 4cc6f5e..80e879e 100644 (file)
@@ -5,7 +5,9 @@
 ###############################################################################
 package plugin::core::EditPage;
 use strict;
+use HTTP::Status;
 use plugin::core::Diff;
+
 #==============================================================================
 # ¥³¥ó¥¹¥È¥é¥¯¥¿
 #==============================================================================
@@ -35,13 +37,13 @@ sub do_action {
        my $login = $wiki->get_login_info();
 
        if($pagename eq ""){
-               return $wiki->error("¥Ú¡¼¥¸¤¬»ØÄꤵ¤ì¤Æ¤¤¤Þ¤»¤ó¡£");
+               return $wiki->error(RC_BAD_REQUEST, "¥Ú¡¼¥¸¤¬»ØÄꤵ¤ì¤Æ¤¤¤Þ¤»¤ó¡£");
        }
        if($pagename =~ /([\|\[\]])|^:|([^:]:[^:])/){
-               return $wiki->error("¥Ú¡¼¥¸Ì¾¤Ë»ÈÍѤǤ­¤Ê¤¤Ê¸»ú¤¬´Þ¤Þ¤ì¤Æ¤¤¤Þ¤¹¡£");
+               return $wiki->error(RC_BAD_REQUEST, "¥Ú¡¼¥¸Ì¾¤Ë»ÈÍѤǤ­¤Ê¤¤Ê¸»ú¤¬´Þ¤Þ¤ì¤Æ¤¤¤Þ¤¹¡£");
        }
        if(!$wiki->can_modify_page($pagename)){
-               return $wiki->error("¥Ú¡¼¥¸¤ÎÊÔ½¸¤Ïµö²Ä¤µ¤ì¤Æ¤¤¤Þ¤»¤ó¡£");
+               return $wiki->error(RC_FORBIDDEN, "¥Ú¡¼¥¸¤ÎÊÔ½¸¤Ïµö²Ä¤µ¤ì¤Æ¤¤¤Þ¤»¤ó¡£");
        }
        
        #--------------------------------------------------------------------------
@@ -49,11 +51,11 @@ sub do_action {
        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('¥Ú¡¼¥¸¤¬Êݸ²Äǽ¤ÊºÇÂ祵¥¤¥º¤òĶ¤¨¤Æ¤¤¤Þ¤¹¡£');
+                               return $wiki->error(RC_BAD_REQUEST, '¥Ú¡¼¥¸¤¬Êݸ²Äǽ¤ÊºÇÂ祵¥¤¥º¤òĶ¤¨¤Æ¤¤¤Þ¤¹¡£');
                        }
                }
                if($wiki->page_exists($pagename) && $cgi->param("lastmodified") != $time){
-                       $buf .= "<p><span class=\"error\">¥Ú¡¼¥¸¤Ï´û¤ËÊ̤Υ桼¥¶¤Ë¤è¤Ã¤Æ¹¹¿·¤µ¤ì¤Æ¤¤¤Þ¤¹¡£</span></p>";
+                       $buf .= "<p><span class=\"error\">¥Ú¡¼¥¸¤Ï´û¤ËÊ̤Υ桼¥¶¤Ë¤è¤Ã¤Æ¹¹¿·¤µ¤ì¤Æ¤¤¤Þ¤¹¡£ºÇ¿·ÈǤȤκ¹Ê¬¤ò³Îǧ¤·¤ÆºÆÅÙÊÔ½¸¤ò¹Ô¤Ã¤Æ¤¯¤À¤µ¤¤¡£</span></p>";
                        
                        my $mode = $wiki->get_edit_format();
                        my $orig_source = undef;
@@ -66,19 +68,8 @@ sub do_action {
                        $your_source =~ s/\r\n/\n/g;
                        $your_source =~ s/\r/\n/g;
                        
-                       my $diff = plugin::core::Diff::_get_diff_html($orig_source, $your_source);
-                       $diff =~ s/\n/<br>/g;
-                       
-                       $buf .= qq|
-                               <ul>
-                                 <li>Äɲ䵤줿Éôʬ¤Ï<ins class="diff">¤³¤Î¤è¤¦¤Ë</ins>ɽ¼¨¤µ¤ì¤Þ¤¹¡£</li>
-                                 <li>ºï½ü¤µ¤ì¤¿Éôʬ¤Ï<del class="diff">¤³¤Î¤è¤¦¤Ë</del>ɽ¼¨¤µ¤ì¤Þ¤¹¡£</li>
-                               </ul>
-                               <p>
-                                 ºÇ¿·ÈǤȤκ¹Ê¬¤ò³Îǧ¤·¤ÆºÆÅÙÊÔ½¸¤ò¹Ô¤Ã¤Æ¤¯¤À¤µ¤¤¡§
-                               </p>
-                               <div class="diff">$diff</div>
-                       |;
+                       my $diff = plugin::core::Diff::_get_diff_html($wiki, $orig_source, $your_source);
+                       $buf .= $diff."<br>";
                        
                        $content = $orig_source;
                        
@@ -117,7 +108,7 @@ sub do_action {
        } 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('¥Ú¡¼¥¸¤¬Êݸ²Äǽ¤ÊºÇÂ祵¥¤¥º¤òĶ¤¨¤Æ¤¤¤Þ¤¹¡£');
+                               return $wiki->error(RC_BAD_REQUEST, '¥Ú¡¼¥¸¤¬Êݸ²Äǽ¤ÊºÇÂ祵¥¤¥º¤òĶ¤¨¤Æ¤¤¤Þ¤¹¡£');
                        }
                }
                $time = $cgi->param("lastmodified");
@@ -133,19 +124,11 @@ sub do_action {
                $your_source =~ s/\r\n/\n/g;
                $your_source =~ s/\r/\n/g;
                
-               $buf .= qq|
-                       <ul>
-                         <li>Äɲ䵤줿Éôʬ¤Ï<ins class="diff">¤³¤Î¤è¤¦¤Ë</ins>ɽ¼¨¤µ¤ì¤Þ¤¹¡£</li>
-                         <li>ºï½ü¤µ¤ì¤¿Éôʬ¤Ï<del class="diff">¤³¤Î¤è¤¦¤Ë</del>ɽ¼¨¤µ¤ì¤Þ¤¹¡£</li>
-                       </ul>
-               |;
-                       
                if($orig_source eq $your_source){
                        $buf .= '<p class="error">º¹Ê¬¤Ï¤¢¤ê¤Þ¤»¤ó¡£</p>';
                } else {
-                       my $diff = plugin::core::Diff::_get_diff_html($your_source, $orig_source);
-                       $diff =~ s/\n/<br>/g;
-                       $buf .= qq|<div class="diff">$diff</div>|;
+                       my $diff = plugin::core::Diff::_get_diff_html($wiki, $your_source, $orig_source);
+                       $buf .= $diff."<br>";
                }
                
        #--------------------------------------------------------------------------
@@ -153,7 +136,7 @@ sub do_action {
        } 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('¥Ú¡¼¥¸¤¬Êݸ²Äǽ¤ÊºÇÂ祵¥¤¥º¤òĶ¤¨¤Æ¤¤¤Þ¤¹¡£');
+                               return $wiki->error(RC_BAD_REQUEST, '¥Ú¡¼¥¸¤¬Êݸ²Äǽ¤ÊºÇÂ祵¥¤¥º¤òĶ¤¨¤Æ¤¤¤Þ¤¹¡£');
                        }
                }
                $time = $cgi->param("lastmodified");