OSDN Git Service

ソフト404等のレスポンスエラーコード対応
[fswiki/fswiki.git] / lib / Wiki.pm
index 57fdd86..8b0fd7b 100644 (file)
@@ -8,6 +8,7 @@ use strict;
 use CGI2;
 use File::Copy;
 use File::Path;
+use HTTP::Status;
 use Wiki::DefaultStorage;
 use Wiki::HTMLParser;
 use vars qw($VERSION $DEBUG);
@@ -548,17 +549,17 @@ sub call_handler {
        my $obj = $self->get_plugin_instance($self->{"handler"}->{$action});
        
        unless(defined($obj)){
-               return $self->error("ÉÔÀµ¤Ê¥¢¥¯¥·¥ç¥ó¤Ç¤¹¡£");
+               return $self->error(RC_BAD_REQUEST, "ÉÔÀµ¤Ê¥¢¥¯¥·¥ç¥ó¤Ç¤¹¡£");
        }
        
        # ´ÉÍý¼ÔÍѤΥ¢¥¯¥·¥ç¥ó
        if($self->{"handler_permission"}->{$action}==0){
                my $login = $self->get_login_info();
                if(!defined($login)){
-                       return $self->error("¥í¥°¥¤¥ó¤·¤Æ¤¤¤Þ¤»¤ó¡£");
+                       return $self->error(RC_FORBIDDEN, "¥í¥°¥¤¥ó¤·¤Æ¤¤¤Þ¤»¤ó¡£");
                        
                } elsif($login->{type}!=0){
-                       return $self->error("´ÉÍý¼Ô¸¢¸Â¤¬É¬ÍפǤ¹¡£");
+                       return $self->error(RC_FORBIDDEN, "´ÉÍý¼Ô¸¢¸Â¤¬É¬ÍפǤ¹¡£");
                }
                return $obj->do_action($self).
                       "<div class=\"comment\"><a href=\"".$self->create_url({action=>"LOGIN"})."\">¥á¥Ë¥å¡¼¤ËÌá¤ë</a></div>";
@@ -567,7 +568,7 @@ sub call_handler {
        } elsif($self->{"handler_permission"}->{$action}==2){
                my $login = $self->get_login_info();
                if(!defined($login)){
-                       return $self->error("¥í¥°¥¤¥ó¤·¤Æ¤¤¤Þ¤»¤ó¡£");
+                       return $self->error(RC_FORBIDDEN, "¥í¥°¥¤¥ó¤·¤Æ¤¤¤Þ¤»¤ó¡£");
                }
                return $obj->do_action($self).
                       "<div class=\"comment\"><a href=\"".$self->create_url({action=>"LOGIN"})."\">¥á¥Ë¥å¡¼¤ËÌá¤ë</a></div>";
@@ -678,13 +679,23 @@ sub get_current_parser {
 #   my $wiki = shift;
 #   ...
 #   return $wiki-&gt;error(¥¨¥é¡¼¥á¥Ã¥»¡¼¥¸);
+#     or
+#   return $wiki-&gt;error(¥¨¥é¡¼¥³¡¼¥É, ¥¨¥é¡¼¥á¥Ã¥»¡¼¥¸);
 # }
 # </pre>
 #==============================================================================
 sub error {
        my $self    = shift;
+       my $status = shift;
        my $message = shift;
        
+       if(!defined($message)){
+               $message = $status;
+               $status = undef;
+       } else {
+               printf "Status: %d\n", $status;
+       }
+       
        $self->set_title("¥¨¥é¡¼");
        $self->get_CGI->param("action","ERROR");