From 0f43c8c270ce9d60026f5c46321a25e559048b89 Mon Sep 17 00:00:00 2001 From: zimmp <121883156+zimmp@users.noreply.github.com> Date: Thu, 18 Jan 2024 14:04:38 +0100 Subject: [PATCH] feedback mailer config --- app/controllers/feedbacks_controller.rb | 68 ++++++++++--------- app/mailers/feedbacks_mailer.rb | 21 +++++- ...y_ub.text.erb => default_ub_mail.text.erb} | 0 ...er.text.erb => default_user_mail.text.erb} | 0 app/views/searches/_record.html.slim | 2 +- 5 files changed, 56 insertions(+), 35 deletions(-) rename app/views/feedbacks_mailer/{notify_ub.text.erb => default_ub_mail.text.erb} (100%) rename app/views/feedbacks_mailer/{notify_user.text.erb => default_user_mail.text.erb} (100%) diff --git a/app/controllers/feedbacks_controller.rb b/app/controllers/feedbacks_controller.rb index 6746b2da..5e189a7f 100644 --- a/app/controllers/feedbacks_controller.rb +++ b/app/controllers/feedbacks_controller.rb @@ -1,49 +1,55 @@ class FeedbacksController < ApplicationController + ENABLED = Config[:feedback, :enabled, default: false] + def new - @feedback = Feedback.new + if ENABLED + @feedback = Feedback.new - if params[:record_id] && params[:record_scope] - record = SearchEngine[params[:record_scope]].get_record(params[:record_id]) + if params[:record_id] && params[:record_scope] + record = SearchEngine[params[:record_scope]].get_record(params[:record_id]) - @feedback.record_scope = params[:record_scope] - @feedback.record_id = record.id - @feedback.record_title = record.title - end + @feedback.record_scope = params[:record_scope] + @feedback.record_id = record.id + @feedback.record_title = record.title + end - if current_user.present? - @feedback.firstname = current_user.first_name.presence || "" - @feedback.lastname = current_user.last_name.presence || "" - @feedback.email = current_user.email.presence - end + if current_user.present? + @feedback.firstname = current_user.first_name.presence || "" + @feedback.lastname = current_user.last_name.presence || "" + @feedback.email = current_user.email.presence + end - if turbo_frame_request? - render "show-modal" - else - render :new + if turbo_frame_request? + render "show-modal" + else + render :new + end end end def create - @feedback = Feedback.new(feedback_params) + if ENABLED + @feedback = Feedback.new(feedback_params) - if @feedback.valid? - @feedback.user_id = current_user&.ils_primary_id.presence || "anonymous" + if @feedback.valid? + @feedback.user_id = current_user&.ils_primary_id.presence || "anonymous" - FeedbacksMailer.with(feedback: @feedback.as_json).notify_ub.deliver_later - FeedbacksMailer.with(feedback: @feedback.as_json).notify_user.deliver_later + FeedbacksMailer.with(feedback: @feedback.as_json).notify_ub.deliver_later + FeedbacksMailer.with(feedback: @feedback.as_json).notify_user.deliver_later - if turbo_frame_request? - render "success-modal" - else - flash[:success] = t(".success") - redirect_to root_path - end - else - if turbo_frame_request? - render "show-modal", status: :unprocessable_entity + if turbo_frame_request? + render "success-modal" + else + flash[:success] = t(".success") + redirect_to root_path + end else - render :new, status: :unprocessable_entity + if turbo_frame_request? + render "show-modal", status: :unprocessable_entity + else + render :new, status: :unprocessable_entity + end end end end diff --git a/app/mailers/feedbacks_mailer.rb b/app/mailers/feedbacks_mailer.rb index a464df1a..63a0ac50 100644 --- a/app/mailers/feedbacks_mailer.rb +++ b/app/mailers/feedbacks_mailer.rb @@ -1,12 +1,27 @@ class FeedbacksMailer < ApplicationMailer before_action { @feedback = Feedback.new(params[:feedback]) } + ENABLED = Config[:feedback, :enabled, default: false] + def notify_ub - mail(to: "ortsleihe@ub.uni-paderborn.de", subject: "[UB-Feedback][#{@feedback.type}] ") + if ENABLED + default_ubmail_config = Config[:feedback, :types, :default, :mail, :ub] + feedback_type_config = Config[:feedback, :types, @feedback.type.to_sym, :mail, :ub, default: {}] + + merged_config = default_ubmail_config.merge(feedback_type_config) + + mail(from: merged_config[:from], to: merged_config[:to], subject: merged_config[:subject], template_name: merged_config[:template_name]) + end end def notify_user - mail(to: @feedback.email, subject: "[UB Paderborn] Ihr Feedback") - end + if ENABLED + default_usermail_config = Config[:feedback, :types, :default, :mail, :user] + feedback_type_config = Config[:feedback, :types, @feedback.type.to_sym, :mail, :user, default: {}] + + merged_config = default_usermail_config.merge(feedback_type_config) + mail(from: merged_config[:from], to: @feedback.email, subject: merged_config[:subject], template_name: merged_config[:template_name]) + end + end end diff --git a/app/views/feedbacks_mailer/notify_ub.text.erb b/app/views/feedbacks_mailer/default_ub_mail.text.erb similarity index 100% rename from app/views/feedbacks_mailer/notify_ub.text.erb rename to app/views/feedbacks_mailer/default_ub_mail.text.erb diff --git a/app/views/feedbacks_mailer/notify_user.text.erb b/app/views/feedbacks_mailer/default_user_mail.text.erb similarity index 100% rename from app/views/feedbacks_mailer/notify_user.text.erb rename to app/views/feedbacks_mailer/default_user_mail.text.erb diff --git a/app/views/searches/_record.html.slim b/app/views/searches/_record.html.slim index 486581d0..24ebf5df 100644 --- a/app/views/searches/_record.html.slim +++ b/app/views/searches/_record.html.slim @@ -4,7 +4,7 @@ ruby: enable_fulltext_links = local_assigns.fetch(:enable_fulltext_links) { false } search_scope = local_assigns.fetch(:search_scope) { current_search_scope } enable_notes = local_assigns.fetch(:enable_notes) { false } - enable_feedback = local_assigns.fetch(:enable_feedback) { false } + enable_feedback = local_assigns.fetch(:enable_feedback) { false } && Config[:feedback, :enabled] .d-flex( data-record-scope=search_scope