OSDN Git Service

ソフト404等のレスポンスエラーコード対応
[fswiki/fswiki.git] / plugin / core / Source.pm
1 ###############################################################################
2
3 # ¥½¡¼¥¹¤òɽ¼¨¤¹¤ë¥×¥é¥°¥¤¥ó
4
5 ###############################################################################
6 package plugin::core::Source;
7 use strict;
8 use HTTP::Status;
9 #==============================================================================
10 # ¥³¥ó¥¹¥È¥é¥¯¥¿
11 #==============================================================================
12 sub new {
13         my $class = shift;
14         my $self = {};
15         return bless $self,$class;
16 }
17
18 #==============================================================================
19 # ¥¢¥¯¥·¥ç¥ó¤Î¼Â¹Ô
20 #==============================================================================
21 sub do_action {
22         my $self = shift;
23         my $wiki = shift;
24         my $cgi = $wiki->get_CGI;
25         
26         my $pagename = $cgi->param("page");
27         if($pagename eq ""){
28                 $pagename = $wiki->config("frontpage");
29         }
30         unless($wiki->can_show($pagename)){
31                 return $wiki->error(RC_FORBIDDEN, "»²¾È¸¢¸Â¤¬¤¢¤ê¤Þ¤»¤ó¡£");
32         }
33         my $gen = $cgi->param("generation");
34         my $source;
35         if($gen eq ''){
36                 $source = $wiki->get_page($pagename);
37         } else {
38                 $source = $wiki->get_backup($pagename,$gen);
39         }
40         my $format = $wiki->get_edit_format();
41         $source = $wiki->convert_from_fswiki($source,$format);
42         
43         if(&Util::handyphone()){
44                 print "Content-Type: text/plain;charset=Shift_JIS\n\n";
45                 &Jcode::convert(\$source,"sjis");
46         } else {
47                 print "Content-Type: text/plain;charset=EUC-JP\n";
48                 if($ENV{"HTTP_USER_AGENT"} =~ /MSIE/){
49                         print Util::make_content_disposition("source.txt", "attachment");
50                 } else {
51                         print "\n";
52                 }
53         }
54         print $source;
55         exit();
56 }
57
58 #==============================================================================
59 # ¥Ú¡¼¥¸É½¼¨»þ¤Î¥Õ¥Ã¥¯¥á¥½¥Ã¥É
60 # ¡Ö¥½¡¼¥¹¡×¥á¥Ë¥å¡¼¤òÍ­¸ú¤Ë¤·¤Þ¤¹
61 #==============================================================================
62 sub hook {
63         my $self = shift;
64         my $wiki = shift;
65         my $cgi  = $wiki->get_CGI;
66         
67         my $pagename = $cgi->param("page");
68         if($pagename eq ""){
69                 $pagename = $wiki->config("frontpage");
70         }
71         
72         $wiki->add_menu("¥½¡¼¥¹",$wiki->create_url({ action=>"SOURCE",page=>$pagename }));
73 }
74
75 1;