###############################################################################
#
# WikiFarmの削除を行うアクションハンドラ。
# WikiFarmの設定でFarm機能を使用する設定になっている場合のみ有効になります。
#
###############################################################################
package plugin::core::RemoveWikiHandler;
use strict;
#==============================================================================
# コンストラクタ
#==============================================================================
sub new {
	my $class = shift;
	my $self  = {};
	return bless $self,$class;
}
#==============================================================================
# アクションハンドラメソッド
#==============================================================================
sub do_action {
	my $self = shift;
	my $farm = shift;
	$farm->set_title("Wikiの削除");
	
	# 権限のチェック
	my $login  = $farm->get_login_info();
	my $config = &Util::load_config_hash($farm,$farm->config('farmconf_file'));
	if($config->{remove}==1){
		if(!defined($login)){
			return $farm->error("Wikiの削除は許可されていません。");
		}
	} elsif($config->{remove}==2){
		if(!defined($login) || $login->{type}!=0){
			return $farm->error("Wikiの削除は許可されていません。");
		}
	}
	
	# Wikiの存在チェック
	my $path = $farm->get_CGI()->param("path");
	unless($path =~ s|^/|| and $farm->wiki_exists($path)) {
		return $farm->error("Wikiが存在しません。");
	}
	
	if($farm->get_CGI()->param("exec_delete") ne ""){
		return $self->exec_remove($farm);
	} else {
		return $self->conf_remove($farm);
	}
}
#==============================================================================
# 削除確認
#==============================================================================
sub conf_remove {
	my $self = shift;
	my $farm = shift;
	my $path = $farm->get_CGI()->param("path");
	
	return "<p><a href=\"".$farm->config('script_name')."$path\">$path</a>を削除してよろしいですか?</p>".
	       "<form action=\"".$farm->create_url()."\" method=\"POST\">\n".
	       "  <input type=\"submit\" name=\"exec_delete\" value=\"削除\">\n".
	       "  <input type=\"hidden\" name=\"action\" value=\"REMOVE_WIKI\">\n".
	       "  <input type=\"hidden\" name=\"path\" value=\"".&Util::escapeHTML($path)."\">\n".
	       "</form>\n";
}
#==============================================================================
# 削除実行
#==============================================================================
sub exec_remove {
	my $self = shift;
	my $farm = shift;
	my $path = $farm->get_CGI()->param("path");
	
	$farm->remove_wiki($path);
	return "<p>".&Util::escapeHTML($path)."を削除しました。</p>";
}

1;