phonondrive

2004.01.19

+ tDiary :: category.rb を複数年表示に対応させる

カテゴリ別表示のアドレス欄に「year=ALL」 と入れてみて、tDiary の吐くエラーにやっぱりダメかと思った人も多いのではないでしょうか。そんな誰もが一度は通る道を、少しばかり進んでみました。手を入れるのは、tdiary.rb, index.rb, category.rhtml の三つのファイル。

※ 日記ログが大きいとサーバーにかなりの負荷がかかってしまいます。正式に実装されるのを待った方が良いようです。

まずは tdiary.rb。新しく class TDiaryCategoryAllYear を追加します。1580行目辺りの TDiaryCategoryYear を雛形として使うので、20行ばかり丸ごとコピーして 1600行目辺りにペースト。追加するコードは次の太字で示した5箇所。

#
# class TDiaryCategoryAllYear
# show category by all year
#
class TDiaryCategoryAllYear < TDiaryCategoryView
 def initialize(cgi, rhtml, conf)
  super
  calendar
  @years.keys.sort.each do |@year|
   @date = Time::local(@year, 1, 1)
   @years[@year.to_s].each do |m|
    @date = Time::local(@year, m, 1)
    @io.transaction(@date) do |diaries|
     @diaries = diaries
     DIRTY_NONE
    end
    categorize
   end
  end
 end
end

次は、index.rb。42行目からの if ブロックを変更。追加するコードは次の太字で示した5箇所。

if @cgi.valid?( 'month' ) && @cgi.params['year'][0] != 'ALL'
 if @cgi.params['month'][0] == 'ALL'
  tdiary = TDiary::TDiaryCategoryYear::new(@cgi, "category.rhtml", conf )
 else
  tdiary = TDiary::TDiaryCategoryMonth::new(@cgi, "category.rhtml", conf )
 end
elsif @cgi.valid?( 'year' )
 if @cgi.params['year'][0] == 'ALL'
  tdiary = TDiary::TDiaryCategoryAllYear::new(@cgi, "category.rhtml", conf )
 else

  tdiary = TDiary::TDiaryCategoryYear::new(@cgi, "category.rhtml", conf )
 end
else
 tdiary = TDiary::TDiaryCategoryLatest::new(@cgi, "category.rhtml", conf )
end

最後は category.rhtml。13行目からの when /year/ ブロック内を変更。追加するコードは次の太字で示した5箇所。

when /year/
 if @cgi.params['year'][0] == 'ALL'
  label = %Q|category_title_year('ALL')|
  param = ["year=ALL"]
 else

  label = %Q|category_title_year(#{@year})|
  param = ["year=#{@year}"]
 end

ひとまずこんな所で。とりあえず、こんな感じ のことが出来ます。year=ALL 指定時は、month オプションは無視されます。

ちなみに私は、理由はよくわからないけど動けばOKな人なので、予めご了承下さい。tDiary の仕組みや、Ruby の文法は未修得だったりします。tdiary.rb や index.rb をいじることになるので、もし試される方がいらっしゃいましたら自己責任でお願します。

+ tDiary :: カテゴリ表示の昇順・降順

Ruby はさっぱりなので、Ruby リファレンスマニュアル - Arrayの項 を見ていたら、カテゴリ表示の昇順・降順を変えられそうなことに気がつきました。category.rhtml の 32行目をちょっと変更するだけ。

@categorized[c].sort.reverse.each do |date, idx, s|

引数で昇順・降順を切替出来るようにすると便利かもなぁ。問題は昇順と降順の定義を本人が把握してないことだ。

+ tDiary :: キャッシュ制御

tdiary.rb や index.rb まわりで色々実験するには、やはり tDiary のキャッシュを無効にしてないと更新がすぐに反映されないようです。幸い、先日の きたさんの日記 (2004.1.15) にて、キャッシュを無効にする方法が公開されていたので非常に助かりました。

+ tDiary :: Ruby :: ローカル鯖構築

さすがに XREA鯖上で実験するのはまずかろうと思い、今回はローカル (WinXP) に AnHttpd 1.4.2k + Ruby 1.8.1 + tDiary 1.5.5 をインストールしてみましたが、恐ろしいほど簡単に動いてビックリ。XREA鯖上にインストールしたときは小一時間程かかって大変だったのになぁ。まぁ、あれも結局はキャッシュにやられたんですけど。これを機に、ちょっと Ruby でも遊んでみようかな。

本日のツッコミ (3件) [ ツッコミを入れる ]
+ mi6 (2005.08.08 09:21)

internet advertising

+ mamba (2005.08.08 09:25)

business cards http:

+ bunda (2005.08.08 09:28)

loan calculator http

お名前:
空欄:
コメント:

最新 | TOP に戻る

· affiliates
Ads by Google AdSense Associated with Amazon.co.jp Powered by Amagle AltADs Affiliated by VALUE DOMAIN
· hosting servers
XREA ismusic networks

Subscribe with livedoor Reader



FRUITS CLiPPER, capsule SSugarless GiRL, capsule THE IDOLM@STER MASTER ARTIST 07 三浦あずさ NEXUS-2060, capsule