###############################################################################
# 
# ソースを表示するプラグイン
# 
###############################################################################
package plugin::core::Source;
use strict;
#==============================================================================
# コンストラクタ
#==============================================================================
sub new {
	my $class = shift;
	my $self = {};
	return bless $self,$class;
}

#==============================================================================
# アクションの実行
#==============================================================================
sub do_action {
	my $self = shift;
	my $wiki = shift;
	my $cgi = $wiki->get_CGI;
	
	my $pagename = $cgi->param("page");
	if($pagename eq ""){
		$pagename = $wiki->config("frontpage");
	}
	unless($wiki->can_show($pagename)){
		return $wiki->error("参照権限がありません。");
	}
	my $gen = $cgi->param("generation");
	my $source;
	if($gen eq ''){
		$source = $wiki->get_page($pagename);
	} else {
		$source = $wiki->get_backup($pagename,$gen);
	}
	my $format = $wiki->get_edit_format();
	$source = $wiki->convert_from_fswiki($source,$format);
	
	if(&Util::handyphone()){
		print "Content-Type: text/plain;charset=Shift_JIS\n\n";
		&Jcode::convert(\$source,"sjis");
	} else {
		print "Content-Type: text/plain;charset=EUC-JP\n";
		if($ENV{"HTTP_USER_AGENT"} =~ /MSIE/){
			print Util::make_content_disposition("source.txt", "attachment");
		} else {
			print "\n";
		}
	}
	print $source;
	exit();
}

#==============================================================================
# ページ表示時のフックメソッド
# 「ソース」メニューを有効にします
#==============================================================================
sub hook {
	my $self = shift;
	my $wiki = shift;
	my $cgi  = $wiki->get_CGI;
	
	my $pagename = $cgi->param("page");
	if($pagename eq ""){
		$pagename = $wiki->config("frontpage");
	}
	
	$wiki->add_menu("ソース",$wiki->create_url({ action=>"SOURCE",page=>$pagename }));
}

1;