ただのにっき
2003-04-20(日) [長年日記]
■ tDiary: form_procプラグイン
絵日記をどうにかプラグイン単体で動かすため、form_procを導入。これは、日記本文を書く更新フォームの下に、別のフォーム(別にフォームじゃなくてもいいけど)を追加するためのコールバック系プラグインである。
でもなー、なんか約束事が多すぎてきれいじゃないんだよなぁ。しょうがないか?
- submitボタンのname属性は「plugin」でなければならない
- 引数で与えられる日付を「YYYYMMDD」形式にしてdateというname属性を持ったアイテムに入れておくと、上の更新フォームと日付の同期がとれる
- その他のアイテムは、「plugin_プラグイン名_アイテム名」というname属性を持たせて他のプラグインとの名前空間を分ける
submit後は同じ画面に戻ってくるので、フォームの表示と、submitされたデータの処理は同じadd_form_proc内に書く。以下はファイルアップロードの実験用に書いた、指定されたローカルファイルの内容を表示する(意味なし)プラグイン。
add_form_proc do |date| begin text = @cgi.params['plugin_text_file'][0].read rescue NameError end <<-HTML <div class="form"> <div class="caption"> ファイル表示 </div> <form class="update" method="post" action="#{@conf.update}" enctype="multipart/form-data"><div> <input type="hidden" name="date" value="#{date.strftime( '%Y%m%d' )}"> テキストファイル: <input type="file" name="plugin_text_file"> <input type="submit" name="plugin" value="OK"> </div></form> <pre>#{text}</pre> </div> HTML end
いちおう先ほどCVS HEADにcommit。これで絵日記が実装できるなら、edit_procは廃止してもいいか。