- 追加された行はこのように表示されます。
- 削除された行は
このように表示されます。
{{code Perl,8, 1
###############################################################################
# <p>CardForm用のformを挿入します。</p>
}}
[test|javascript:location.href='C:\home\tetsuya']
以下続くヘルプメッセージは省略
{{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引数がなければ空)を返す。