diff --git a/app/controllers/merge_requests_controller.rb b/app/controllers/merge_requests_controller.rb
index 2bc00ddba..46798d261 100644
--- a/app/controllers/merge_requests_controller.rb
+++ b/app/controllers/merge_requests_controller.rb
@@ -53,6 +53,8 @@ private
end
def next_page_path
+ return merge_request_path if is_referrer_type?("check_answers")
+
case page
when "absorbing_organisation"
merging_organisations_merge_request_path(@merge_request)
@@ -161,4 +163,19 @@ private
render_not_found
end
end
+
+ def is_referrer_type?(referrer_type)
+ from_referrer_query("referrer") == referrer_type
+ end
+
+ def from_referrer_query(query_param)
+ referrer = request.headers["HTTP_REFERER"]
+ return unless referrer
+
+ query_params = URI.parse(referrer).query
+ return unless query_params
+
+ parsed_params = CGI.parse(query_params)
+ parsed_params[query_param]&.first
+ end
end
diff --git a/app/helpers/merge_request_helper.rb b/app/helpers/merge_request_helper.rb
deleted file mode 100644
index 92cc8805d..000000000
--- a/app/helpers/merge_request_helper.rb
+++ /dev/null
@@ -1,5 +0,0 @@
-module MergeRequestHelper
- def ordered_merging_organisations(merge_request)
- merge_request.merge_request_organisations.order(created_at: :desc).map(&:merging_organisation)
- end
-end
diff --git a/app/helpers/merge_requests_helper.rb b/app/helpers/merge_requests_helper.rb
index da5cb2fe7..4975a238f 100644
--- a/app/helpers/merge_requests_helper.rb
+++ b/app/helpers/merge_requests_helper.rb
@@ -13,9 +13,9 @@ module MergeRequestsHelper
def merge_details(merge_request)
[
- { label: "Absorbing organisation", value: display_value_or_placeholder(merge_request.absorbing_organisation_name), action: merge_request.status == "request_merged" ? nil : { text: "Change", href: absorbing_organisation_merge_request_path(merge_request), visually_hidden_text: "absorbing organisation" } },
- { label: "Merging organisations", value: merge_request.merge_request_organisations.any? ? merge_request.merge_request_organisations.map(&:merging_organisation_name).join("
").html_safe : display_value_or_placeholder(nil), action: merge_request.status == "request_merged" ? nil : { text: "Change", href: merging_organisations_merge_request_path(merge_request), visually_hidden_text: "merging organisations" } },
- { label: "Merge date", value: display_value_or_placeholder(merge_request.merge_date), action: merge_request.status == "request_merged" ? nil : { text: "Change", href: merge_date_merge_request_path(merge_request), visually_hidden_text: "merge date" } },
+ { label: "Absorbing organisation", value: display_value_or_placeholder(merge_request.absorbing_organisation_name), action: merge_request.status == "request_merged" ? nil : { text: "Change", href: absorbing_organisation_merge_request_path(merge_request, referrer: "check_answers"), visually_hidden_text: "absorbing organisation" } },
+ { label: "Merging organisations", value: merge_request.merge_request_organisations.any? ? merge_request.merge_request_organisations.map(&:merging_organisation_name).join("
").html_safe : display_value_or_placeholder(nil), action: merge_request.status == "request_merged" ? nil : { text: "Change", href: merging_organisations_merge_request_path(merge_request, referrer: "check_answers"), visually_hidden_text: "merging organisations" } },
+ { label: "Merge date", value: display_value_or_placeholder(merge_request.merge_date), action: merge_request.status == "request_merged" ? nil : { text: "Change", href: merge_date_merge_request_path(merge_request, referrer: "check_answers"), visually_hidden_text: "merge date" } },
]
end
@@ -27,4 +27,20 @@ module MergeRequestsHelper
{ label: "Total stock owners & managing agents after merge", value: merge_request.total_stock_owners.present? || merge_request.total_managing_agents.present? ? "#{merge_request.total_stock_owners} stock owners
#{merge_request.total_managing_agents} managing agents".html_safe : display_value_or_placeholder(nil), action: { text: "View", href: "#", visually_hidden_text: "total stock owners & managing agents after merge" } },
]
end
+
+ def ordered_merging_organisations(merge_request)
+ merge_request.merge_request_organisations.order(created_at: :desc).map(&:merging_organisation)
+ end
+
+ def submit_merge_request_button_text(referrer)
+ if accessed_from_check_answers?(referrer)
+ "Save changes"
+ else
+ "Save and continue"
+ end
+ end
+
+ def accessed_from_check_answers?(referrer)
+ %w[check_answers].include?(referrer)
+ end
end
diff --git a/app/views/merge_requests/merging_organisations.html.erb b/app/views/merge_requests/merging_organisations.html.erb
index bf2c79457..f7dbeb378 100644
--- a/app/views/merge_requests/merging_organisations.html.erb
+++ b/app/views/merge_requests/merging_organisations.html.erb
@@ -38,7 +38,7 @@
<%= form_with model: @merge_request, url: merge_request_path(id: @merge_request.id), method: :patch do |f| %>
<% if @merge_request.merging_organisations.count.positive? %>
<%= f.hidden_field :page, value: "merging_organisations" %>
- <%= f.govuk_submit "Continue" %>
+ <%= f.govuk_submit submit_merge_request_button_text(request.query_parameters["referrer"]) %>
<% end %>
<% end %>