2016-07-23 21:17:24 +02:00
|
|
|
module ArchiveHelper
|
|
|
|
def academic_years
|
2017-09-30 17:42:52 +02:00
|
|
|
# Set.to_a to prevent duplicates
|
|
|
|
Set.new(items
|
|
|
|
.find_all('/blog/*/*')
|
2020-10-12 19:40:15 +02:00
|
|
|
.map { |i| i.identifier.to_s.split('/')[-2] })
|
|
|
|
.to_a
|
2017-09-30 17:42:52 +02:00
|
|
|
.sort
|
2019-08-17 15:09:27 +02:00
|
|
|
.push(@config[:academic_year])
|
|
|
|
.uniq
|
2016-07-23 21:17:24 +02:00
|
|
|
end
|
|
|
|
|
2017-06-07 10:23:02 +02:00
|
|
|
def academic_years_blog_items
|
2017-02-09 02:31:56 +01:00
|
|
|
academic_years.reverse.map { |y| [y, items["/blog/#{y}.html"]] }
|
2016-07-23 21:17:24 +02:00
|
|
|
end
|
|
|
|
|
2020-10-12 19:40:15 +02:00
|
|
|
def tag_blog_items
|
2020-10-13 12:01:47 +02:00
|
|
|
Set.new(items
|
|
|
|
.find_all('/blog/*/*')
|
|
|
|
.flat_map { |i| i[:tags] || [] })
|
|
|
|
.to_a
|
|
|
|
.sort
|
|
|
|
.uniq.map { |y| [y, items["/blog/#{y.gsub(' ', '_')}.html"]]}
|
2020-10-12 19:40:15 +02:00
|
|
|
end
|
|
|
|
|
2016-07-23 22:06:06 +02:00
|
|
|
def pretty_year(year)
|
2017-02-09 02:31:56 +01:00
|
|
|
year = year.scan(/\d\d/)
|
|
|
|
"'#{year[0]} - '#{year[1]}"
|
2016-07-23 22:06:06 +02:00
|
|
|
end
|
|
|
|
|
2017-02-09 02:31:56 +01:00
|
|
|
def posts_in_year(y)
|
|
|
|
items.find_all("/blog/#{y}/*").sort_by { |x| x[:created_at] }.reverse
|
2016-07-23 21:17:24 +02:00
|
|
|
end
|
2020-10-12 19:40:15 +02:00
|
|
|
|
|
|
|
def posts_with_tag(tag)
|
|
|
|
items
|
|
|
|
.find_all('/blog/*/*')
|
|
|
|
.filter{|i| (i[:tags] || []).include? tag }
|
|
|
|
end
|
|
|
|
|
|
|
|
def posts_in_year_or_with_tag(item)
|
|
|
|
if item[:is_yearly]
|
|
|
|
posts_in_year(item[:academic_year])
|
|
|
|
else
|
|
|
|
posts_with_tag(item[:tag])
|
|
|
|
end
|
|
|
|
end
|
2016-07-23 21:17:24 +02:00
|
|
|
end
|