############################################################################### # # ページを管理するモジュール # ############################################################################### package plugin::admin::AdminPageHandler; use strict; #============================================================================== # コンストラクタ #============================================================================== sub new { my $class = shift; my $self = {}; # フィルタ情報を保存するファイル $self->{filter_file} = "filter.dat"; return bless $self,$class; } #============================================================================== # アクションハンドラメソッド #============================================================================== sub do_action { my $self = shift; my $wiki = shift; my $cgi = $wiki->get_CGI; my $login = $wiki->get_login_info(); if($cgi->param("freeze") ne ""){ $self->freeze_page($wiki); $self->reload($wiki); } elsif($cgi->param("unfreeze") ne ""){ $self->unfreeze_page($wiki); $self->reload($wiki); } elsif($cgi->param("delete") ne ""){ $self->delete_page($wiki); $self->reload($wiki); } elsif($cgi->param("show_all") ne ""){ $self->show_all($wiki); $self->reload($wiki); } elsif($cgi->param("show_user") ne ""){ $self->show_user($wiki); $self->reload($wiki); } elsif($cgi->param("show_admin") ne ""){ $self->show_admin($wiki); $self->reload($wiki); } return $self->page_list($wiki); } #============================================================================== # ページの削除 #============================================================================== sub delete_page { my $self = shift; my $wiki = shift; my @pages = $wiki->get_CGI->param("pages"); foreach(@pages){ $wiki->save_page($_,""); } } #============================================================================== # 全員に公開 #============================================================================== sub show_all { my $self = shift; my $wiki = shift; my @pages = $wiki->get_CGI->param("pages"); foreach(@pages){ $wiki->set_page_level($_,0); } } #============================================================================== # ユーザのみ参照可能 #============================================================================== sub show_user { my $self = shift; my $wiki = shift; my @pages = $wiki->get_CGI->param("pages"); foreach(@pages){ $wiki->set_page_level($_,1); } } #============================================================================== # 管理者のみ参照可能 #============================================================================== sub show_admin { my $self = shift; my $wiki = shift; my @pages = $wiki->get_CGI->param("pages"); foreach(@pages){ $wiki->set_page_level($_,2); } } #============================================================================== # ページの凍結 #============================================================================== sub freeze_page { my $self = shift; my $wiki = shift; my @freeze_list = $wiki->get_freeze_list; my @pages = $wiki->get_CGI->param("pages"); foreach my $page (@pages){ my $flag = 1; foreach(@freeze_list){ if($_ eq $page){ $flag = 0; last; } } if($flag){ $wiki->freeze_page($page); } } } #============================================================================== # ページの凍結解除 #============================================================================== sub unfreeze_page { my $self = shift; my $wiki = shift; my @freeze_list = $wiki->get_freeze_list; my @pages = $wiki->get_CGI->param("pages"); foreach my $page (@pages){ my $flag = 0; foreach(@freeze_list){ if($_ eq $page){ $flag = 1; last; } } if($flag){ $wiki->un_freeze_page($page); } } } #============================================================================== # ページ一覧 #============================================================================== sub page_list { my $self = shift; my $wiki = shift; my $cgi = $wiki->get_CGI(); my @freeze_list = $wiki->get_freeze_list(); my @pages = $wiki->get_page_list(); my $level_list = $wiki->get_page_level(); my $filter = $cgi->param("filter"); my $filterType = $cgi->param("filterType"); if($filterType ne "AND" && $filterType ne "OR" && $filterType ne "NOT"){ $filterType = "AND"; } # フィルタを保存。パラメータで指定されていなければ読み込み。 if(defined($filter)){ &Util::save_config_text($wiki,$self->{filter_file},"$filterType:$filter"); } else { $filter = &Util::load_config_text($wiki,$self->{filter_file}); my $index = index($filter,":"); if($index > 0){ $filterType = substr($filter,0,$index); $filter = substr($filter,$index+1); } } my $buf = "