1############################################################################### 2# 3# �ڡ������������⥸�塼�� 4# 5############################################################################### 6package plugin::admin::AdminPageHandler; 7use strict; 8#============================================================================== 9# ���ȥ饯�� 10#============================================================================== 11sub new { 12 my $class = shift; 13 my $self = {}; 14 15 # �ե��륿�������¸����ե����� 16 $self->{filter_file} = "filter.dat"; 17 18 return bless $self,$class; 19} 20 21#============================================================================== 22# ���������ϥ�ɥ��å� 23#============================================================================== 24sub do_action { 25 my $self = shift; 26 my $wiki = shift; 27 my $cgi = $wiki->get_CGI; 28 my $login = $wiki->get_login_info(); 29 30 if($cgi->param("freeze") ne ""){ 31 $self->freeze_page($wiki); 32 $self->reload($wiki); 33 34 } elsif($cgi->param("unfreeze") ne ""){ 35 $self->unfreeze_page($wiki); 36 $self->reload($wiki); 37 38 } elsif($cgi->param("delete") ne ""){ 39 $self->delete_page($wiki); 40 $self->reload($wiki); 41 42 } elsif($cgi->param("show_all") ne ""){ 43 $self->show_all($wiki); 44 $self->reload($wiki); 45 46 } elsif($cgi->param("show_user") ne ""){ 47 $self->show_user($wiki); 48 $self->reload($wiki); 49 50 } elsif($cgi->param("show_admin") ne ""){ 51 $self->show_admin($wiki); 52 $self->reload($wiki); 53 54 } 55 return $self->page_list($wiki); 56} 57 58#============================================================================== 59# �ڡ����κ�� 60#============================================================================== 61sub delete_page { 62 my $self = shift; 63 my $wiki = shift; 64 my @pages = $wiki->get_CGI->param("pages"); 65 foreach(@pages){ 66 $wiki->save_page($_,""); 67 } 68} 69 70#============================================================================== 71# �����˸��� 72#============================================================================== 73sub show_all { 74 my $self = shift; 75 my $wiki = shift; 76 my @pages = $wiki->get_CGI->param("pages"); 77 foreach(@pages){ 78 $wiki->set_page_level($_,0); 79 } 80} 81 82#============================================================================== 83# �桼���Τ��Ȳ�ǽ 84#============================================================================== 85sub show_user { 86 my $self = shift; 87 my $wiki = shift; 88 my @pages = $wiki->get_CGI->param("pages"); 89 foreach(@pages){ 90 $wiki->set_page_level($_,1); 91 } 92} 93 94#============================================================================== 95# �����ԤΤ��Ȳ�ǽ 96#============================================================================== 97sub show_admin { 98 my $self = shift; 99 my $wiki = shift; 100 my @pages = $wiki->get_CGI->param("pages"); 101 foreach(@pages){ 102 $wiki->set_page_level($_,2); 103 } 104} 105 106#============================================================================== 107# �ڡ�������� 108#============================================================================== 109sub freeze_page { 110 my $self = shift; 111 my $wiki = shift; 112 my @freeze_list = $wiki->get_freeze_list; 113 my @pages = $wiki->get_CGI->param("pages"); 114 foreach my $page (@pages){ 115 my $flag = 1; 116 foreach(@freeze_list){ 117 if($_ eq $page){ 118 $flag = 0; 119 last; 120 } 121 } 122 if($flag){ 123 $wiki->freeze_page($page); 124 } 125 } 126} 127 128#============================================================================== 129# �ڡ���������� 130#============================================================================== 131sub unfreeze_page { 132 my $self = shift; 133 my $wiki = shift; 134 my @freeze_list = $wiki->get_freeze_list; 135 my @pages = $wiki->get_CGI->param("pages"); 136 foreach my $page (@pages){ 137 my $flag = 0; 138 foreach(@freeze_list){ 139 if($_ eq $page){ 140 $flag = 1; 141 last; 142 } 143 } 144 if($flag){ 145 $wiki->un_freeze_page($page); 146 } 147 } 148} 149 150#============================================================================== 151# �ڡ������� 152#============================================================================== 153sub page_list { 154 my $self = shift; 155 my $wiki = shift; 156 my $cgi = $wiki->get_CGI(); 157 158 my @freeze_list = $wiki->get_freeze_list(); 159 my @pages = $wiki->get_page_list(); 160 my $level_list = $wiki->get_page_level(); 161 my $filter = $cgi->param("filter"); 162 my $filterType = $cgi->param("filterType"); 163 164 if($filterType ne "AND" && $filterType ne "OR" && $filterType ne "NOT"){ 165 $filterType = "AND"; 166 } 167 168 # �ե��륿����¸���ѥ����ǻ��ꤵ��Ƥ��ʤ�����ɤ߹��ߡ� 169 if(defined($filter)){ 170 &Util::save_config_text($wiki,$self->{filter_file},"$filterType:$filter"); 171 } else { 172 $filter = &Util::load_config_text($wiki,$self->{filter_file}); 173 my $index = index($filter,":"); 174 if($index > 0){ 175 $filterType = substr($filter,0,$index); 176 $filter = substr($filter,$index+1); 177 } 178 } 179 180 my $buf = "<h2>�ڡ�������</h2>\n". 181 "<form action=\"".$wiki->config('script_name')."\" method=\"POST\">\n". 182 " <p>\n". 183 " �ե��륿\n". 184 " <input type=\"text\" name=\"filter\" size=\"30\" value=\"".Util::escapeHTML($filter)."\">\n". 185 " <input type=\"radio\" name=\"filterType\" value=\"AND\"".($filterType eq "AND" ? " checked" : "").">AND\n". 186 " <input type=\"radio\" name=\"filterType\" value=\"OR\"".($filterType eq "OR" ? " checked" : "").">OR\n". 187 " <input type=\"radio\" name=\"filterType\" value=\"NOT\"".($filterType eq "NOT" ? " checked" : "").">NOT\n". 188 " <input type=\"submit\" value=\"��ɽ��\">\n". 189 " </p>\n". 190 " <table>\n". 191 " <tr>\n". 192 " <th><br></th>\n". 193 " <th>����</th>\n". 194 " <th>����</th>\n". 195 " <th width=\"200\">�ڡ���̾</th>\n". 196 " <th>�ǽ���������</th>\n". 197 " </tr>\n"; 198 199 foreach my $page (@pages){ 200 if($filter ne ""){ 201 my @dim = split(/\s+/,$filter); 202 my $flag = 0; 203 foreach my $word (split(/\s+/,$filter)){ 204 if(index($page,$word) >= 0){ 205 if($filterType eq "NOT"){ 206 $flag = 0; 207 last; 208 } 209 $flag = 1; 210 } else { 211 if($filterType eq "AND"){ 212 $flag = 0; 213 last; 214 } elsif($filterType eq "NOT"){ 215 $flag = 1; 216 } 217 } 218 } 219 if($flag==0){ 220 next; 221 } 222 } 223 $buf .= " <tr>\n". 224 " <td><input type=\"checkbox\" name=\"pages\" value=\"".&Util::escapeHTML($page)."\"></td>\n"; 225 226 # ��뤵��Ƥ��뤫Ĵ�٤� 227 my $is_freeze = 0; 228 foreach(@freeze_list){ 229 if($_ eq $page){ 230 $is_freeze = 1; 231 last; 232 } 233 } 234 if($is_freeze){ 235 $buf .= " <td align=\"center\">���</td>\n"; 236 } else { 237 $buf .= " <td><br></td>\n"; 238 } 239 240 # ���ȥ�٥��Ĵ�٤� 241 if(!defined($level_list->{$page}) || $level_list->{$page}==0){ 242 $buf .= " <td>����</td>\n"; 243 } elsif($level_list->{$page}==1){ 244 $buf .= " <td>�桼��</td>\n"; 245 } elsif($level_list->{$page}==2){ 246 $buf .= " <td>������</td>\n"; 247 } 248 249 $buf .= " <td><a href=\"".$wiki->config('script_name')."?page=".&Util::url_encode($page)."\">".&Util::escapeHTML($page)."</a></td>\n". 250 " <td>".&Util::format_date($wiki->get_last_modified($page))."</td>\n". 251 " </tr>\n"; 252 } 253 254 $buf .= " </table>\n". 255 " <br>\n". 256 " <input type=\"hidden\" name=\"action\" value=\"ADMINPAGE\">\n". 257 " <h3>�ڡ��������</h3>\n". 258 " <p>�����å������ڡ�������뤷�ޤ�����뤷���ڡ����ϥ�������Τ��Խ��Ȥʤ�ޤ���</p>\n". 259 " <input type=\"submit\" name=\"freeze\" value=\" �� �� \">\n". 260 " <input type=\"submit\" name=\"unfreeze\" value=\"�����\">\n". 261 " <h3>�ڡ����κ��</h3>\n". 262 " <p>�����å������ڡ����������ޤ���</p>\n". 263 " <input type=\"submit\" name=\"delete\" value=\" �� �� \">\n". 264 " <h3>���ȸ��¤�����</h3>\n". 265 " <p>�����å������ڡ����λ��ȸ��¤����ꤷ�ޤ���</p>\n". 266 " <input type=\"submit\" name=\"show_all\" value=\" �� �� \">\n". 267 " <input type=\"submit\" name=\"show_user\" value=\"�桼���Τ�\">\n". 268 " <input type=\"submit\" name=\"show_admin\" value=\"�����ԤΤ�\">\n". 269 "</form>\n"; 270 271 $wiki->set_title("�ڡ����δ���"); 272 return $buf."</ul>\n"; 273} 274 275#============================================================================== 276# �ڡ������������� 277#============================================================================== 278sub reload { 279 my $self = shift; 280 my $wiki = shift; 281 $wiki->redirectURL($wiki->config('script_name')."?action=ADMINPAGE"); 282} 283 2841; 285