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

cardform/InitData

初期値を取得する先と優先順位

  1. cardform第3引数savepage
  2. basename/0
  3. 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

  • 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の継承
  • 引数処理変更→同パラメータ存在時、引数先頭側を有効にする

最終更新時間:2005年07月03日 20時48分24秒