トップ 新規 差分 一覧 ソース 検索 ヘルプ PDF RSS ログイン

plugin/CardForm/CardForm.pm

  1
2
###############################################################################
# <p>CardForm用のformを挿入します。</p>

以下続くヘルプメッセージは省略

282
283
284
285
286
287
###############################################################################
package plugin::cardform::CardForm;
use strict;
use vars qw(@ISA);
@ISA = qw(plugin::cardform::FormFuncBase);
use plugin::cardform::FormFuncBase;

お決まりの宣言とクラスの継承。

288
289
290
291
292
293
294
295
#==============================================================================
# エラーメッセージ生成オーバーライド
#==============================================================================
sub errmsg {
        my $self = shift;
        ref $self or unshift @_, $self;
        return Util::paragraph_error(shift,"WIKI");
}

インラインプラグインでHTML出力が基本のFormFuncBaseを継承するが、このクラスはパラグラフプラグインのWIKI出力であるのでエラーメッセージ生成メソッドを変更している。

296
297
298
299
300
301
302
303
304
#==============================================================================
# インラインメソッド
#==============================================================================
sub paragraph {
        my $self = shift;
        my $wiki = shift;
        my $formpage = shift;
        my $basename = shift;
        my $savepage = shift;

プラグインとして渡される3つの引数を取得している。

306
307
308
309
        # フォーム中なら何もかえさない。
        if($self->is_enable){
                return "";
        }

ネスト防止のため、フォーム中では無視する。

311
312
313
314
315
316
317
        # 第1引数のチェック
        if($formpage eq ""){
                return $self->errmsg("フォームページ名が指定されていません。");
        }
        unless($wiki->page_exists($formpage)){
                return $self->errmsg("フォームページが存在しません。");
        }

第1引数であるフォームページの指定は省略できず、ページが存在している必要がある。

318
319
320
321
        # 第2引数のチェック
        if($basename eq ""){
                $basename = $formpage;
        }

第2引数であるベース名は省略できる。省略された場合は代わりにフォームページ名をとなる。フォームページ名は先ほどのチェックで空でない事が保証されている。

322
323
324
325
326
327
328
329
330
        # 第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」が初期値のページとなる。

332
333
334
335
336
337
338
339
340
341
342
343
        return <<"_EOF_";
{{formstart}}{{formhidden action,CARDFORM}}{{formhidden basename,$basename}}$savepage
{{include $formpage}} 
{{formend}}
_EOF_
}

1;
}}
最後にフォームページをインクルードする前後にフォーム開始/終了プラグインと、
CardFormのハンドラに渡すためactionパラメータとbasenameパラメータ、
そして第3引数があった場合はセーブページ名をpageパラメータに渡すためformhiddenプラグインの記述に書き換えられた$savepage(第3引数がなければ空)を返す。

最終更新時間:2007年10月05日 23時22分55秒