lib/plate/helpers/blogging_helper.rb in plate-0.7.0 vs lib/plate/helpers/blogging_helper.rb in plate-0.7.1

- old
+ new

@@ -4,11 +4,11 @@ # Various view helpers related to blogging. Tags, categories, archives and the like. module BloggingHelper # Returns a customized hash of post archives for the given category def category_archives(category) result = {} - + posts.archives.keys.each do |year| posts.archives[year].keys.each do |month| posts.archives[year][month].keys.each do |day| posts.archives[year][month][day].each do |post| if post.category == category @@ -19,89 +19,93 @@ end end end end end - + result end - + # Escape markup for use in XML or HTML def html_escape(text) ::CGI.escapeHTML(text) end alias_method :xml_escape, :html_escape - + + def month_name(year, month) + Date.new(year.to_i, month.to_i, 1).strftime('%B %Y') + end + # Grab the next blog post. # # Returns nil if this is the last post. def next_post return nil if post_index < 0 or post_index >= post_count @next_post ||= self.posts[post_index + 1] end - - # Grab the post previous to this one. + + # Grab the post previous to this one. # # Returns nil if this is the first post. def previous_post - return nil if post_index < 1 + return nil if post_index < 1 @previous_post ||= self.posts[post_index - 1] end - + # The total number blog posts def post_count @post_count ||= self.posts.length end - + # Returns a number of where this post is in all posts def post_index @post_index ||= self.posts.index(self.post) end - + # Find all posts for the given category def posts_for_category(category) self.posts.select { |p| p.category == category } end - + # Find all posts for the given year, month and optional category. def posts_for_month(year, month, category = nil) result = [] - + if months = self.posts.archives[year.to_s] if month = months[month.to_s] month.each_value do |day| result << day.select { |post| category == nil or post.category == category } end end end - + result.flatten end - + # Find all posts for the given year and optional category. def posts_for_year(year, category = nil) result = [] - + if months = self.posts.archives[year.to_s] months.each_value do |month| month.each_value do |day| result << day.select { |post| category == nil or post.category == category } end end end - + result.flatten end - + def years_for_category(category) result = [] - + self.posts.archives.keys.each do |year| if posts_for_year(year, category).size > 0 - result << year + result << year end end - + result.sort end end end \ No newline at end of file