53 lines
1.3 KiB
Ruby
53 lines
1.3 KiB
Ruby
class LanguagesController < ApplicationController
|
|
def index
|
|
@languages = Language.default_order
|
|
@works_counts = Rails.cache.fetch("/v1/languages/work_counts/#{current_user.present?}", expires_in: 1.day) do
|
|
WorkQuery.new.works_per_language(@languages.count)
|
|
end
|
|
end
|
|
|
|
def new
|
|
@language = Language.new
|
|
authorize @language
|
|
end
|
|
|
|
def create
|
|
@language = Language.new(language_params)
|
|
authorize @language
|
|
if @language.save
|
|
flash[:notice] = t("languages.successfully_added")
|
|
redirect_to languages_path
|
|
else
|
|
render action: "new"
|
|
end
|
|
end
|
|
|
|
def edit
|
|
@language = Language.find_by(short: params[:id])
|
|
authorize @language
|
|
return unless @language == Language.default
|
|
|
|
flash[:error] = t("languages.cannot_edit_default")
|
|
redirect_to languages_path
|
|
end
|
|
|
|
def update
|
|
@language = Language.find_by(short: params[:id])
|
|
authorize @language
|
|
|
|
if @language.update(permitted_attributes(@language))
|
|
flash[:notice] = t("languages.successfully_updated")
|
|
redirect_to languages_path
|
|
else
|
|
render action: "new"
|
|
end
|
|
end
|
|
|
|
private
|
|
|
|
def language_params
|
|
params.require(:language).permit(
|
|
:name, :short, :support_available, :abuse_support_available, :sortable_name
|
|
)
|
|
end
|
|
end
|