otwarchive-symphonyarchive/app/controllers/languages_controller.rb
2026-03-11 22:22:11 +00:00

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