OSDN Git Service

BugTrack-wiki/353 : 番号付きリスト項目リストの組合せが正しく表示されない
[fswiki/fswiki.git] / plugin / attach / AdminMIMEHandler.pm
1 ###############################################################################
2 #
3 # MIME¥¿¥¤¥×¤ÎÀßÄê¤ò¹Ô¤¦¥¢¥¯¥·¥ç¥ó¥Ï¥ó¥É¥é
4 #
5 ###############################################################################
6 package plugin::attach::AdminMIMEHandler;
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         $wiki->set_title("MIME¥¿¥¤¥×¤ÎÀßÄê");
27         
28         if($cgi->param("ADD") ne ""){
29                 return $self->add($wiki);
30                 
31         } elsif($cgi->param("DELETE") ne ""){
32                 return $self->delete($wiki);
33                 
34         } else {
35                 return $self->form($wiki);
36         }
37 }
38
39 #==============================================================================
40 # °ìÍ÷²èÌÌ
41 #==============================================================================
42 sub form {
43         my $self = shift;
44         my $wiki = shift;
45         my $buf = "<h2>MIME¥¿¥¤¥×¤ÎÅÐÏ¿</h2>\n".
46                   "<form action=\"".$wiki->create_url()."\" method=\"POST\">\n".
47                   "  ³ÈÄ¥»Ò¡Ê¥É¥Ã¥È¤ÏÉÔÍסˠ<input type=\"text\" name=\"extention\" size=\"5\">\n".
48                   "  MIME¥¿¥¤¥× <input type=\"text\" name=\"mimetype\" size=\"20\">\n".
49                   "  <input type=\"submit\" name=\"ADD\" value=\"ÅÐÏ¿\">\n".
50                   "  <input type=\"hidden\" name=\"action\" value=\"ADMINMIME\">\n".
51                   "</form>\n".
52                   "<h2>ÅÐÏ¿ºÑ¤ÎMIME¥¿¥¤¥×</h2>\n".
53                   "<form action=\"".$wiki->create_url()."\" method=\"POST\">\n".
54                   "<table>\n".
55                   "<tr><th>&nbsp;</td><th>³ÈÄ¥»Ò</th><th>MIME¥¿¥¤¥×</th></tr>\n";
56         
57         my $mime = &Util::load_config_hash($wiki,$wiki->config('mime_file'));
58         
59         foreach my $key (sort(keys(%$mime))){
60                 $buf .= "<tr>\n".
61                         "  <td><input type=\"checkbox\" name=\"extention\" value=\"".&Util::escapeHTML($key)."\"></td>\n".
62                         "  <td>".&Util::escapeHTML($key)."</td>\n".
63                         "  <td>".&Util::escapeHTML($mime->{$key})."</td>\n".
64                         "</tr>\n";
65         }
66         $buf .= "</table>\n".
67                 "<input type=\"submit\" name=\"DELETE\" value=\"ÁªÂò¹àÌܤòºï½ü\">\n".
68                 "<input type=\"hidden\" name=\"action\" value=\"ADMINMIME\">\n".
69                 "</form>\n";
70         
71         return $buf;
72 }
73
74 #==============================================================================
75 # ÄɲÃ
76 #==============================================================================
77 sub add {
78         my $self = shift;
79         my $wiki = shift;
80         my $cgi  = $wiki->get_CGI();
81         
82         my $ext  = $cgi->param("extention");
83         my $mime = $cgi->param("mimetype");
84         
85         if($ext ne "" && $mime ne ""){
86                 my $hash = &Util::load_config_hash($wiki,$wiki->config('mime_file'));
87                 $hash->{$ext} = $mime;
88                 &Util::save_config_hash($wiki,$wiki->config('mime_file'),$hash);
89                 $wiki->redirectURL($wiki->create_url({ action=>"ADMINMIME"}) );
90                 #return $self->form($wiki);
91                 
92         } else {
93                 return $wiki->error(RC_BAD_REQUEST, "³ÈÄ¥»Ò¤ÈMIME¥¿¥¤¥×¤òÆþÎϤ·¤Æ¤¯¤À¤µ¤¤¡£");
94         }
95 }
96
97 #==============================================================================
98 # ºï½ü
99 #==============================================================================
100 sub delete {
101         my $self = shift;
102         my $wiki = shift;
103         my $cgi  = $wiki->get_CGI();
104         
105         my @ext_list = $cgi->param("extention");
106         my $hash     = &Util::load_config_hash($wiki,$wiki->config('mime_file'));
107         my $result   = {};
108         
109         foreach my $key (keys(%$hash)){
110                 my $flag = 0;
111                 foreach my $ext (@ext_list){
112                         if($ext eq $key){
113                                 $flag = 1;
114                                 last;
115                         }
116                 }
117                 if($flag==0){
118                         $result->{$key} = $hash->{$key};
119                 }
120         }
121         
122         &Util::save_config_hash($wiki,$wiki->config('mime_file'),$result);
123         $wiki->redirectURL($wiki->create_url({action=>"ADMINMIME"}) );
124         
125         #return $self->form($wiki);
126 }
127
128 1;