OSDN Git Service

削除されたページを完全に削除できるようにした。
[fswiki/fswiki.git] / plugin / attach / AdminMIMEHandler.pm
1 ###############################################################################
2 #
3 # MIME¥¿¥¤¥×¤ÎÀßÄê¤ò¹Ô¤¦¥¢¥¯¥·¥ç¥ó¥Ï¥ó¥É¥é
4 #
5 ###############################################################################
6 package plugin::attach::AdminMIMEHandler;
7 use strict;
8 #==============================================================================
9 # ¥³¥ó¥¹¥È¥é¥¯¥¿
10 #==============================================================================
11 sub new {
12         my $class = shift;
13         my $self = {};
14         return bless $self,$class;
15 }
16
17 #==============================================================================
18 # ¥¢¥¯¥·¥ç¥ó¥Ï¥ó¥É¥é¥á¥½¥Ã¥É
19 #==============================================================================
20 sub do_action {
21         my $self  = shift;
22         my $wiki  = shift;
23         my $cgi   = $wiki->get_CGI;
24         
25         $wiki->set_title("MIME¥¿¥¤¥×¤ÎÀßÄê");
26         
27         if($cgi->param("ADD") ne ""){
28                 return $self->add($wiki);
29                 
30         } elsif($cgi->param("DELETE") ne ""){
31                 return $self->delete($wiki);
32                 
33         } else {
34                 return $self->form($wiki);
35         }
36 }
37
38 #==============================================================================
39 # °ìÍ÷²èÌÌ
40 #==============================================================================
41 sub form {
42         my $self = shift;
43         my $wiki = shift;
44         my $buf = "<h2>MIME¥¿¥¤¥×¤ÎÅÐÏ¿</h2>\n".
45                   "<form action=\"".$wiki->create_url()."\" method=\"POST\">\n".
46                   "  ³ÈÄ¥»Ò¡Ê¥É¥Ã¥È¤ÏÉÔÍסˠ<input type=\"text\" name=\"extention\" size=\"5\">\n".
47                   "  MIME¥¿¥¤¥× <input type=\"text\" name=\"mimetype\" size=\"20\">\n".
48                   "  <input type=\"submit\" name=\"ADD\" value=\"ÅÐÏ¿\">\n".
49                   "  <input type=\"hidden\" name=\"action\" value=\"ADMINMIME\">\n".
50                   "</form>\n".
51                   "<h2>ÅÐÏ¿ºÑ¤ÎMIME¥¿¥¤¥×</h2>\n".
52                   "<form action=\"".$wiki->create_url()."\" method=\"POST\">\n".
53                   "<table>\n".
54                   "<tr><th>&nbsp;</td><th>³ÈÄ¥»Ò</th><th>MIME¥¿¥¤¥×</th></tr>\n";
55         
56         my $mime = &Util::load_config_hash($wiki,$wiki->config('mime_file'));
57         
58         foreach my $key (sort(keys(%$mime))){
59                 $buf .= "<tr>\n".
60                         "  <td><input type=\"checkbox\" name=\"extention\" value=\"".&Util::escapeHTML($key)."\"></td>\n".
61                         "  <td>".&Util::escapeHTML($key)."</td>\n".
62                         "  <td>".&Util::escapeHTML($mime->{$key})."</td>\n".
63                         "</tr>\n";
64         }
65         $buf .= "</table>\n".
66                 "<input type=\"submit\" name=\"DELETE\" value=\"ÁªÂò¹àÌܤòºï½ü\">\n".
67                 "<input type=\"hidden\" name=\"action\" value=\"ADMINMIME\">\n".
68                 "</form>\n";
69         
70         return $buf;
71 }
72
73 #==============================================================================
74 # ÄɲÃ
75 #==============================================================================
76 sub add {
77         my $self = shift;
78         my $wiki = shift;
79         my $cgi  = $wiki->get_CGI();
80         
81         my $ext  = $cgi->param("extention");
82         my $mime = $cgi->param("mimetype");
83         
84         if($ext ne "" && $mime ne ""){
85                 my $hash = &Util::load_config_hash($wiki,$wiki->config('mime_file'));
86                 $hash->{$ext} = $mime;
87                 &Util::save_config_hash($wiki,$wiki->config('mime_file'),$hash);
88                 $wiki->redirectURL($wiki->create_url({ action=>"ADMINMIME"}) );
89                 #return $self->form($wiki);
90                 
91         } else {
92                 return $wiki->error("³ÈÄ¥»Ò¤ÈMIME¥¿¥¤¥×¤òÆþÎϤ·¤Æ¤¯¤À¤µ¤¤¡£");
93         }
94 }
95
96 #==============================================================================
97 # ºï½ü
98 #==============================================================================
99 sub delete {
100         my $self = shift;
101         my $wiki = shift;
102         my $cgi  = $wiki->get_CGI();
103         
104         my @ext_list = $cgi->param("extention");
105         my $hash     = &Util::load_config_hash($wiki,$wiki->config('mime_file'));
106         my $result   = {};
107         
108         foreach my $key (keys(%$hash)){
109                 my $flag = 0;
110                 foreach my $ext (@ext_list){
111                         if($ext eq $key){
112                                 $flag = 1;
113                                 last;
114                         }
115                 }
116                 if($flag==0){
117                         $result->{$key} = $hash->{$key};
118                 }
119         }
120         
121         &Util::save_config_hash($wiki,$wiki->config('mime_file'),$result);
122         $wiki->redirectURL($wiki->create_url({action=>"ADMINMIME"}) );
123         
124         #return $self->form($wiki);
125 }
126
127 1;