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は廃止してもいいか。
もう呆然、ただただ絶句…です。必ずまた戻って来ると信じていたのに…合掌。
todoやaの更新フォームへ飛ぶナビバーを表示するのにいいかなと思ってたんですが。一緒に更新するほど頻度高くないでしょうし。>edit_proc
それはnavi_adminの役割だと思いますよ
確かに。でもplugin増えるごとにnavi_adminの書き換えが必要だからprocで追加できる方が…と思ったのです。
上書きじゃなくてメニューを追加したいならこんな感じのコードでできます。
http://sodium.dnsalias.com/sodium/diary/20030421.html#p11