Create  Edit  Diff  FrontPage  Index  Search  Changes  RSS  Login

todays_word.rb

「今日のひとこと」を入力・表示(edit_procのデモ)

説明

tDiary 1.5.3.20030415からサポートされた新しいコールバック系プラグインedit_procのデモとして作りました。

このプラグインを入れると、日記更新フォーム内に「今日のひとこと」というテキスト入力エリアが加わります。日記更新のタイミングでここに何かひとことを入れておくと、todays_wordプラグインを使って日記の好きなところ(たいていはヘッダでしょう)に常に表示させておくことができます。

デモ用なので、

  • 日記を更新するタイミングでしか入力できません
  • 過去の「ひとこと」は保存しません。常に上書きします
  • 新しい「ひとこと」を入力しない限り、以前の「ひとこと」を消すことはできません

といった制限があります。

ソース

#
# todays_word.rb: 「今日のひとこと」を登録する(edit_procデモ用プラグイン)
#

#
# 日記更新フォームに「今日のひとこと」欄を追加する
#   * プレビューでも内容がちゃんと引き継がれるように考慮する
#   * フォームのアイテムには「plugin_プラグイン名」のようなname属性を付ける
#
add_edit_proc do |date|
   %Q[<p>今日のひとこと: <input name="plugin_todays_word" size="70" value="#{@cgi.params['plugin_todays_word'][0]}"></p>]
end

#
# 「追加」「登録」ボタンが押された時に内容を保存する
#    * ツッコミの時は動作しないようにチェックを忘れずに
#
add_update_proc do
   if /^(append|replace)$/ =~ @mode and @cgi.valid?( 'plugin_todays_word' ) then
      File::open( "#{@cache_path}/todays_word", "w" ) do |f|
         f.puts "#{@cgi.params['plugin_todays_word'][0]}(#{@date.strftime('%Y-%m-%d')})"
      end
   end
end

#
# 保存された「今日のひとこと」を表示する
#   * ヘッダ内に「<p>今日のひとこと: <%=todays_word%></p>」のように指定する
#
def todays_word
   word = ''
   begin
      File::open( "#{@cache_path}/todays_word" ) do |f|
         word = f.gets
      end
   rescue
   end
   word
end
Last modified:2006/05/09 23:27:46
Keyword(s):
References:[PluginList]