From 55a55bea57c4be2d793804fef31f3b7ca9cd4535 Mon Sep 17 00:00:00 2001 From: Louis Kirkham Date: Fri, 16 Feb 2024 07:35:20 +0000 Subject: [PATCH 1/7] Add page params when viewing nominations Adds page params to retain page results when navigating back to the nominations table. --- .../form_answers/list_components/_table_body.html.slim | 6 +++--- app/views/admin/form_answers/show.html.slim | 2 +- app/views/assessor/form_answers/_list_body.html.slim | 4 ++-- app/views/assessor/form_answers/show.html.slim | 2 +- app/views/lieutenant/form_answers/_list_body.html.slim | 6 +++--- app/views/lieutenant/form_answers/show.html.slim | 2 +- 6 files changed, 11 insertions(+), 11 deletions(-) diff --git a/app/views/admin/form_answers/list_components/_table_body.html.slim b/app/views/admin/form_answers/list_components/_table_body.html.slim index 36498ae91..d792ab4f0 100644 --- a/app/views/admin/form_answers/list_components/_table_body.html.slim +++ b/app/views/admin/form_answers/list_components/_table_body.html.slim @@ -5,10 +5,10 @@ td.govuk-table__cell = check_box_tag "check_#{obj.id}", obj.id, false, class: "form-answer-check", aria: { label: "Select nomination #{obj.id} for bulk action" } td.td-title.govuk-table__cell - if obj.company_or_nominee_name.present? - = link_to polymorphic_url([namespace_name, obj], search_id: params[:search_id], year: params[:year]), aria: { label: "View submitted nomination for #{obj.company_or_nominee_name}" }, class: 'govuk-link' do + = link_to polymorphic_url([namespace_name, obj], search_id: params[:search_id], year: params[:year], page: params[:page]), aria: { label: "View submitted nomination for #{obj.company_or_nominee_name}" }, class: 'govuk-link' do = obj.company_or_nominee_name - else - = link_to polymorphic_url([namespace_name, obj], search_id: params[:search_id], year: params[:year]), aria: { label: "View submitted nomination, nominee name not yet specified" }, class: 'govuk-link' do + = link_to polymorphic_url([namespace_name, obj], search_id: params[:search_id], year: params[:year], page: params[:page]), aria: { label: "View submitted nomination, nominee name not yet specified" }, class: 'govuk-link' do em ' Not yet specified td.govuk-table__cell = obj.dashboard_status @@ -35,5 +35,5 @@ = obj.last_updated_by td.govuk-table__cell - aria_label = obj.company_or_nominee_name.present? ? "View submitted nomination, for #{obj.company_or_nominee_name}" : "View submitted nomination, nominee name not yet specified" - = link_to polymorphic_url([namespace_name, obj], search_id: params[:search_id], year: params[:year]), aria: { label: aria_label }, class: 'govuk-link' do + = link_to polymorphic_url([namespace_name, obj], search_id: params[:search_id], year: params[:year], page: params[:page]), aria: { label: aria_label }, class: 'govuk-link' do | View diff --git a/app/views/admin/form_answers/show.html.slim b/app/views/admin/form_answers/show.html.slim index d7f296719..8b5414787 100644 --- a/app/views/admin/form_answers/show.html.slim +++ b/app/views/admin/form_answers/show.html.slim @@ -1,5 +1,5 @@ - content_for :before_main_content do - = link_to "Back to nominations list", admin_form_answers_path(search_id: params[:search_id], year: params[:year]), class: "govuk-back-link" + = link_to "Back to nominations list", admin_form_answers_path(search_id: params[:search_id], year: params[:year], page: params[:page]), class: "govuk-back-link" h1.govuk-heading-xl = resource.nominee_name diff --git a/app/views/assessor/form_answers/_list_body.html.slim b/app/views/assessor/form_answers/_list_body.html.slim index b94448901..d8333275c 100644 --- a/app/views/assessor/form_answers/_list_body.html.slim +++ b/app/views/assessor/form_answers/_list_body.html.slim @@ -2,7 +2,7 @@ tbody.govuk-table__body - FormAnswerDecorator.decorate_collection(@form_answers).each do |obj| tr.govuk-table__row th.govuk-table__header scope="row" - = link_to polymorphic_url([namespace_name, obj], search_id: params[:search_id], year: params[:year]), class: 'govuk-link' do + = link_to polymorphic_url([namespace_name, obj], search_id: params[:search_id], year: params[:year], page: params[:page]), class: 'govuk-link' do - unless obj.nominee_name.nil? span = obj.nominee_name @@ -33,5 +33,5 @@ tbody.govuk-table__body td.govuk-table__cell - aria_label = obj.company_or_nominee_name.present? ? "View submitted nomination, for #{obj.company_or_nominee_name}" : "View submitted nomination, nominee name not yet specified" - = link_to polymorphic_url([namespace_name, obj], search_id: params[:search_id], year: params[:year]), aria: { label: aria_label }, class: 'govuk-link' do + = link_to polymorphic_url([namespace_name, obj], search_id: params[:search_id], year: params[:year], page: params[:page]), aria: { label: aria_label }, class: 'govuk-link' do | View diff --git a/app/views/assessor/form_answers/show.html.slim b/app/views/assessor/form_answers/show.html.slim index 997bbbec1..cff7df50c 100644 --- a/app/views/assessor/form_answers/show.html.slim +++ b/app/views/assessor/form_answers/show.html.slim @@ -1,5 +1,5 @@ -content_for :before_main_content do - = link_to "Back to nominations list", assessor_form_answers_path(search_id: params[:search_id], year: params[:year]), class: "govuk-back-link" + = link_to "Back to nominations list", assessor_form_answers_path(search_id: params[:search_id], year: params[:year], page: params[:page]), class: "govuk-back-link" h1.govuk-heading-xl = @form_answer.nominee_name diff --git a/app/views/lieutenant/form_answers/_list_body.html.slim b/app/views/lieutenant/form_answers/_list_body.html.slim index 60d749ceb..f6738de4f 100644 --- a/app/views/lieutenant/form_answers/_list_body.html.slim +++ b/app/views/lieutenant/form_answers/_list_body.html.slim @@ -2,12 +2,12 @@ tbody.govuk-table__body - FormAnswerDecorator.decorate_collection(@form_answers).each do |obj| tr.govuk-table__row th.govuk-table__header scope="row" - = link_to polymorphic_url([namespace_name, obj], search_id: params[:search_id], year: params[:year]), + = link_to polymorphic_url([namespace_name, obj], search_id: params[:search_id], year: params[:year], page: params[:page]), aria: { label: "View submitted nomination, for #{obj.company_or_nominee_name}" }, class: 'govuk-link' do span = obj.nominee_name - + td.govuk-table__cell = obj.dashboard_status td.govuk-table__cell = obj.document["nominee_address_postcode"] @@ -26,6 +26,6 @@ tbody.govuk-table__body td.govuk-table__cell = link_to "View", - lieutenant_form_answer_path(obj, search_id: params[:search_id], year: params[:year]), + lieutenant_form_answer_path(obj, search_id: params[:search_id], year: params[:year], page: params[:page]), aria: { label: "View submitted nomination, for #{obj.company_or_nominee_name}" }, class: 'govuk-link' diff --git a/app/views/lieutenant/form_answers/show.html.slim b/app/views/lieutenant/form_answers/show.html.slim index b3145d96c..1e630da75 100644 --- a/app/views/lieutenant/form_answers/show.html.slim +++ b/app/views/lieutenant/form_answers/show.html.slim @@ -1,7 +1,7 @@ - title "#{resource.nominee_name} nomination" - content_for :before_main_content do - = link_to "Back to nominations list", lieutenant_form_answers_path(search_id: params[:search_id], year: params[:year]), class: "govuk-back-link" + = link_to "Back to nominations list", lieutenant_form_answers_path(search_id: params[:search_id], year: params[:year], page: params[:page]), class: "govuk-back-link" h1.govuk-heading-xl = resource.nominee_name From 0c77f22c329dbe26f5bca16cd6546c92d506d21f Mon Sep 17 00:00:00 2001 From: Louis Kirkham Date: Fri, 16 Feb 2024 08:51:45 +0000 Subject: [PATCH 2/7] Adds search and page params to user navigation https://app.asana.com/0/1199154381249427/1206580439748049 Permits search params for admin user controller Passess params to admin user paths --- app/controllers/admin/users_controller.rb | 14 +++++++++----- app/views/admin/users/_form.html.slim | 7 +++++-- app/views/admin/users/_list.html.slim | 4 ++-- app/views/admin/users/edit.html.slim | 2 +- app/views/admin/users/index.html.slim | 2 +- app/views/admin/users/new.html.slim | 2 +- 6 files changed, 19 insertions(+), 12 deletions(-) diff --git a/app/controllers/admin/users_controller.rb b/app/controllers/admin/users_controller.rb index e01598011..936a1a317 100644 --- a/app/controllers/admin/users_controller.rb +++ b/app/controllers/admin/users_controller.rb @@ -1,10 +1,10 @@ class Admin::UsersController < Admin::BaseController respond_to :html before_action :find_resource, except: [:index, :new, :create, :deleted, :restore] + before_action :permit_search_params def index params[:search] ||= UserSearch::DEFAULT_SEARCH - params[:search].permit! authorize User, :index? @@ -28,7 +28,7 @@ def create authorize @resource, :create? @resource.save - location = @resource.persisted? ? admin_users_path : nil + location = @resource.persisted? ? admin_users_path(search: params[:search], page: params[:page]) : nil respond_with :admin, @resource, location: location end @@ -41,7 +41,7 @@ def update @resource.update_without_password(resource_params) end - respond_with :admin, @resource, location: admin_users_path + respond_with :admin, @resource, location: admin_users_path(search: params[:search], page: params[:page]) end def resend_confirmation_email @@ -50,7 +50,7 @@ def resend_confirmation_email @resource.send_confirmation_instructions flash[:success] = "Confirmation instructions were successfully sent to #{@resource.decorate.full_name} (#{@resource.email})" respond_with :admin, @resource, - location: admin_users_path + location: admin_users_path(search: params[:search], page: params[:page]) end def unlock @@ -59,7 +59,7 @@ def unlock @resource.unlock_access! flash[:success] = "User #{@resource.decorate.full_name} (#{@resource.email}) successfully unlocked!" respond_with :admin, @resource, - location: edit_admin_user_path(@resource) + location: edit_admin_user_path(@resource, search: params[:search], page: params[:page]) end def log_in @@ -88,4 +88,8 @@ def resource_params :password_confirmation ) end + + def permit_search_params + params[:search].permit! + end end diff --git a/app/views/admin/users/_form.html.slim b/app/views/admin/users/_form.html.slim index 2ffeca17f..46efdee0a 100644 --- a/app/views/admin/users/_form.html.slim +++ b/app/views/admin/users/_form.html.slim @@ -1,4 +1,7 @@ -= simple_form_for [:admin, resource], html: { class: "qae-form" } do |f| += simple_form_for [:admin, resource], + as: :user, + url: resource.persisted? ? admin_user_path(resource, search: params[:search], page: params[:page]) : admin_users_path(search: params[:search], page: params[:page]), + html: { class: "qae-form" } do |f| = render "fields_user_details", f: f .govuk-button-group @@ -25,5 +28,5 @@ method: :patch = link_to "Cancel", - admin_users_path, + admin_users_path(search: params[:search], page: params[:page]), class: "govuk-button govuk-button--secondary btn-default btn-md" diff --git a/app/views/admin/users/_list.html.slim b/app/views/admin/users/_list.html.slim index 7f9dd82f0..8ba4a4092 100644 --- a/app/views/admin/users/_list.html.slim +++ b/app/views/admin/users/_list.html.slim @@ -26,7 +26,7 @@ div role="region" aria-labelledby="table-list-nominators-caption" tabindex="0" tr.govuk-table__row th.govuk-table__header scope="row" = link_to user.full_name, - edit_admin_user_path(user), + edit_admin_user_path(user, search: params[:search], page: params[:page]), class: "govuk-link", aria: { label: "edit #{ user.full_name }" } td.govuk-table__cell @@ -54,6 +54,6 @@ div role="region" aria-labelledby="table-list-nominators-caption" tabindex="0" ' Not locked td.govuk-table__cell = link_to "Edit user", - edit_admin_user_path(user), + edit_admin_user_path(user, search: params[:search], page: params[:page]), class: "govuk-link", aria: { label: "edit #{ user.full_name }" } diff --git a/app/views/admin/users/edit.html.slim b/app/views/admin/users/edit.html.slim index fa017f4c6..5300a8e27 100644 --- a/app/views/admin/users/edit.html.slim +++ b/app/views/admin/users/edit.html.slim @@ -1,7 +1,7 @@ - title t("admin.users.edit_button.#{controller_name}") - content_for :before_main_content do - = link_to "Back to users list", admin_users_path, class: "govuk-back-link" + = link_to "Back to users list", admin_users_path(search: params[:search], page: params[:page]), class: "govuk-back-link" h1.govuk-heading-xl = t("admin.users.edit_button.#{controller_name}") diff --git a/app/views/admin/users/index.html.slim b/app/views/admin/users/index.html.slim index faa0910b0..2c43e9238 100644 --- a/app/views/admin/users/index.html.slim +++ b/app/views/admin/users/index.html.slim @@ -33,7 +33,7 @@ role: "button", aria: { label: "Show deleted users" } - = link_to public_send("new_admin_#{controller_name.singularize}_path"), class: 'new-user govuk-button pull-right', role: 'button' do + = link_to public_send("new_admin_#{controller_name.singularize}_path", search: params[:search], page: params[:page]), class: 'new-user govuk-button pull-right', role: 'button' do = t("admin.users.new_button.#{controller_name}") .clear diff --git a/app/views/admin/users/new.html.slim b/app/views/admin/users/new.html.slim index 700382380..c9db05bb7 100644 --- a/app/views/admin/users/new.html.slim +++ b/app/views/admin/users/new.html.slim @@ -1,7 +1,7 @@ - title t("admin.users.new_button.#{controller_name}") - content_for :before_main_content do - = link_to "Back to users list", admin_users_path, class: "govuk-back-link" + = link_to "Back to users list", admin_users_path(search: params[:search], page: params[:page]), class: "govuk-back-link" h1.govuk-heading-xl = t("admin.users.new_button.#{controller_name}") From d10730f0cb6b124a70e683726d0393d0f5e06494 Mon Sep 17 00:00:00 2001 From: Louis Kirkham Date: Fri, 16 Feb 2024 09:32:47 +0000 Subject: [PATCH 3/7] Adds search and page params to admin lieutenant paths https://app.asana.com/0/1199154381249427/1206580439748049 --- app/controllers/admin/lieutenants_controller.rb | 16 ++++++++++++---- app/controllers/admin/users_controller.rb | 4 ++-- app/views/admin/lieutenants/_form.html.slim | 12 +++++++++--- app/views/admin/lieutenants/_list.html.slim | 6 +++--- app/views/admin/lieutenants/edit.html.slim | 2 +- app/views/admin/lieutenants/new.html.slim | 2 +- 6 files changed, 28 insertions(+), 14 deletions(-) diff --git a/app/controllers/admin/lieutenants_controller.rb b/app/controllers/admin/lieutenants_controller.rb index bac4af611..42676f254 100644 --- a/app/controllers/admin/lieutenants_controller.rb +++ b/app/controllers/admin/lieutenants_controller.rb @@ -1,4 +1,6 @@ class Admin::LieutenantsController < Admin::UsersController + before_action :permit_search_params, except: [:index] + def index params[:search] ||= LieutenantSearch::DEFAULT_SEARCH params[:search].permit! @@ -30,7 +32,7 @@ def create authorize @resource, :create? @resource.save - location = @resource.persisted? ? admin_lieutenants_path : nil + location = @resource.persisted? ? admin_lieutenants_path(search: params[:search], page: params[:page]) : nil respond_with :admin, @resource, location: location, @@ -48,7 +50,7 @@ def update respond_with :admin, @resource, - location: admin_lieutenants_path, + location: admin_lieutenants_path(search: params[:search], page: params[:page]), notice: "User has been successfully updated." end @@ -60,7 +62,7 @@ def restore respond_with :admin, @resource, - location: admin_lieutenants_path, + location: admin_lieutenants_path(search: params[:search], page: params[:page]), notice: "User has been successfully restored." end @@ -68,7 +70,9 @@ def destroy authorize @resource, :destroy? @resource.soft_delete! - respond_with :admin, @resource, location: admin_lieutenants_path + respond_with :admin, + @resource, + location: admin_lieutenants_path(search: params[:search], page: params[:page]) end private @@ -87,4 +91,8 @@ def resource_params :role, :ceremonial_county_id) end + + def permit_search_params + params[:search].permit! + end end diff --git a/app/controllers/admin/users_controller.rb b/app/controllers/admin/users_controller.rb index 936a1a317..6cd5bd756 100644 --- a/app/controllers/admin/users_controller.rb +++ b/app/controllers/admin/users_controller.rb @@ -1,11 +1,11 @@ class Admin::UsersController < Admin::BaseController respond_to :html before_action :find_resource, except: [:index, :new, :create, :deleted, :restore] - before_action :permit_search_params + before_action :permit_search_params, except: [:index] def index params[:search] ||= UserSearch::DEFAULT_SEARCH - + params[:search].permit! authorize User, :index? @search = UserSearch.new(User.all).search(params[:search]) diff --git a/app/views/admin/lieutenants/_form.html.slim b/app/views/admin/lieutenants/_form.html.slim index 948a17bb7..e7f3234ff 100644 --- a/app/views/admin/lieutenants/_form.html.slim +++ b/app/views/admin/lieutenants/_form.html.slim @@ -1,4 +1,7 @@ -= simple_form_for [:admin, resource], as: :lieutenant, url: resource.persisted? ? admin_lieutenant_path(resource) : admin_lieutenants_path, html: { class: 'qae-form' } do |f| += simple_form_for [:admin, resource], + as: :lieutenant, + url: resource.persisted? ? admin_lieutenant_path(resource, search: params[:search], page: params[:page]) : admin_lieutenants_path(search: params[:search], page: params[:page]), + html: { class: 'qae-form' } do |f| = render "shared/users/user_details", f: f = f.association :ceremonial_county, @@ -19,7 +22,10 @@ = f.submit "#{f.object.persisted? ? 'Update' : 'Add'} user", class: 'govuk-button' = link_to "Cancel", - admin_lieutenants_path, + admin_lieutenants_path(search: params[:search], page: params[:page]), class: 'govuk-button govuk-button--secondary' - if action_name == "edit" && policy(resource).destroy? - = link_to 'Delete user', admin_lieutenant_path(resource), data: { method: :delete, confirm: 'Are you sure you want to delete this user?' }, class: 'govuk-button govuk-button--warning' + = link_to 'Delete user', + admin_lieutenant_path(resource, search: params[:search], page: params[:page]), + data: { method: :delete, confirm: 'Are you sure you want to delete this user?' }, + class: 'govuk-button govuk-button--warning' diff --git a/app/views/admin/lieutenants/_list.html.slim b/app/views/admin/lieutenants/_list.html.slim index 0e511c5a3..a203d0425 100644 --- a/app/views/admin/lieutenants/_list.html.slim +++ b/app/views/admin/lieutenants/_list.html.slim @@ -41,7 +41,7 @@ div role="region" aria-labelledby="table-list-lieutenancy-office-caption" tabind - else th.govuk-table__header scope="row" = link_to lieutenant.full_name, - edit_admin_lieutenant_path(lieutenant), + edit_admin_lieutenant_path(lieutenant, search: params[:search], page: params[:page]), class: "govuk-link", aria: { label: "edit-#{ lieutenant.first_name.downcase }-#{ lieutenant.last_name.downcase }" } td.govuk-table__cell @@ -71,13 +71,13 @@ div role="region" aria-labelledby="table-list-lieutenancy-office-caption" tabind ' Not locked td.govuk-table__cell - if action_name == "deleted" - = link_to "Restore user", restore_admin_lieutenant_path(lieutenant), + = link_to "Restore user", restore_admin_lieutenant_path(lieutenant, search: params[:search], page: params[:page]), class: "govuk-link", id: "restore-#{ lieutenant.first_name.downcase }-#{ lieutenant.last_name.downcase }", method: :post, aria: { label: "restore-#{ lieutenant.first_name.downcase }-#{ lieutenant.last_name.downcase }" } - else - = link_to "Edit user", edit_admin_lieutenant_path(lieutenant), + = link_to "Edit user", edit_admin_lieutenant_path(lieutenant, search: params[:search], page: params[:page]), class: "govuk-link", id: "edit-#{ lieutenant.first_name.downcase }-#{ lieutenant.last_name.downcase }", aria: { label: "edit-#{ lieutenant.first_name.downcase }-#{ lieutenant.last_name.downcase }" } diff --git a/app/views/admin/lieutenants/edit.html.slim b/app/views/admin/lieutenants/edit.html.slim index fa017f4c6..b2de7c093 100644 --- a/app/views/admin/lieutenants/edit.html.slim +++ b/app/views/admin/lieutenants/edit.html.slim @@ -1,7 +1,7 @@ - title t("admin.users.edit_button.#{controller_name}") - content_for :before_main_content do - = link_to "Back to users list", admin_users_path, class: "govuk-back-link" + = link_to "Back to lieutenants list", admin_lieutenants_path(search: params[:search], page: params[:page]), class: "govuk-back-link" h1.govuk-heading-xl = t("admin.users.edit_button.#{controller_name}") diff --git a/app/views/admin/lieutenants/new.html.slim b/app/views/admin/lieutenants/new.html.slim index 6ba31bd4b..b2b25a94b 100644 --- a/app/views/admin/lieutenants/new.html.slim +++ b/app/views/admin/lieutenants/new.html.slim @@ -1,7 +1,7 @@ - title t("admin.users.edit_button.#{controller_name}") - content_for :before_main_content do - = link_to "Back to users list", admin_users_path, class: "govuk-back-link" + = link_to "Back to lieutenants list", admin_lieutenants_path(search: params[:search], page: params[:page]), class: "govuk-back-link" h1.govuk-heading-xl = t("admin.users.new_button.#{controller_name}") From deed8866b86be1b0a43db0681d9ebf1bdfa1942a Mon Sep 17 00:00:00 2001 From: Louis Kirkham Date: Fri, 16 Feb 2024 09:41:17 +0000 Subject: [PATCH 4/7] Pass search params in admin group leader paths --- app/controllers/admin/group_leaders_controller.rb | 12 ++++++++++-- app/views/admin/group_leaders/_form.html.slim | 12 +++++++++--- app/views/admin/group_leaders/_list.html.slim | 4 ++-- app/views/admin/group_leaders/edit.html.slim | 4 +++- 4 files changed, 24 insertions(+), 8 deletions(-) diff --git a/app/controllers/admin/group_leaders_controller.rb b/app/controllers/admin/group_leaders_controller.rb index dbd9765b0..4e84dd8a6 100644 --- a/app/controllers/admin/group_leaders_controller.rb +++ b/app/controllers/admin/group_leaders_controller.rb @@ -1,4 +1,6 @@ class Admin::GroupLeadersController < Admin::UsersController + before_action :permit_search_params, except: [:index] + def index params[:search] ||= GroupLeaderSearch::DEFAULT_SEARCH params[:search].permit! @@ -20,7 +22,7 @@ def update respond_with :admin, @resource, - location: admin_group_leaders_path, + location: admin_group_leaders_path(search: params[:search], page: params[:page]), notice: "User has been successfully updated." end @@ -28,7 +30,9 @@ def destroy authorize @resource, :destroy? @resource.soft_delete! - respond_with :admin, @resource, location: admin_group_leaders_path + respond_with :admin, + @resource, + location: admin_group_leaders_path(search: params[:search], page: params[:page]) end private @@ -45,4 +49,8 @@ def resource_params :first_name, :last_name) end + + def permit_search_params + params[:search].permit! + end end diff --git a/app/views/admin/group_leaders/_form.html.slim b/app/views/admin/group_leaders/_form.html.slim index f24d3787c..40a4d8b7c 100644 --- a/app/views/admin/group_leaders/_form.html.slim +++ b/app/views/admin/group_leaders/_form.html.slim @@ -1,4 +1,7 @@ -= simple_form_for [:admin, resource], as: :group_leader, url: admin_group_leader_path(resource), html: { class: 'qae-form' } do |f| += simple_form_for [:admin, resource], + as: :group_leader, + url: admin_group_leader_path(resource, search: params[:search], page: params[:page]), + html: { class: 'qae-form' } do |f| = render "shared/users/user_details", f: f - if f.object.persisted? @@ -9,8 +12,11 @@ = f.submit "#{f.object.persisted? ? 'Update' : 'Add'} user", class: 'govuk-button' = link_to "Cancel", - admin_group_leaders_path, + admin_group_leaders_path(search: params[:search], page: params[:page]), class: 'govuk-button govuk-button--secondary' - if action_name == "edit" && policy(resource).destroy? - = link_to 'Delete', admin_group_leader_path(resource), data: { method: :delete, confirm: 'Are you sure you want to delete this user?' }, class: 'govuk-button govuk-button--warning' + = link_to 'Delete', + admin_group_leader_path(resource, search: params[:search], page: params[:page]), + data: { method: :delete, confirm: 'Are you sure you want to delete this user?' }, + class: 'govuk-button govuk-button--warning' diff --git a/app/views/admin/group_leaders/_list.html.slim b/app/views/admin/group_leaders/_list.html.slim index 62509f1e9..25b53b98a 100644 --- a/app/views/admin/group_leaders/_list.html.slim +++ b/app/views/admin/group_leaders/_list.html.slim @@ -26,7 +26,7 @@ div role="region" aria-labelledby="table-list-group-leaders-caption" tabindex="0 tr.govuk-table__row th.govuk-table__header scope="row" = link_to group_leader.full_name, - edit_admin_group_leader_path(group_leader), + edit_admin_group_leader_path(group_leader, search: params[:search], page: params[:page]), class: "govuk-link", aria: { label: "Edit #{ group_leader.first_name.downcase } #{ group_leader.last_name.downcase }" } td.govuk-table__cell @@ -52,7 +52,7 @@ div role="region" aria-labelledby="table-list-group-leaders-caption" tabindex="0 ' Not locked td.govuk-table__cell = link_to "Edit user", - edit_admin_group_leader_path(group_leader), + edit_admin_group_leader_path(group_leader, search: params[:search], page: params[:page]), class: "govuk-link", id: "edit-#{ group_leader.first_name.downcase }-#{ group_leader.last_name.downcase }", aria: { label: "Edit #{ group_leader.first_name.downcase } #{ group_leader.last_name.downcase }" } diff --git a/app/views/admin/group_leaders/edit.html.slim b/app/views/admin/group_leaders/edit.html.slim index fa017f4c6..a8d074dce 100644 --- a/app/views/admin/group_leaders/edit.html.slim +++ b/app/views/admin/group_leaders/edit.html.slim @@ -1,7 +1,9 @@ - title t("admin.users.edit_button.#{controller_name}") - content_for :before_main_content do - = link_to "Back to users list", admin_users_path, class: "govuk-back-link" + = link_to "Back to group leaders list", + admin_group_leaders_path(search: params[:search], page: params[:page]), + class: "govuk-back-link" h1.govuk-heading-xl = t("admin.users.edit_button.#{controller_name}") From fa7e8e495491db934b80307ca8810eaaa03770b5 Mon Sep 17 00:00:00 2001 From: Louis Kirkham Date: Fri, 16 Feb 2024 09:51:14 +0000 Subject: [PATCH 5/7] Pass search params to admin assessor paths --- app/controllers/admin/assessors_controller.rb | 17 ++++++++++++++--- app/views/admin/assessors/_form.html.slim | 13 +++++++++---- app/views/admin/assessors/_list.html.slim | 4 ++-- app/views/admin/assessors/edit.html.slim | 4 +++- app/views/admin/assessors/new.html.slim | 4 +++- app/views/admin/group_leaders/edit.html.slim | 2 +- app/views/admin/lieutenants/edit.html.slim | 2 +- app/views/admin/lieutenants/new.html.slim | 2 +- 8 files changed, 34 insertions(+), 14 deletions(-) diff --git a/app/controllers/admin/assessors_controller.rb b/app/controllers/admin/assessors_controller.rb index 0d5de6920..11d4d6d3c 100644 --- a/app/controllers/admin/assessors_controller.rb +++ b/app/controllers/admin/assessors_controller.rb @@ -1,4 +1,6 @@ class Admin::AssessorsController < Admin::UsersController + before_action :permit_search_params, except: [:index] + def index params[:search] ||= AssessorSearch::DEFAULT_SEARCH params[:search].permit! @@ -21,7 +23,7 @@ def create authorize @resource, :create? @resource.save - location = @resource.persisted? ? admin_assessors_path : nil + location = @resource.persisted? ? admin_assessors_path(search: params[:search], page: params[:page]) : nil respond_with :admin, @resource, location: location, notice: "User has been successfully added." end @@ -34,14 +36,19 @@ def update @resource.update_without_password(resource_params) end - respond_with :admin, @resource, location: admin_assessors_path, notice: "User has been updated." + respond_with :admin, + @resource, + location: admin_assessors_path(search: params[:search], page: params[:page]), + notice: "User has been updated." end def destroy authorize @resource, :destroy? @resource.soft_delete! - respond_with :admin, @resource, location: admin_assessors_path + respond_with :admin, + @resource, + location: admin_assessors_path(search: params[:search], page: params[:page]) end private @@ -59,4 +66,8 @@ def resource_params :first_name, :last_name) end + + def permit_search_params + params[:search].permit! + end end diff --git a/app/views/admin/assessors/_form.html.slim b/app/views/admin/assessors/_form.html.slim index c2df659f2..61f4f426a 100644 --- a/app/views/admin/assessors/_form.html.slim +++ b/app/views/admin/assessors/_form.html.slim @@ -1,4 +1,7 @@ -= simple_form_for [:admin, resource], as: :assessor, url: resource.persisted? ? admin_assessor_path(resource) : admin_assessors_path, html: { class: 'qae-form' } do |f| += simple_form_for [:admin, resource], + as: :assessor, + url: resource.persisted? ? admin_assessor_path(resource, search: params[:search], page: params[:page]) : admin_assessors_path(search: params[:search], page: params[:page]), + html: { class: 'qae-form' } do |f| = render "shared/users/user_details", f: f = f.input :sub_group, @@ -10,11 +13,13 @@ - if f.object.persisted? = render "shared/users/password_change", f: f - .govuk-button-group class="govuk-!-margin-top-7 govuk-!-margin-bottom-9" = f.submit "#{f.object.persisted? ? 'Update' : 'Add'} user", class: 'govuk-button' = link_to "Cancel", - admin_assessors_path, + admin_assessors_path(search: params[:search], page: params[:page]), class: 'govuk-button govuk-button--secondary' - if action_name == "edit" && policy(resource).destroy? - = link_to 'Delete', admin_assessor_path(resource), data: { method: :delete, confirm: 'Are you sure you want to delete this user?' }, class: 'govuk-button govuk-button--warning' + = link_to 'Delete', + admin_assessor_path(resource, search: params[:search], page: params[:page]), + data: { method: :delete, confirm: 'Are you sure you want to delete this user?' }, + class: 'govuk-button govuk-button--warning' diff --git a/app/views/admin/assessors/_list.html.slim b/app/views/admin/assessors/_list.html.slim index f23874a26..28904cdf0 100644 --- a/app/views/admin/assessors/_list.html.slim +++ b/app/views/admin/assessors/_list.html.slim @@ -28,7 +28,7 @@ div role="region" aria-labelledby="table-list-national-assessors-caption" tabind tr.govuk-table__row th.govuk-table__header scope="row" = link_to assessor.full_name, - edit_admin_assessor_path(assessor), + edit_admin_assessor_path(assessor, search: params[:search], page: params[:page]), class: "govuk-link", aria: { label: "edit #{ assessor.full_name }"} td.govuk-table__cell = assessor.sub_group&.text @@ -55,7 +55,7 @@ div role="region" aria-labelledby="table-list-national-assessors-caption" tabind ' Not locked td.govuk-table__cell = link_to "Edit user", - edit_admin_assessor_path(assessor), + edit_admin_assessor_path(assessor, search: params[:search], page: params[:page]), class: "govuk-link", id: "edit #{ assessor.first_name.downcase } #{ assessor.last_name.downcase }", aria: { label: "edit #{ assessor.full_name }"} diff --git a/app/views/admin/assessors/edit.html.slim b/app/views/admin/assessors/edit.html.slim index fa017f4c6..0ad535f1b 100644 --- a/app/views/admin/assessors/edit.html.slim +++ b/app/views/admin/assessors/edit.html.slim @@ -1,7 +1,9 @@ - title t("admin.users.edit_button.#{controller_name}") - content_for :before_main_content do - = link_to "Back to users list", admin_users_path, class: "govuk-back-link" + = link_to "Back to users list", + admin_assessors_path(search: params[:search], page: params[:page]), + class: "govuk-back-link" h1.govuk-heading-xl = t("admin.users.edit_button.#{controller_name}") diff --git a/app/views/admin/assessors/new.html.slim b/app/views/admin/assessors/new.html.slim index 700382380..c1899bbf2 100644 --- a/app/views/admin/assessors/new.html.slim +++ b/app/views/admin/assessors/new.html.slim @@ -1,7 +1,9 @@ - title t("admin.users.new_button.#{controller_name}") - content_for :before_main_content do - = link_to "Back to users list", admin_users_path, class: "govuk-back-link" + = link_to "Back to users list", + admin_assessors_path(search: params[:search], page: params[:page]), + class: "govuk-back-link" h1.govuk-heading-xl = t("admin.users.new_button.#{controller_name}") diff --git a/app/views/admin/group_leaders/edit.html.slim b/app/views/admin/group_leaders/edit.html.slim index a8d074dce..dc1cdea2c 100644 --- a/app/views/admin/group_leaders/edit.html.slim +++ b/app/views/admin/group_leaders/edit.html.slim @@ -1,7 +1,7 @@ - title t("admin.users.edit_button.#{controller_name}") - content_for :before_main_content do - = link_to "Back to group leaders list", + = link_to "Back to users list", admin_group_leaders_path(search: params[:search], page: params[:page]), class: "govuk-back-link" diff --git a/app/views/admin/lieutenants/edit.html.slim b/app/views/admin/lieutenants/edit.html.slim index b2de7c093..a57f3d8c1 100644 --- a/app/views/admin/lieutenants/edit.html.slim +++ b/app/views/admin/lieutenants/edit.html.slim @@ -1,7 +1,7 @@ - title t("admin.users.edit_button.#{controller_name}") - content_for :before_main_content do - = link_to "Back to lieutenants list", admin_lieutenants_path(search: params[:search], page: params[:page]), class: "govuk-back-link" + = link_to "Back to users list", admin_lieutenants_path(search: params[:search], page: params[:page]), class: "govuk-back-link" h1.govuk-heading-xl = t("admin.users.edit_button.#{controller_name}") diff --git a/app/views/admin/lieutenants/new.html.slim b/app/views/admin/lieutenants/new.html.slim index b2b25a94b..dab23c28e 100644 --- a/app/views/admin/lieutenants/new.html.slim +++ b/app/views/admin/lieutenants/new.html.slim @@ -1,7 +1,7 @@ - title t("admin.users.edit_button.#{controller_name}") - content_for :before_main_content do - = link_to "Back to lieutenants list", admin_lieutenants_path(search: params[:search], page: params[:page]), class: "govuk-back-link" + = link_to "Back to users list", admin_lieutenants_path(search: params[:search], page: params[:page]), class: "govuk-back-link" h1.govuk-heading-xl = t("admin.users.new_button.#{controller_name}") From fe1b96482554e251d8d9b0691e470347364239c4 Mon Sep 17 00:00:00 2001 From: Louis Kirkham Date: Fri, 16 Feb 2024 10:02:20 +0000 Subject: [PATCH 6/7] Pass search params to admin admins paths --- app/controllers/admin/admins_controller.rb | 16 +++++++++++++--- app/views/admin/admins/_form.html.slim | 14 +++++++++++--- app/views/admin/admins/_list.html.slim | 4 ++-- app/views/admin/admins/edit.html.slim | 9 +++++++++ app/views/admin/admins/new.html.slim | 9 +++++++++ 5 files changed, 44 insertions(+), 8 deletions(-) create mode 100644 app/views/admin/admins/edit.html.slim create mode 100644 app/views/admin/admins/new.html.slim diff --git a/app/controllers/admin/admins_controller.rb b/app/controllers/admin/admins_controller.rb index 439562e52..0014f1418 100644 --- a/app/controllers/admin/admins_controller.rb +++ b/app/controllers/admin/admins_controller.rb @@ -1,5 +1,7 @@ class Admin::AdminsController < Admin::UsersController before_action :find_resource, except: [:index, :new, :create, :login_as_assessor, :login_as_user, :console] + before_action :permit_search_params, except: [:index] + def index params[:search] ||= AdminSearch::DEFAULT_SEARCH params[:search].permit! @@ -21,7 +23,7 @@ def create authorize @resource, :create? @resource.save - location = @resource.persisted? ? admin_admins_path : nil + location = @resource.persisted? ? admin_admins_path(search: params[:search], page: params[:page]) : nil respond_with :admin, @resource, location: location end @@ -34,14 +36,18 @@ def update @resource.update_without_password(resource_params) end - respond_with :admin, @resource, location: admin_admins_path + respond_with :admin, + @resource, + location: admin_admins_path(search: params[:search], page: params[:page]) end def destroy authorize @resource, :destroy? @resource.soft_delete! - respond_with :admin, @resource, location: admin_admins_path + respond_with :admin, + @resource, + location: admin_admins_path(search: params[:search], page: params[:page]) end # NOTE: debug abilities for Admin - BEGIN @@ -80,4 +86,8 @@ def resource_params :first_name, :last_name) end + + def permit_search_params + params[:search].permit! + end end diff --git a/app/views/admin/admins/_form.html.slim b/app/views/admin/admins/_form.html.slim index 0a5be4926..9637833a0 100644 --- a/app/views/admin/admins/_form.html.slim +++ b/app/views/admin/admins/_form.html.slim @@ -1,6 +1,9 @@ .js-admin-strict-password-form -= simple_form_for [:admin, resource], html: { class: 'qae-form' } do |f| += simple_form_for [:admin, resource], + as: :admin, + url: resource.persisted? ? admin_admin_path(resource, search: params[:search], page: params[:page]) : admin_admins_path(search: params[:search], page: params[:page]), + html: { class: 'qae-form' } do |f| = render "shared/users/user_details", f: f @@ -9,6 +12,11 @@ .govuk-button-group class="govuk-!-margin-top-7 govuk-!-margin-bottom-9" = f.button :submit, class: 'govuk-button' - = link_to "Cancel", admin_admins_path, class: 'govuk-button govuk-button--secondary' + = link_to "Cancel", + admin_admins_path(search: params[:search], page: params[:page]), + class: 'govuk-button govuk-button--secondary' - if action_name == "edit" && policy(resource).destroy? - = link_to 'Delete', admin_admin_path(resource), data: { method: :delete, confirm: 'Are you sure you want to delete this user?' }, class: 'govuk-button govuk-button--warning' + = link_to 'Delete', + admin_admin_path(resource, search: params[:search], page: params[:page]), + data: { method: :delete, confirm: 'Are you sure you want to delete this user?' }, + class: 'govuk-button govuk-button--warning' diff --git a/app/views/admin/admins/_list.html.slim b/app/views/admin/admins/_list.html.slim index f16fc5da8..89cef106b 100644 --- a/app/views/admin/admins/_list.html.slim +++ b/app/views/admin/admins/_list.html.slim @@ -24,7 +24,7 @@ div role="region" aria-labelledby="table-list-admin-users-caption" tabindex="0" tr.govuk-table__row th.govuk-table__header scope="row" = link_to admin.full_name, - edit_admin_admin_path(admin), + edit_admin_admin_path(admin, search: params[:search], page: params[:page]), class: "govuk-link", aria: { label: "edit #{ admin.full_name }" } td.govuk-table__cell @@ -43,7 +43,7 @@ div role="region" aria-labelledby="table-list-admin-users-caption" tabindex="0" ' Not confirmed td.govuk-table__cell = link_to "Edit user", - edit_admin_admin_path(admin), + edit_admin_admin_path(admin, search: params[:search], page: params[:page]), class: "govuk-link", id: "edit-#{ admin.first_name.downcase }-#{ admin.last_name.downcase }", aria: { label: "edit #{ admin.full_name }" } diff --git a/app/views/admin/admins/edit.html.slim b/app/views/admin/admins/edit.html.slim new file mode 100644 index 000000000..177f6956f --- /dev/null +++ b/app/views/admin/admins/edit.html.slim @@ -0,0 +1,9 @@ +- title t("admin.users.edit_button.#{controller_name}") + +- content_for :before_main_content do + = link_to "Back to users list", admin_admins_path(search: params[:search], page: params[:page]), class: "govuk-back-link" + +h1.govuk-heading-xl + = t("admin.users.edit_button.#{controller_name}") + += render 'form', resource: @resource diff --git a/app/views/admin/admins/new.html.slim b/app/views/admin/admins/new.html.slim new file mode 100644 index 000000000..5cba2aeee --- /dev/null +++ b/app/views/admin/admins/new.html.slim @@ -0,0 +1,9 @@ +- title t("admin.users.edit_button.#{controller_name}") + +- content_for :before_main_content do + = link_to "Back to users list", admin_admins_path(search: params[:search], page: params[:page]), class: "govuk-back-link" + +h1.govuk-heading-xl + = t("admin.users.new_button.#{controller_name}") + += render 'form', resource: @resource From 6ed0799b83cd0a7f8ddff9b745fd33ed34bb3594 Mon Sep 17 00:00:00 2001 From: Louis Kirkham Date: Fri, 16 Feb 2024 10:17:58 +0000 Subject: [PATCH 7/7] Adds guard for search params --- app/controllers/admin/admins_controller.rb | 2 +- app/controllers/admin/assessors_controller.rb | 2 +- app/controllers/admin/group_leaders_controller.rb | 2 +- app/controllers/admin/lieutenants_controller.rb | 2 +- app/controllers/admin/users_controller.rb | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/app/controllers/admin/admins_controller.rb b/app/controllers/admin/admins_controller.rb index 0014f1418..402a64611 100644 --- a/app/controllers/admin/admins_controller.rb +++ b/app/controllers/admin/admins_controller.rb @@ -88,6 +88,6 @@ def resource_params end def permit_search_params - params[:search].permit! + params[:search].permit! if params[:search].present? end end diff --git a/app/controllers/admin/assessors_controller.rb b/app/controllers/admin/assessors_controller.rb index 11d4d6d3c..004bfd902 100644 --- a/app/controllers/admin/assessors_controller.rb +++ b/app/controllers/admin/assessors_controller.rb @@ -68,6 +68,6 @@ def resource_params end def permit_search_params - params[:search].permit! + params[:search].permit! if params[:search].present? end end diff --git a/app/controllers/admin/group_leaders_controller.rb b/app/controllers/admin/group_leaders_controller.rb index 4e84dd8a6..8dbc034f9 100644 --- a/app/controllers/admin/group_leaders_controller.rb +++ b/app/controllers/admin/group_leaders_controller.rb @@ -51,6 +51,6 @@ def resource_params end def permit_search_params - params[:search].permit! + params[:search].permit! if params[:search].present? end end diff --git a/app/controllers/admin/lieutenants_controller.rb b/app/controllers/admin/lieutenants_controller.rb index 42676f254..7e6bdcb22 100644 --- a/app/controllers/admin/lieutenants_controller.rb +++ b/app/controllers/admin/lieutenants_controller.rb @@ -93,6 +93,6 @@ def resource_params end def permit_search_params - params[:search].permit! + params[:search].permit! if params[:search].present? end end diff --git a/app/controllers/admin/users_controller.rb b/app/controllers/admin/users_controller.rb index 6cd5bd756..aef27c23d 100644 --- a/app/controllers/admin/users_controller.rb +++ b/app/controllers/admin/users_controller.rb @@ -90,6 +90,6 @@ def resource_params end def permit_search_params - params[:search].permit! + params[:search].permit! if params[:search].present? end end