49 lines
1.5 KiB
Ruby
49 lines
1.5 KiB
Ruby
|
|
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
|