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

cardform/InitDataの変更点

  • 追加された行はこのように表示されます。
  • 削除された行はこのように表示されます。
!!!初期値を取得する先と優先順位
+cardform第3引数savepage
+basename/0
+form*プラグインの引数による指定

!!!処理のながれ
!!取得先の存在確認
*チェックするのはbasename,savepage,basename/0
*cardformでやる

!!初期値を取得するようにform*へ通知
*basenameと取得先ページ名を登録する→CardFuncBase->set_initpage(wiki,base,page)
*ページが登録されているかどうかで初期値を使用するか判断する→CardFuncBase->is_set_initpage()
*ラベル名で値を取得できるメソッドを設ける→CardFuncBase->get_initdata(wiki,label)
*状態のクリアはformendが行なう→CardFuncBase->unset_initpage()

!!値の取得
*各form*がそれぞれ取得し設定する
*値を取得するにはbasenameと取得先ページ名が必要→事前登録
*取得先ページを自由に指定できる機構に修正する→例外として実装
*使用ページの内容をキャッシュする→事前登録時->{basename}->{init}以下にキャッシュ
*値のキャッシュは負荷低減に寄与しない→値の受渡し方法が問題なのでキャッシュする

!!初期値への設定
*引数パース時、引数とし手渡す→引数は最初の値が有効とする

!!!変更点
!!CardForm
*CardFuncBaseの継承
*savepage,basename/0の存在確認
*上記存在時の登録→set_initpage(wiki,base,page)

!!CardFuncBase
!{cache}{ベース名}{regex}
*{cache}{ベース名}{0}からrename。

!{init}
*初期値取得関連キャッシュ変数%initへのリファレンス
:{init}{basename}:ベース名
:{init}{basecache}:ベースページ内容キャッシュ
:{init}{pagename}:初期値取得ページ名
:{init}{pagecache}:初期値取得ページ内容キャッシュ

!{cache}{ベース名}{init}
*ラベル名/ラベル値キャッシュデータのハッシュへのリファレンス

!set_initpage(wiki,base,init)
初期値取得ページ名の設定とキャッシュ
*base存在チェック
*base内容読み込み
*$init{basename}へページ名セット
*$init{basecache}へ内容セット
*page存在チェック
*page内容読み込み
*$init{pagename}へページ名セット
*$init{pagecache}へ内容セット
*{init} = \%init

!is_set_initpage()
*return define {init}

!get_initdata(wiki,label)
*if(define {init})...
*get_data(wiki,{init}{basename},"init",label)

!unset_initpage()
*{init}  = undef
*%init = ()

!do_regex_cache()
*basenameがキャッシュされているか確認→$self->{init}{basepage} eq $base
*basenameをキャッシュから取得する→{init}{basecache}

!do_page_cache()
*ページが設定されキャッシュされているか確認→$self->{init}{basepage} eq $base
*流れはは大きく変わらない
*ページ番号が"init"であった場合にページ内容の取得と結果の保存場所について特別処理する

!!Form*
*初期値設定確認→is_set_initpage()
*初期値取得→get_initdata(wiki,label)
*初期値を引数の先頭に追加(例外あり)→FormFuncBase修正

!!FormEnd
*unset_initpage()呼出

!!FormFuncBase
*CardFuncBaseの継承
*引数処理変更→同パラメータ存在時、引数先頭側を有効にする