Files
danbooru/app/controllers/user_feedbacks_controller.rb
evazion 6424a4de74 Do full page counts on small index pages.
Normally we skip doing page counts on index pages when there aren't any
search filters. This is on the assumption that most index pages have
more than 1000 pages (20,000 results), so it's not worth counting them
exactly. This isn't always true, so here we turn on full counts on
certain index pages known to be small.
2019-10-28 15:18:54 -05:00

65 lines
1.7 KiB
Ruby

class UserFeedbacksController < ApplicationController
before_action :gold_only, :only => [:new, :edit, :create, :update, :destroy]
before_action :check_no_feedback, only: [:new, :edit, :create, :update, :destroy]
respond_to :html, :xml, :json
def new
@user_feedback = UserFeedback.new(user_feedback_params(:create))
respond_with(@user_feedback)
end
def edit
@user_feedback = UserFeedback.visible.find(params[:id])
check_privilege(@user_feedback)
respond_with(@user_feedback)
end
def show
@user_feedback = UserFeedback.visible.find(params[:id])
respond_with(@user_feedback)
end
def index
@user_feedbacks = UserFeedback.visible.paginated_search(params, count_pages: true)
respond_with(@user_feedbacks)
end
def create
@user_feedback = UserFeedback.create(user_feedback_params(:create))
respond_with(@user_feedback)
end
def update
@user_feedback = UserFeedback.visible.find(params[:id])
check_privilege(@user_feedback)
@user_feedback.update(user_feedback_params(:update))
respond_with(@user_feedback)
end
def destroy
@user_feedback = UserFeedback.visible.find(params[:id])
check_privilege(@user_feedback)
@user_feedback.destroy
respond_with(@user_feedback)
end
private
def check_privilege(user_feedback)
raise User::PrivilegeError unless user_feedback.editable_by?(CurrentUser.user)
end
def check_no_feedback
if CurrentUser.no_feedback?
raise User::PrivilegeError
end
end
def user_feedback_params(context)
permitted_params = %i[body category]
permitted_params += %i[user_id user_name] if context == :create
params.fetch(:user_feedback, {}).permit(permitted_params)
end
end