1
0
mirror of https://github.com/projekteuler/projekteuler.git synced 2025-12-10 08:46:41 +01:00
projekteuler/app/controllers/translations_controller.rb

56 lines
1.5 KiB
Ruby

require "json"
class TranslationsController < ApplicationController
before_action :set_problem, only: [:new, :create]
before_action :set_accept, only: [:create]
# GET /translations/new
def new
file = File.open "app/controllers/problems.json"
problem_json = JSON.load file
@original_title = problem_json[@problem.id.to_s]["title"]
@original_problem = problem_json[@problem.id.to_s]["problem"]
@translation = @problem.translations.build
if @problem.is_translated?
@translation.title = @problem.translation.title
@translation.content = @problem.translation.content
end
end
# POST /translations
def create
@translation = @problem.translations.new(translation_params)
if user_signed_in?
@translation.author = current_user
end
if @translation.save
if @accept
@problem.set_translation(@translation)
redirect_to @problem, notice: t('translations.notice.successfully_created_and_accepted')
else
redirect_to @problem, notice: t('translations.notice.successfully_created')
end
else
render :new
end
end
private
# Never trust parameters from the scary internet, only allow the white list through.
def translation_params
params.require(:translation).permit(:title, :content)
end
def set_problem
@problem = Problem.find(params[:problem_id])
end
def set_accept
if user_signed_in? and current_user.admin?
@accept = params.fetch(:accept, false)
else
@accept = false
end
end
end