{{code Perl,8, 1 ############################################################################### #

CardForm用のformを挿入します。

}} 以下続くヘルプメッセージは省略 {{code Perl,8,282 ############################################################################### package plugin::cardform::CardForm; use strict; use vars qw(@ISA); @ISA = qw(plugin::cardform::FormFuncBase); use plugin::cardform::FormFuncBase; }} お決まりの宣言とクラスの継承。 {{code Perl,8,288 #============================================================================== # エラーメッセージ生成オーバーライド #============================================================================== sub errmsg { my $self = shift; ref $self or unshift @_, $self; return Util::paragraph_error(shift,"WIKI"); } }} インラインプラグインでHTML出力が基本のFormFuncBaseを継承するが、 このクラスはパラグラフプラグインのWIKI出力であるので エラーメッセージ生成メソッドを変更している。 {{code Perl,8,296 #============================================================================== # インラインメソッド #============================================================================== sub paragraph { my $self = shift; my $wiki = shift; my $formpage = shift; my $basename = shift; my $savepage = shift; }} プラグインとして渡される3つの引数を取得している。 {{code Perl,8,306 # フォーム中なら何もかえさない。 if($self->is_enable){ return ""; } }} ネスト防止のため、フォーム中では無視する。 {{code Perl,8,311 # 第1引数のチェック if($formpage eq ""){ return $self->errmsg("フォームページ名が指定されていません。"); } unless($wiki->page_exists($formpage)){ return $self->errmsg("フォームページが存在しません。"); } }} 第1引数であるフォームページの指定は省略できず、ページが存在している必要がある。 {{code Perl,8,318 # 第2引数のチェック if($basename eq ""){ $basename = $formpage; } }} 第2引数であるベース名は省略できる。 省略された場合は代わりにフォームページ名をとなる。 フォームページ名は先ほどのチェックで空でない事が保証されている。 {{code Perl,8,322 # 第3引数のチェック if($savepage ne ""){ if($wiki->page_exists($savepage)){ $self->set_initpage($wiki,$basename,$savepage); } $savepage = "{{formhidden page,$savepage}}"; }elsif($wiki->page_exists("$basename/0")){ $self->set_initpage($wiki,$basename,"$basename/0"); } }} 第3引数であるセーブページ名は通常指定しない。 セーブページ名が指定された場合、そのページが存在すれば修正を意味するとして、 そのページから初期値をえる。そのページが存在しなければ新規保存となる。 セーブページ名が指定されていない場合は通常の様に「ベース名/数字」が保存先となり、 「ベース名/0」が初期値のページとなる。 {{code Perl,8,332 return <<"_EOF_"; {{formstart}}{{formhidden action,CARDFORM}}{{formhidden basename,$basename}}$savepage {{include $formpage}} {{formend}} _EOF_ } 1; }} 最後にフォームページをインクルードする前後にフォーム開始/終了プラグインと、 CardFormのハンドラに渡すためactionパラメータとbasenameパラメータ、 そして第3引数があった場合はセーブページ名をpageパラメータに渡すためformhiddenプラグインの記述に書き換えられた$savepage(第3引数がなければ空)を返す。