diff --git a/layouts/article_archive.erb b/layouts/article_archive.erb index 0d74f994..53895c39 100644 --- a/layouts/article_archive.erb +++ b/layouts/article_archive.erb @@ -1,7 +1,7 @@ <%= render 'pager', :linkprev => @linkprev, :linknext => @linknext %>
- <% @item[:archiveitems].each do |item| %> + <% (@item[:futureitems] + @item[:pastitems]).each do |item| %>
<%= render 'item_intro', :item => item, :extended => true %>

diff --git a/layouts/event_archive.erb b/layouts/event_archive.erb index 3cf33293..8cfd188a 100644 --- a/layouts/event_archive.erb +++ b/layouts/event_archive.erb @@ -1,6 +1,6 @@ <%= render 'pager', :linkprev => @linkprev, :linknext => @linknext %>

- <% @item[:archiveitems].each do |item| %> + <% (@item[:futureitems] + @item[:pastitems]).each do |item| %>
<%= render 'event_header', :item => item, :heading => true, :link => true %> diff --git a/lib/yearlyarchive.rb b/lib/yearlyarchive.rb index 6a321ba6..2e6cf861 100644 --- a/lib/yearlyarchive.rb +++ b/lib/yearlyarchive.rb @@ -1,7 +1,8 @@ require 'ostruct' def generate_yearly_archive(articles, date_attribute, basepath, title, templatename = 'article_archive', attributes = {}) - currentyear = Time.now.year + today = Time.now + currentyear = today.year yearmap = articles.group_by { |item| item[date_attribute].year } if !yearmap.has_key?(currentyear) yearmap[currentyear] = [] @@ -10,6 +11,7 @@ def generate_yearly_archive(articles, date_attribute, basepath, title, templaten yearlist.each_index { |i| year = yearlist[i] yearmap[year].sort! { |a,b| b[date_attribute] <=> a[date_attribute] } + pastfuture = yearmap[year].partition { |a| a[date_attribute].to_datetime > today.to_datetime } linkprev = if (i>0) ", :linkprev => OpenStruct.new(:title => '#{yearlist[i-1]}', :link => '#{basepath}/#{yearlist[i-1]}/')" else @@ -22,7 +24,7 @@ def generate_yearly_archive(articles, date_attribute, basepath, title, templaten end @items << Nanoc::Item.new( "<%= render '#{templatename}' #{linkprev} #{linknext} %>", - attributes.merge({ :title => "#{title} #{year}", :kind => "page", :archiveitems => yearmap[year] }), + attributes.merge({ :title => "#{title} #{year}", :kind => "page", :futureitems => pastfuture[0], :pastitems => pastfuture[1] }), "#{basepath}/#{year}/") } end