どういうわけだか 2005/200503.td2ファイルは存在してない。悲しい。
categoryキャッシュとamazonキャッシュから購入履歴だけは復元(できたと思う)。
要望リストから発見。自分も欲しい。古い日記もちょこちょこ修正するから。
appendとreplaceを捉まえて日付をファイルに記録していく方式になるだろうね。
↓tdiary.rb (Revision: 1.195.2.2。TDiaryLatestクラスだけ抜粋。変更点はそこだけ)
# # class TDiaryLatest # show latest mode view # class TDiaryLatest < TDiaryView def initialize( cgi, rhtml, conf ) super ym = latest_month #↓追加 if(@cgi.valid?('from') && @cgi.params['from'][0] =~ /(\d\d\d\d)(\d\d)(\d\d)/) date_from = Time::local($1.to_i, $2.to_i, $3.to_i) ym = [date_from.year, date_from.month] @date = nil else date_from = nil end #↑ unless @date then @date = ym ? Time::local( ym[0], ym[1] ) : Time::now @io.transaction( @date ) do |diaries| @diaries = diaries #↓追加 if(date_from) (date_from.day+1..31).each{|day| self.delete(Time::local(date_from.year, date_from.month, day)) } end #↑ @diary = @diaries[@diaries.keys.sort.reverse[0]] DIRTY_NONE end end if ym then y = ym[0].to_i m = ym[1].to_i oldest = oldest_month calc_diaries_size while ( oldest and @diaries_size < @conf.latest_limit ) date = if m == 1 then Time::local( y -= 1, m = 12 ) else Time::local( y, m -= 1 ) end break if date < Time::local( *oldest ) @io.transaction( date ) do |diaries| @diaries.update( diaries ) calc_diaries_size DIRTY_NONE end end #↓追加 date_to = date_from; latest(@conf.latest_limit) {|diary| date_to = diary.date; } if(date_to && date_from != date_to) if(date_to.day == 1) if(date_to.month == 1) date_to = Time::local(date_to.year-1, 12, 31); else date_to = Time::local(date_to.year, date_to.month-1, 31); end else date_to = Time::local(date_to.year, date_to.month, date_to.day-1); end @conf['date_to'] = date_to; end #↑ end end protected def calc_diaries_size @diaries_size = 0 @diaries.each_value do |diary| @diaries_size += 1 if diary.visible? end end def latest( limit = 5 ) idx = 0 @diaries.keys.sort.reverse_each do |date| break if idx >= limit diary = @diaries[date] next unless diary.visible? yield diary idx += 1 end end def cache_file( prefix ) #↓条件文追加 if(@cgi.valid?('from')) nil else "#{prefix}#{@rhtml.sub( /\.rhtml$/, '.rb' )}" end #↑ end end
↓misc/plugin/next_diaries.rb (EUCで保存後、選択して使用可能にする)
# next_diaries.rb # # <概要> 「最新」表示の時に「次の○日分」へのリンクを表示する。 # <条件> tdiary.rbのTDiaryLatestクラスに細工してあることが前提。 def next_diaries(label=nil) if(@mode == 'latest' && @conf['date_to']) %Q[<a href="#{@conf.index}?from=#{@conf['date_to'].strftime('%Y%m%d')}">#{(label || next_diaries_label)}</a>] else '' end end def next_diaries_label() "次の#{@conf.latest_limit}日分" end
MLを読んでたわけではないのにこのカブりよう。