###############################################################################
#
# プラグインの設定を行うアクションハンドラ
#
###############################################################################
package plugin::admin::AdminPluginHandler;
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;
$wiki->set_title("プラグイン設定");
if($cgi->param("SAVE") ne ""){
return $self->save_plugin_config($wiki);
} else {
return $self->plugin_config_form($wiki);
}
}
sub plugin_config_form {
my $self = shift;
my $wiki = shift;
my $cgi = $wiki->get_CGI;
my @plugins = split(/\n/,&Util::load_config_text($wiki,$wiki->config('plugin_file')));
my $buf = "
プラグインの設定
\n".
"\n";
return $buf;
}
#==============================================================================
# 設定を保存
#==============================================================================
sub save_plugin_config {
my $self = shift;
my $wiki = shift;
my $cgi = $wiki->get_CGI;
my @plugins = $cgi->param("plugin");
&Util::save_config_text($wiki,$wiki->config('plugin_file'),join("\n",@plugins));
return $wiki->redirectURL($wiki->config('script_name')."?action=ADMINPLUGIN");
#return "設定を保存しました。";
}
#==============================================================================
# プラグインの一覧を取得する関数
#==============================================================================
sub list_plugins {
my $self = shift;
my $wiki = shift;
my @list;
opendir(DIR,$wiki->config('plugin_dir')."/plugin") or die $!;
while(my $entry = readdir(DIR)){
my $path = $wiki->config('plugin_dir')."/plugin/$entry";
if(-d $path && $entry ne "." && $entry ne ".."){
if(-e "$path/Install.pm"){
push(@list,$entry);
}
}
}
closedir(DIR);
@list = sort(@list);
return @list;
}
#==============================================================================
# Install.pmのコメントを取得
#==============================================================================
sub get_decription {
my $self = shift;
my $wiki = shift;
my $plugin = shift;
open(DATA,$wiki->config('plugin_dir')."/plugin/$plugin/Install.pm") or return "
";
my $flag = 0;
my $comment = "";
while(){
if(!/^#/ || /^##/){
if($flag==0){ next; } else { last; }
}
$flag = 1;
s/\#+//;
s/\=+//;
s/^\s+//; s/\s+$//;
if($_ ne ""){
$comment .= $_."\n";
}
}
close(DATA);
return $comment;
}
1;