トップ 新規 一覧 検索 ヘルプ RSS ログイン

plugin/CardForm/CardForm.pmの変更点

  • 追加された行はこのように表示されます。
  • 削除された行はこのように表示されます。
{{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引数がなければ空)を返す。