diff --git a/app/controllers/form_controller.rb b/app/controllers/form_controller.rb index dbc5ba490..0568369fb 100644 --- a/app/controllers/form_controller.rb +++ b/app/controllers/form_controller.rb @@ -11,6 +11,7 @@ class FormController < ApplicationController mandatory_questions_with_no_response = mandatory_questions_with_no_response(responses_for_page) if mandatory_questions_with_no_response.empty? && @log.update(responses_for_page.merge(updated_by: current_user)) + flash[:notice] = "You have successfully updated #{@page.questions.map(&:check_answer_label).join(', ')}" if interruprion_screen_referrer.present? redirect_to(successful_redirect_path) else mandatory_questions_with_no_response.map do |question| @@ -49,7 +50,7 @@ class FormController < ApplicationController page_id = request.path.split("/")[-1].underscore @page = form.get_page(page_id) @subsection = form.subsection_for_page(@page) - if @page.routed_to?(@log, current_user) + if @page.routed_to?(@log, current_user) || @page.interruption_screen? render "form/page" else redirect_to @log.lettings? ? lettings_log_path(@log) : sales_log_path(@log) @@ -120,6 +121,11 @@ private referrer.present? && CGI.parse(referrer.split("?")[-1]).present? && CGI.parse(referrer.split("?")[-1])["referrer"][0] == "check_answers" end + def interruprion_screen_referrer + referrer = request.headers["HTTP_REFERER"].presence || "" + return CGI.parse(referrer.split("?")[-1])["referrer"][0] if referrer.present? && CGI.parse(referrer.split("?")[-1]).present? + end + def successful_redirect_path if is_referrer_check_answers? next_page_id = form.next_page_id(@page, @log, current_user) @@ -132,6 +138,9 @@ private return send("#{@log.model_name.param_key}_#{form.subsection_for_page(@page).id}_check_answers_path", @log) end end + if interruprion_screen_referrer.present? + return send("#{@log.class.name.underscore}_#{interruprion_screen_referrer}_path", @log) + end redirect_path = form.next_page_redirect_path(@page, @log, current_user) send(redirect_path, @log) end diff --git a/app/models/form/question.rb b/app/models/form/question.rb index 7b04b48f8..0a1f66831 100644 --- a/app/models/form/question.rb +++ b/app/models/form/question.rb @@ -126,8 +126,8 @@ class Form::Question "/#{log.model_name.param_key.dasherize}s/#{log.id}/#{page_id.to_s.dasherize}?referrer=check_answers" end - def interruption_action_href(log, page_id) - "/#{log.model_name.param_key.dasherize}s/#{log.id}/#{page_id.to_s.dasherize}" + def interruption_action_href(log, page_id, current_page_id) + "/#{log.model_name.param_key.dasherize}s/#{log.id}/#{page_id.to_s.dasherize}?referrer=#{current_page_id}" end def unanswered?(log) diff --git a/app/views/form/_interruption_screen_question.html.erb b/app/views/form/_interruption_screen_question.html.erb index 07081c005..7daef4553 100644 --- a/app/views/form/_interruption_screen_question.html.erb +++ b/app/views/form/_interruption_screen_question.html.erb @@ -1,11 +1,12 @@ -<%= govuk_panel( - classes: "app-panel--interruption", -) do %> -
<%= display_title_text(title_text, lettings_log) %>
-<%= display_informative_text(informative_text, lettings_log) %>
-<%= question.header %>
-<%= question.hint_text&.html_safe %>
- +<% if question.page.routed_to?(@log, current_user) %> + <%= govuk_panel( + classes: "app-panel--interruption", + ) do %> +<%= display_title_text(title_text, lettings_log) %>
+<%= display_informative_text(informative_text, lettings_log) %>
+<%= question.header %>
+<%= question.hint_text&.html_safe %>
+ <% end %> <% end %>