Merge pull request #3113 from evazion/fix-forum-stickies

Forum topics: don't list sticky topics first in json/atom responses.
This commit is contained in:
Albert Yi
2017-06-05 12:03:51 -07:00
committed by GitHub
3 changed files with 27 additions and 2 deletions

View File

@@ -19,8 +19,11 @@ class ForumTopicsController < ApplicationController
end
def index
params[:search] ||= {}
params[:search][:order] ||= "sticky" if request.format == Mime::HTML
@query = ForumTopic.active.search(params[:search])
@forum_topics = @query.order("is_sticky DESC, updated_at DESC").paginate(params[:page], :limit => per_page, :search_count => params[:search])
@forum_topics = @query.paginate(params[:page], :limit => per_page, :search_count => params[:search])
respond_with(@forum_topics) do |format|
format.html do

View File

@@ -68,9 +68,12 @@ class ForumTopic < ActiveRecord::Base
where("min_level <= ?", CurrentUser.level)
end
def sticky_first
order(is_sticky: :desc, updated_at: :desc)
end
def search(params)
q = permitted
return q if params.blank?
if params[:id].present?
q = q.where(id: params[:id].split(",").map(&:to_i))
@@ -92,6 +95,13 @@ class ForumTopic < ActiveRecord::Base
q = q.where("title = ?", params[:title])
end
case params[:order]
when "sticky"
q = q.sticky_first
else
q = q.order(updated_at: :desc)
end
q
end
end