Allow redirect to remote census configuration tab

Currently after each update of any Settings is redirected to the first
tab by default.
As this new tab remote_census_configuation has a lot of fields to fill
in it is a bit uncomfortable to have to go back to the tab after each
update.

- Add hidden field :tag to set current tag value
- After update add tag value to request.referer
- To avoid errors when partial call has not param :tag, add the "define?"
  method on hidden_field value.
This commit is contained in:
taitus
2019-04-10 15:00:13 +02:00
committed by Javi Martín
parent 37f20198da
commit ca0979bd45
5 changed files with 47 additions and 5 deletions

View File

@@ -23,7 +23,7 @@ class Admin::SettingsController < Admin::BaseController
def update def update
@setting = Setting.find(params[:id]) @setting = Setting.find(params[:id])
@setting.update(settings_params) @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 end
def update_map def update_map
@@ -53,4 +53,8 @@ class Admin::SettingsController < Admin::BaseController
params.permit(:jpg, :png, :gif, :pdf, :doc, :docx, :xls, :xlsx, :csv, :zip) params.permit(:jpg, :png, :gif, :pdf, :doc, :docx, :xls, :xlsx, :csv, :zip)
end end
def request_referer
return request.referer + params[:setting][:tab] if params[:setting][:tab]
request.referer
end
end end

View File

@@ -1,9 +1,9 @@
<% if feature?(:remote_census) %> <% if feature?(:remote_census) %>
<h2><%= t("admin.settings.index.remote_census.title") %></h2> <h2><%= t("admin.settings.index.remote_census.title") %></h2>
<%= render "settings_table", settings: @remote_census_general_settings, setting_name: "remote_census_general_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" %> <%= 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" %> <%= render "settings_table", settings: @remote_census_response_settings, setting_name: "remote_census_response_name", tab: "#tab-remote-census-configuration" %>
<% else %> <% else %>
<div class="callout primary"> <div class="callout primary">
<%= t("admin.settings.index.remote_census.how_to_enable") %> <%= t("admin.settings.index.remote_census.how_to_enable") %>

View File

@@ -1,4 +1,5 @@
<%= form_for(setting, url: admin_setting_path(setting), html: { id: "edit_#{dom_id(setting)}"}) do |f| %> <%= 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) %>
<div class="small-12 medium-6 large-8 column"> <div class="small-12 medium-6 large-8 column">
<%= f.text_area :value, label: false, id: dom_id(setting), lines: 1 %> <%= f.text_area :value, label: false, id: dom_id(setting), lines: 1 %>
</div> </div>

View File

@@ -18,9 +18,13 @@
<td class="small-6"> <td class="small-6">
<% if setting.content_type? %> <% if setting.content_type? %>
<%= render "admin/settings/content_types_settings_form", setting: setting %> <%= render "admin/settings/content_types_settings_form", setting: setting %>
<% else %>
<% if defined?(tab) %>
<%= render "admin/settings/settings_form", setting: setting, tab: tab %>
<% else %> <% else %>
<%= render "admin/settings/settings_form", setting: setting %> <%= render "admin/settings/settings_form", setting: setting %>
<% end %> <% end %>
<% end %>
</td> </td>
</tr> </tr>
<% end %> <% end %>

View File

@@ -162,6 +162,39 @@ describe "Admin settings" do
Setting["feature.remote_census"] = nil Setting["feature.remote_census"] = nil
end 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 end
describe "Skip verification" do describe "Skip verification" do