module BlogHelper
# header on "parent" entries: don't duplicate the first entry
def parent_header
if @entries.length==0 or
@parent.updated.to_date != @entries[0].updated.to_date
"
#{ @parent.updated.strftime '%a, %d %b %Y' }
"
end
end
# header on "normal" entries: don't repeat
def entry_header entry
if entry.updated.to_date != @last_date
@last_date = entry.updated.to_date
"#{ entry.updated.strftime '%a, %d %b %Y' }
"
end
end
# entry titles: don't repeat the parent's title
def entry_title entry, parent=nil
if entry.title and entry.title != ""
if not parent or parent.title != entry.title
"#{ entry.title }
"
end
end
end
# signature lines: method of post and author related info
def sigline entry
if (author = entry.author) != nil
sig = case entry['method']
when 'trackback': 'Trackback from '
when 'excerpt': 'Excerpt from '
else 'Posted by '
end
if author.uri
sig << link_to(author.name, author.uri, :title=>author.ipaddr)
elsif author.ipaddr
sig << "#{author.name}"
else
sig << author.name
end
else
sig = "Posted"
end
sig << " at "
sig << link_to(entry.updated.strftime('%H:%M'), entry.by_date)
if not entry.parent
sig << " | Comments (#{entry.children.size})"
end
return '' + sig + '
'
end
# calendar for a month: used by archive pages
def monthcalendar(year,month)
require 'date'
date = Date.new(year,month,1)
rows = []
while date.month == month
rows << [0]*7 if rows.length==0 or date.wday==0
rows[-1][date.wday] = date.day
date = date.succ
end
return rows
end
end