トップ 最新

ただのにっき

2003-04-20(日) [長年日記]

加藤大治郎、死去

まさにこれからという若い才能が、よりによって改修したばかりの鈴鹿サーキットで死ぬなんて、やりきれない。

Daijiro.net

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は廃止してもいいか。