Files
danbooru/app/controllers/bans_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

60 lines
1.2 KiB
Ruby

class BansController < ApplicationController
before_action :moderator_only, :except => [:show, :index]
respond_to :html, :xml, :json
helper_method :search_params
def new
@ban = Ban.new(ban_params(:create))
end
def edit
@ban = Ban.find(params[:id])
end
def index
@bans = Ban.paginated_search(params, count_pages: true)
respond_with(@bans) do |fmt|
fmt.html { @bans = @bans.includes(:user, :banner) }
end
end
def show
@ban = Ban.find(params[:id])
respond_with(@ban)
end
def create
@ban = Ban.create(ban_params(:create))
if @ban.errors.any?
render :action => "new"
else
redirect_to ban_path(@ban), :notice => "Ban created"
end
end
def update
@ban = Ban.find(params[:id])
if @ban.update(ban_params(:update))
redirect_to ban_path(@ban), :notice => "Ban updated"
else
render :action => "edit"
end
end
def destroy
@ban = Ban.find(params[:id])
@ban.destroy
redirect_to bans_path, :notice => "Ban destroyed"
end
private
def ban_params(context)
permitted_params = %i[reason duration expires_at]
permitted_params += %i[user_id user_name] if context == :create
params.fetch(:ban, {}).permit(permitted_params)
end
end