revert to previous /newest behavior, use new stuff for /recent

/recent is not yet linked to from anywhere
This commit is contained in:
joshua stein 2014-01-25 11:13:14 -06:00
parent 8dbc0e4724
commit df75c8f787
2 changed files with 21 additions and 9 deletions

View file

@ -1,11 +1,11 @@
class HomeController < ApplicationController class HomeController < ApplicationController
STORIES_PER_PAGE = 25 STORIES_PER_PAGE = 25
# how many points a story has to be bumped off the newest page # how many points a story has to have to probably get on the front page
HOT_STORY_POINTS = 5 HOT_STORY_POINTS = 5
# how many days old a story can be to get on the bottom half of /newest # how many days old a story can be to get on the bottom half of /recent
NEWEST_DAYS_OLD = 3 RECENT_DAYS_OLD = 3
# for rss feeds, load the user's tag filters if a token is passed # for rss feeds, load the user's tag filters if a token is passed
before_filter :find_user_from_rss_token, :only => [ :index, :newest ] before_filter :find_user_from_rss_token, :only => [ :index, :newest ]
@ -71,6 +71,16 @@ class HomeController < ApplicationController
render :action => "index" render :action => "index"
end end
def recent
@stories = find_stories({ :recent => true })
@heading = @title = "Recent Stories"
@cur_url = "/recent"
@recent = true
render :action => "index"
end
def tagged def tagged
@tag = Tag.where(:tag => params[:tag]).first! @tag = Tag.where(:tag => params[:tag]).first!
@ -123,8 +133,8 @@ private
stories, @show_more = _find_stories(how) stories, @show_more = _find_stories(how)
else else
stories, @show_more = Rails.cache.fetch("stories " << stories, @show_more = Rails.cache.fetch("stories " <<
"tag:#{how[:tag].try(:tag)} new:#{how[:newest]} page:#{@page.to_i} " << how.sort.map{|k,v| "#{k}=#{v.to_param}" }.join(" "),
"by:#{how[:by_user].try(:id)}", :expires_in => 45) do :expires_in => 45) do
_find_stories(how) _find_stories(how)
end end
end end
@ -163,7 +173,7 @@ private
stories = stories.where( stories = stories.where(
Story.arel_table[:id].in( Story.arel_table[:id].in(
Tagging.arel_table.where( Tagging.arel_table.where(
Tagging.arel_table[:tag_id].eq(tag.id) Tagging.arel_table[:tag_id].eq(how[:tag].id)
).project( ).project(
Tagging.arel_table[:story_id] Tagging.arel_table[:story_id]
) )
@ -183,13 +193,13 @@ private
) )
end end
if how[:newest] && @page == 1 if how[:recent] && @page == 1
# try to help recently-submitted stories that didn't gain traction # try to help recently-submitted stories that didn't gain traction
# grab the list of stories from the past n days, shifting out popular # grab the list of stories from the past n days, shifting out popular
# stories that did gain traction # stories that did gain traction
story_ids = stories.select(:id, :upvotes, :downvotes). story_ids = stories.select(:id, :upvotes, :downvotes).
where(Story.arel_table[:created_at].gt(NEWEST_DAYS_OLD.days.ago)). where(Story.arel_table[:created_at].gt(RECENT_DAYS_OLD.days.ago)).
order("stories.created_at DESC"). order("stories.created_at DESC").
reject{|s| s.score > HOT_STORY_POINTS } reject{|s| s.score > HOT_STORY_POINTS }
@ -215,7 +225,7 @@ private
).offset( ).offset(
(@page - 1) * STORIES_PER_PAGE (@page - 1) * STORIES_PER_PAGE
).order( ).order(
how[:newest] ? "stories.created_at DESC" : "hotness" (how[:newest] || how[:recent]) ? "stories.created_at DESC" : "hotness"
).to_a ).to_a
show_more = false show_more = false

View file

@ -12,6 +12,8 @@ Lobsters::Application.routes.draw do
get "/newest/page/:page" => "home#newest" get "/newest/page/:page" => "home#newest"
get "/newest/:user" => "home#newest_by_user" get "/newest/:user" => "home#newest_by_user"
get "/newest/:user/page/:page" => "home#newest_by_user" get "/newest/:user/page/:page" => "home#newest_by_user"
get "/recent" => "home#recent"
get "/recent/page/:page" => "home#recent"
get "/threads" => "comments#threads" get "/threads" => "comments#threads"
get "/threads/:user" => "comments#threads" get "/threads/:user" => "comments#threads"