otwarchive-symphonyarchive/app/controllers/feedbacks_controller.rb

49 lines
1.5 KiB
Ruby
Raw Permalink Normal View History

2026-03-11 22:22:11 +00:00
class FeedbacksController < ApplicationController
skip_before_action :store_location
before_action :load_support_languages
def new
@admin_setting = AdminSetting.current
@feedback = Feedback.new
@feedback.referer = request.referer
if logged_in_as_admin?
@feedback.email = current_admin.email
elsif is_registered_user?
@feedback.email = current_user.email
@feedback.username = current_user.login
end
end
def create
@admin_setting = AdminSetting.current
@feedback = Feedback.new(feedback_params)
@feedback.rollout = @feedback.rollout_string
@feedback.user_agent = request.env["HTTP_USER_AGENT"]&.to(499)
@feedback.ip_address = request.remote_ip
@feedback.referer = nil unless @feedback.referer && ArchiveConfig.PERMITTED_HOSTS.include?(URI(@feedback.referer).host)
@feedback.site_skin = helpers.current_skin
if @feedback.save
@feedback.email_and_send
flash[:notice] = t("successfully_sent",
default: "Your message was sent to the Archive team - thank you!")
redirect_back_or_default(root_path)
else
flash[:error] = t("failure_send",
default: "Sorry, your message could not be saved - please try again!")
render action: "new"
end
end
private
def load_support_languages
@support_languages = Language.where(support_available: true).default_order
end
def feedback_params
params.require(:feedback).permit(
:comment, :email, :summary, :username, :language, :referer
)
end
end