mirror of
https://github.com/samsonjs/samhuri.net.git
synced 2026-03-25 09:05:47 +00:00
66 lines
1.4 KiB
Ruby
66 lines
1.4 KiB
Ruby
require "phlex"
|
|
|
|
module Pressa
|
|
module Views
|
|
class YearPostsView < Phlex::HTML
|
|
def initialize(year:, year_posts:, site:)
|
|
@year = year
|
|
@year_posts = year_posts
|
|
@site = site
|
|
end
|
|
|
|
def view_template
|
|
div(class: "container") do
|
|
h2(class: "year") do
|
|
a(href: year_path) { @year.to_s }
|
|
end
|
|
|
|
@year_posts.sorted_months.each do |month_posts|
|
|
render_month(month_posts)
|
|
end
|
|
end
|
|
end
|
|
|
|
private
|
|
|
|
def year_path
|
|
@site.url_for("/posts/#{@year}/")
|
|
end
|
|
|
|
def render_month(month_posts)
|
|
month = month_posts.month
|
|
|
|
h3(class: "month") do
|
|
a(href: @site.url_for("/posts/#{@year}/#{month.padded}/")) do
|
|
month.name
|
|
end
|
|
end
|
|
|
|
ul(class: "archive") do
|
|
month_posts.sorted_posts.each do |post|
|
|
render_post_item(post)
|
|
end
|
|
end
|
|
end
|
|
|
|
def render_post_item(post)
|
|
if post.link_post?
|
|
li do
|
|
a(href: post.link) { "→ #{post.title}" }
|
|
time { short_date(post.date) }
|
|
a(class: "permalink", href: post.path) { "∞" }
|
|
end
|
|
else
|
|
li do
|
|
a(href: post.path) { post.title }
|
|
time { short_date(post.date) }
|
|
end
|
|
end
|
|
end
|
|
|
|
def short_date(date)
|
|
date.strftime("%-d %b")
|
|
end
|
|
end
|
|
end
|
|
end
|