diff --git a/app/controllers/admin/settings_controller.rb b/app/controllers/admin/settings_controller.rb
index d21f6de23..fdbc2b4d5 100644
--- a/app/controllers/admin/settings_controller.rb
+++ b/app/controllers/admin/settings_controller.rb
@@ -23,7 +23,7 @@ class Admin::SettingsController < Admin::BaseController
def update
@setting = Setting.find(params[:id])
@setting.update(settings_params)
- redirect_to request.referer, notice: t("admin.settings.flash.updated")
+ redirect_to request_referer, notice: t("admin.settings.flash.updated")
end
def update_map
@@ -53,4 +53,8 @@ class Admin::SettingsController < Admin::BaseController
params.permit(:jpg, :png, :gif, :pdf, :doc, :docx, :xls, :xlsx, :csv, :zip)
end
+ def request_referer
+ return request.referer + params[:setting][:tab] if params[:setting][:tab]
+ request.referer
+ end
end
diff --git a/app/views/admin/settings/_remote_census_configuration_tab.html.erb b/app/views/admin/settings/_remote_census_configuration_tab.html.erb
index b44ee423b..6a136bd42 100644
--- a/app/views/admin/settings/_remote_census_configuration_tab.html.erb
+++ b/app/views/admin/settings/_remote_census_configuration_tab.html.erb
@@ -1,9 +1,9 @@
<% if feature?(:remote_census) %>
<%= t("admin.settings.index.remote_census.title") %>
- <%= render "settings_table", settings: @remote_census_general_settings, setting_name: "remote_census_general_name" %>
- <%= render "settings_table", settings: @remote_census_request_settings, setting_name: "remote_census_request_name" %>
- <%= render "settings_table", settings: @remote_census_response_settings, setting_name: "remote_census_response_name" %>
+ <%= render "settings_table", settings: @remote_census_general_settings, setting_name: "remote_census_general_name", tab: "#tab-remote-census-configuration" %>
+ <%= render "settings_table", settings: @remote_census_request_settings, setting_name: "remote_census_request_name", tab: "#tab-remote-census-configuration" %>
+ <%= render "settings_table", settings: @remote_census_response_settings, setting_name: "remote_census_response_name", tab: "#tab-remote-census-configuration" %>
<% else %>
<%= t("admin.settings.index.remote_census.how_to_enable") %>
diff --git a/app/views/admin/settings/_settings_form.html.erb b/app/views/admin/settings/_settings_form.html.erb
index b6851669b..83793788b 100644
--- a/app/views/admin/settings/_settings_form.html.erb
+++ b/app/views/admin/settings/_settings_form.html.erb
@@ -1,4 +1,5 @@
<%= form_for(setting, url: admin_setting_path(setting), html: { id: "edit_#{dom_id(setting)}"}) do |f| %>
+ <%= f.hidden_field :tab, value: tab if defined?(tab) %>
<%= f.text_area :value, label: false, id: dom_id(setting), lines: 1 %>
diff --git a/app/views/admin/settings/_settings_table.html.erb b/app/views/admin/settings/_settings_table.html.erb
index 2a3c0a5d9..d46c5237d 100644
--- a/app/views/admin/settings/_settings_table.html.erb
+++ b/app/views/admin/settings/_settings_table.html.erb
@@ -19,7 +19,11 @@
<% if setting.content_type? %>
<%= render "admin/settings/content_types_settings_form", setting: setting %>
<% else %>
- <%= render "admin/settings/settings_form", setting: setting %>
+ <% if defined?(tab) %>
+ <%= render "admin/settings/settings_form", setting: setting, tab: tab %>
+ <% else %>
+ <%= render "admin/settings/settings_form", setting: setting %>
+ <% end %>
<% end %>
diff --git a/spec/features/admin/settings_spec.rb b/spec/features/admin/settings_spec.rb
index 513a2b369..f27b03689 100644
--- a/spec/features/admin/settings_spec.rb
+++ b/spec/features/admin/settings_spec.rb
@@ -162,6 +162,39 @@ describe "Admin settings" do
Setting["feature.remote_census"] = nil
end
+ scenario "Should redirect to #tab-remote-census-configuration after update any remote census setting", :js do
+ setting_remote_census = create(:setting, key: "remote_census.general.any_remote_census_general_setting")
+ Setting["feature.remote_census"] = true
+ admin = create(:administrator).user
+ login_as(admin)
+ visit admin_settings_path
+ find("#remote-census-tab").click
+
+ within("#edit_setting_#{setting_remote_census.id}") do
+ fill_in "setting_#{setting_remote_census.id}", with: "New value"
+ click_button "Update"
+ end
+
+ expect(page).to have_current_path(admin_settings_path)
+ expect(page).to have_css("div#tab-remote-census-configuration.is-active")
+ Setting["feature.remote_census"] = nil
+ end
+
+ scenario "Should not redirect to #tab-remote-census-configuration after do not update any remote census setting", :js do
+ admin = create(:administrator).user
+ login_as(admin)
+ visit admin_settings_path
+
+ within("#edit_setting_#{@setting1.id}") do
+ fill_in "setting_#{@setting1.id}", with: "New value"
+ click_button "Update"
+ end
+
+ expect(page).to have_current_path(admin_settings_path)
+ expect(page).to have_css("div#tab-configuration.is-active")
+ expect(page).not_to have_css("div#tab-remote-census-configuration.is-active")
+ end
+
end
describe "Skip verification" do