###############################################################################
#
# 管理者ログイン時にページ編集画面に権限変更用のフォームを出力するプラグイン。
#
###############################################################################
package plugin::admin::PermissionForm;
use strict;

#==============================================================================
# コンストラクタ
#==============================================================================
sub new {
	my $class = shift;
	my $self = {};
	return bless $self,$class;
}

#==============================================================================
# 編集フォームを出力するメソッド
#==============================================================================
sub editform {
	my $self = shift;
	my $wiki = shift;
	my $cgi  = $wiki->get_CGI;
	my $page = $cgi->param("page");
	
	unless($wiki->page_exists($page)){
		return "";
	}
	my $login = $wiki->get_login_info();
	unless(defined($login)){
		return "";
	}
	if($login->{type}!=0){
		return "";
	}
	
	my $show_level = $wiki->get_page_level($page);
	
	my $buf = "<h2>ページの参照・更新権限</h2>\n";
	
	$buf .= "<form action=\"".$wiki->create_url()."\" method=\"POST\">\n";
	
	$buf .= "<input type=\"radio\" id=\"show_level_0\" name=\"show_level\" value=\"0\"";
	if($show_level==0){ $buf .= " checked"; }
	$buf .= "><label for=\"show_level_0\">全員に公開</label> ";
	$buf .= "<input type=\"radio\" id=\"show_level_1\" name=\"show_level\" value=\"1\"";
	if($show_level==1){ $buf .= " checked"; }
	$buf .= "><label for=\"show_level_1\">ユーザのみ</label> ";
	$buf .= "<input type=\"radio\" id=\"show_level_2\" name=\"show_level\" value=\"2\"";
	if($show_level==2){ $buf .= " checked"; }
	$buf .= "><label for=\"show_level_2\">管理者のみ</label> \n";
	
	$buf .= "<input type=\"submit\" name=\"change_show_level\" value=\"参照権限を変更\">\n";
	
	if($wiki->is_freeze($page)){
		$buf .= "<input type=\"submit\" name=\"unfreeze\" value=\"凍結を解除\">";
	} else {
		$buf .= "<input type=\"submit\" name=\"freeze\" value=\"ページを凍結\">";
	}
	$buf .= "<input type=\"hidden\" name=\"page\" value=\"".&Util::escapeHTML($page)."\">\n";
	$buf .= "<input type=\"hidden\" name=\"action\" value=\"CHANGE_PAGE_PERMISSION\">\n";
	$buf .= "</form>\n";
	
	return $buf;
}

#==============================================================================
# アクションハンドラメソッド
#==============================================================================
sub do_action {
	my $self = shift;
	my $wiki = shift;
	my $cgi  = $wiki->get_CGI;
	my $page = $cgi->param("page");
	
	if($cgi->param("change_show_level") ne ""){
		my $level = $cgi->param("show_level");
		$wiki->set_page_level($page,$level);
		
	} elsif($cgi->param("unfreeze") ne ""){
		$wiki->un_freeze_page($page);
		
	} elsif($cgi->param("freeze") ne ""){
		$wiki->freeze_page($page);
	}
	
	$wiki->redirect($page);
}

1;